Page 9 -
P. 9
우’를 읽고 통찰하기 바란다.
이 장에서는 데이터베이스 설계와 관련된 미묘한 내용까지 모두 다루기보다
는 기본 내용만 다룬다. 관계형 모델을 따르는 설계 방법을 좀 더 깊게 알고
싶다면 마이클 헤르난데즈(Michael Hernandez)가 쓴 <Database Design for
Mere Mortals, Third Edition>(Addison-Wesley, 2013) 같은 책을 참
고하자.
BETTER WAY 1 모든 테이블에 기본키가 있는지 확인하자
관계형 모델을 따르려면 데이터베이스 시스템이 한 테이블에 있는 특정 로우
와 나머지 로우를 구별할 수 있어야 하므로, 모든 테이블에는 컬럼 한 개 이
상으로 구성된 기본키(Primary Key)가 있어야 한다. 기본키는 로우마다 유일
해야 하며 널(Null) 값을 가질 수 없다(더 자세한 내용은 ‘BETTER WAY 10.
인덱스를 만들 때는 널을 고려하자’를 참고한다). 기본키가 없으면 데이터를
걸러 낼 때 일치하는 로우가 없거나 딱 한 개인 조건은 보장할 수 없다. 하지
만 기본키가 없는 테이블을 만든다고 규칙에 어긋나지는 않는다. 사실 단순
히 널이 아니고 로우마다 유일하다고 해서 데이터베이스 엔진이 컬럼 한 개
나 일련의 컬럼을 항상 효율적으로 사용할 수 있는 것은 아니다. 따라서 컬럼
한 개 이상을 기본키로 정의해 컬럼을 효율적으로 사용하라고 데이터베이스
엔진에 명시적으로 통보해야 한다. 게다가 기본키가 없는 테이블 간의 관계
를 모델링하는 것은 일반적으로 불가능하다.
테이블에 기본키가 없으면 반복적이고 일관성 없는 데이터가 쌓여 쿼리 수행
속도가 느리고, 부정확한 정보를 조회하는 등 모든 종류의 문제를 일으킬 수
있다. 그림 1-1에 있는 주문 테이블을 살펴보자.
032
SQL 코딩의 기술(본문)최종.indd 32 2017-11-15 오후 11:27:49