Page 13 -
P. 13
1. 기본키를 정의할 때 대부분의 데이터베이스 시스템은 해당 컬럼에 유일 인
덱스를 같이 만든다. 컬럼 두 개 이상에 유일 인덱스를 만들면 데이터베이
스 시스템이 할 일만 더 많아진다.
2. 일반적으로 기본키로 조인을 수행하는데, 기본키가 여러 컬럼으로 구성되
어 있으면 쿼리가 좀 더 복잡하고 느려진다.
하지만 특정한 상황에서는 여러 컬럼을 기본키로 사용하는 것이 마땅하다.
제품과 판매회사를 연결하는 테이블이 있고, 이 테이블은 관련된 테이블의
기본키를 가리키는 ProductID와 VendorID 컬럼으로 구성되어 있다고 하자.
이 테이블에는 특정 판매회사가 해당 제품의 주 공급처인지 부 공급처인지
나타내는 컬럼, 판매회사가 부과하는 제품 가격 컬럼 같은 다른 컬럼도 포함
되어 있을 수 있다.
자동 생성되는 숫자 컬럼을 추가로 만들어서 인위적으로 기본키를 생성할 수
있지만, ProductID와 VendorID 컬럼을 조합해서 기본키로 사용할 수도 있다.
항상 개별 컬럼을 사용해 이 테이블에 연결하므로 추가로 만든 숫자 컬럼을
키로 사용하기보다는 이 두 컬럼으로 구성된 복합 기본키를 정의하는 것이
더 효율적이다. 또 두 컬럼을 합쳐 유일한 값이 되기를 원할 것이므로 추가
컬럼을 사용하지 않고 이 두 컬럼을 복합 기본키로 정의하면 더 좋다. 자세한
복합 기본키의 장점과 예제는 ‘BETTER WAY 8. 제3정규화로도 부족하다
면 더 정규화하자’를 참고한다.
핵심 정리
• 모든 테이블에는 하나 또는 일련의 컬럼으로 구성된 기본키가 있어야 한다.
• 키가 아닌 컬럼에 중복 값이 들어갈까 봐 걱정이 된다면, 해당 컬럼에 유일 인덱스를 정
의해 무결성을 확보할 수 있다.
• 형태가 가능한 간단하고 값을 갱신할 필요가 없는 컬럼을 키로 사용한다.
036
SQL 코딩의 기술(본문)최종.indd 36 2017-11-15 오후 11:27:49