본문 바로가기

심오한 세상/db; sql;

SQL은 관계형 데이터베이스에서 사용되는 언어입니다. 그럼 "관계형"의 의미가 무엇일까요?


SQL은 관계형 데이터베이스 관리 시스템인 RDBMS를 위한 언어입니다.

여기서 관계형이라는 단어에 대해 생각해 봅시다.

어떤 사람들은 관계형이 서로 관계된 여러 테이블을 의미한다고 하는데 그렇지 않습니다.

이 관계형이라는 말은 테이블을 잘 설계하려면 정보를 나타낼 때 여러 테이블 사이의 열들이 서로 어떠한 관계에 있는지를 고려해야 한다는 의미입니다.

적절한 열들을 사용해서 원하는 정보를 쉽게 찾을 수 있도록 정보를 표현하는 것이 쉽지는 않습니다.
테이블에서 필요한 정보가 무엇인가에 따라 다른긴 하지만 테이블을 생성할 때 대략 다음의 과정을 거칩니다.

1. 여러분의 테이블이 나타내는 것이 무엇입니까?
     - 여러분이 테이블로 표현하려는 것을 선택합니다.
2. 이 테이블을 어떻게 사용할 것입니까?
     - 그 테이블을 사용하여 얻어야 하는 정보들의 리스트를 작성합니다.
3. 어떻게 하면 이 테이블에 가장 쉽게 쿼리를 보낼 수 있을까요?
     - 리스트를 이용하여 테이블을 만들 정보들의 조각으로 나눕니다.

그리고 테이블을 만들땐 다음의 2가지 규칙을 지키는 것이 좋다.

1. 원자적 데이터로 구성된 열은 그 열에 같은 타입의 데이터를 여러 개 가질수 없다.
ex) 한 컬럼에 여러개의 값이 들어갈 수 없다.
      '흥미'라는 컬럼에 독서, 사진찍기, 운동 등의 데이터가 여러개 들어가면 안된다.

2. 원자적 데이터로 구성된 테이블은 같은 타입의 데이터를 여러 열에 가질 수 없다.
ex) 한 테이블에 같은 타입의 데이터를 가진 컬럼을 여러개 가질 수 없다.
      'teacher'라는 테이블에 student 컬럼이 여러개가 있으면 안된다.

2개는 서로 상반되는 의견이지만.. 2가지의 규칙을 어기지 않고 테이블을 만든다면...
초기 설계는 성공한 것으로 보입니다.
지금 자기가 만든 테이블을 드려다 보세요.
위 2개의 규칙을 지키고 있나요?
지키지 않고 있다고요?
그럼 위 3단계의 과정을 거쳐서 만드셨나요?

물론 힘듭니다. 저 역시 예전에 만든 테이블을 보니 저 규칙을 지키지 않고, 위 과정을 제대로 생각 안하고 만든 경우가 많네요..