더북(TheBook)

BETTER WAY 1 모든 테이블에 기본키가 있는지 확인하자

관계형 모델을 따르려면 데이터베이스 시스템이 한 테이블에 있는 특정 로우와 나머지 로우를 구별할 수 있어야 하므로, 모든 테이블에는 컬럼 한 개 이상으로 구성된 기본키(Primary Key)가 있어야 한다. 기본키는 로우마다 유일해야 하며 널(Null) 값을 가질 수 없다(더 자세한 내용은 ‘BETTER WAY 10. 인덱스를 만들 때는 널을 고려하자’를 참고한다). 기본키가 없으면 데이터를 걸러 낼 때 일치하는 로우가 없거나 딱 한 개인 조건은 보장할 수 없다. 하지만 기본키가 없는 테이블을 만든다고 규칙에 어긋나지는 않는다. 사실 단순히 널이 아니고 로우마다 유일하다고 해서 데이터베이스 엔진이 컬럼 한 개나 일련의 컬럼을 항상 효율적으로 사용할 수 있는 것은 아니다. 따라서 컬럼 한 개 이상을 기본키로 정의해 컬럼을 효율적으로 사용하라고 데이터베이스 엔진에 명시적으로 통보해야 한다. 게다가 기본키가 없는 테이블 간의 관계를 모델링하는 것은 일반적으로 불가능하다.

테이블에 기본키가 없으면 반복적이고 일관성 없는 데이터가 쌓여 쿼리 수행 속도가 느리고, 부정확한 정보를 조회하는 등 모든 종류의 문제를 일으킬 수 있다. 그림 1-1에 있는 주문 테이블을 살펴보자.

▲ 그림 1-1 일관성 없는 데이터

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.