SQL은 관계형 데이터베이스 관리 시스템인 RDBMS를 위한 언어입니다.
여기서 관계형이라는 단어에 대해 생각해 봅시다.
어떤 사람들은 관계형이 서로 관계된 여러 테이블을 의미한다고 하는데 그렇지 않습니다.
이 관계형이라는 말은 테이블을 잘 설계하려면 정보를 나타낼 때 여러 테이블 사이의 열들이 서로 어떠한 관계에 있는지를 고려해야 한다는 의미입니다.
적절한 열들을 사용해서 원하는 정보를 쉽게 찾을 수 있도록 정보를 표현하는 것이 쉽지는 않습니다.
테이블에서 필요한 정보가 무엇인가에 따라 다른긴 하지만 테이블을 생성할 때 대략 다음의 과정을 거칩니다.
1. 여러분의 테이블이 나타내는 것이 무엇입니까?
- 여러분이 테이블로 표현하려는 것을 선택합니다.
2. 이 테이블을 어떻게 사용할 것입니까?
- 그 테이블을 사용하여 얻어야 하는 정보들의 리스트를 작성합니다.
3. 어떻게 하면 이 테이블에 가장 쉽게 쿼리를 보낼 수 있을까요?
- 리스트를 이용하여 테이블을 만들 정보들의 조각으로 나눕니다.
그리고 테이블을 만들땐 다음의 2가지 규칙을 지키는 것이 좋다.
1. 원자적 데이터로 구성된 열은 그 열에 같은 타입의 데이터를 여러 개 가질수 없다.
ex) 한 컬럼에 여러개의 값이 들어갈 수 없다.
'흥미'라는 컬럼에 독서, 사진찍기, 운동 등의 데이터가 여러개 들어가면 안된다.
2. 원자적 데이터로 구성된 테이블은 같은 타입의 데이터를 여러 열에 가질 수 없다.
ex) 한 테이블에 같은 타입의 데이터를 가진 컬럼을 여러개 가질 수 없다.
'teacher'라는 테이블에 student 컬럼이 여러개가 있으면 안된다.
2개는 서로 상반되는 의견이지만.. 2가지의 규칙을 어기지 않고 테이블을 만든다면...
초기 설계는 성공한 것으로 보입니다.
지금 자기가 만든 테이블을 드려다 보세요.
위 2개의 규칙을 지키고 있나요?
지키지 않고 있다고요?
그럼 위 3단계의 과정을 거쳐서 만드셨나요?
물론 힘듭니다. 저 역시 예전에 만든 테이블을 보니 저 규칙을 지키지 않고, 위 과정을 제대로 생각 안하고 만든 경우가 많네요..
2. 이 테이블을 어떻게 사용할 것입니까?
- 그 테이블을 사용하여 얻어야 하는 정보들의 리스트를 작성합니다.
3. 어떻게 하면 이 테이블에 가장 쉽게 쿼리를 보낼 수 있을까요?
- 리스트를 이용하여 테이블을 만들 정보들의 조각으로 나눕니다.
그리고 테이블을 만들땐 다음의 2가지 규칙을 지키는 것이 좋다.
1. 원자적 데이터로 구성된 열은 그 열에 같은 타입의 데이터를 여러 개 가질수 없다.
ex) 한 컬럼에 여러개의 값이 들어갈 수 없다.
'흥미'라는 컬럼에 독서, 사진찍기, 운동 등의 데이터가 여러개 들어가면 안된다.
2. 원자적 데이터로 구성된 테이블은 같은 타입의 데이터를 여러 열에 가질 수 없다.
ex) 한 테이블에 같은 타입의 데이터를 가진 컬럼을 여러개 가질 수 없다.
'teacher'라는 테이블에 student 컬럼이 여러개가 있으면 안된다.
2개는 서로 상반되는 의견이지만.. 2가지의 규칙을 어기지 않고 테이블을 만든다면...
초기 설계는 성공한 것으로 보입니다.
지금 자기가 만든 테이블을 드려다 보세요.
위 2개의 규칙을 지키고 있나요?
지키지 않고 있다고요?
그럼 위 3단계의 과정을 거쳐서 만드셨나요?
물론 힘듭니다. 저 역시 예전에 만든 테이블을 보니 저 규칙을 지키지 않고, 위 과정을 제대로 생각 안하고 만든 경우가 많네요..