이 글의 정보들은
데이터베이스 개론
과면접을 위한 CS 전공지식 노트
교재를 공부하면서 정리한 내용을 토대로 작성하였습니다.
Key의 종류
-
key
는 테이블 간의 관계를 조금 더 명확하게 하고, 관계 데이터 모델에서 중요한 제약조건을 정의한다.또한 튜플을 처리하는 데 중요한 역할을 하므로 키의 개념을 정확히 이해할 필요가 있다.
-
관계 데이터 모델에서는 키를 다음과 같이
슈퍼키
,후보키
,기본키
,대체키
,외래키
의 다섯 가지로 분류할 수 있다.
슈퍼키
슈퍼키
는 유일성의 특성을 만족하는 속성 또는 속성들의 집합이다.유일성
은 키가 갖추어야 하는 기본 특성으로, 키 값이 같은 튜플은 존재할 수 없다.
-
예를 들어 [그림 5-2]의 고객 릴레이션에서
고객아이디
속성은 모든 고객 튜플마다 값이 다르고 이를 통해 다른 튜플과 유일하게 구별할 수 있으므로 슈퍼키가 될 수 있다. -
그러나 다른 속성(나이, 등급, 직업, 적립금)은 값이 같은 고객이 있을 수 있으므로 유일성을 만족시키지 못해 슈퍼키가 될 수 없다.
-
고객 아이디
속성만으로도 모든 튜플을 구별할 수 있기 때문에 고객 아이디를 포함하는 속성 집합은 모두 슈퍼키가 될 수 있다.
후보키
-
후보키
는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다.최소성
은 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성이다. 그러므로 하나의 속성으로 구성된 키는 당연히 최소성을 만족한다. -
슈퍼키 중에서 최소성을 만족하는 것이 후보키가 된다. [그림 5-2]의
고객아이디
속성은 단독으로 고객 튜플을 유일하게 구별할 수 있으므로 후보키가 될 수 있다. -
후보키를 만족하기 위해서는 새로운 튜플이 삽입되거나 기존 튜플의 속성 값이 바뀌어도 유지되어야 한다.
기본키
-
여러 후보키 중에서 기본적으로 사용할 키를 반드시 선택해야 하는데 이것이
기본키
다. -
후보키가 1개일 경우에는 해당 후보키가 기본키로 선택하고, 후보키가 여러개일 경우에는 데이터베이스 사용 환경을 고려해서 적합한 것을 기본키로 선택하면 된다.
-
선택한 기본키는 [그림 5-6]과 같이 속성 이름에 밑줄을 그어 표헌한다.
-
기본키를 선택할 때 고려하면 도움이 되는 기준 몇 가지를 정리했다.
-
널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
-
값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
-
단순한 후보키를 기본키로 선택한다.
기본키 선정 과정
은 대학에서 학생회장을 선발하는 과정과 유사하다. 대학에 다니는 학생들(슈퍼키) 중에서 학생회장이 될 만한 자격을 갖춘 후보 학생(후보키)을 추천한 다음, 지지를 가장 많이 받은 한 명의 학생(기본키)을 학생회장으로 임명하는 과정으로 이해하면 된다.
대체키
대채키
는 기본키로 선택되지 못한 후보키들이다.
-
[그림 5-8]은 하나의 릴레이션에서 볼 수 있는 슈퍼키, 후보키, 기본키, 대체키의 관계를 그림으로 표현한 것이다.
-
이 외에도 다른 릴레이션과 관계에서 고려할 수 있는 외래키가 있다.
외래키
-
외래키
는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키다. -
다시 말해 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키다.
외래키가 다른 테이블의 대체키를 참조하는 것도 가능하다.
기본키로 선택받지 못했지만 유일성과 최소성을 만족하는 대체키를 참조하더라도 **관련 있는 튜플을 구분할 수 있기 때문**이다.
- 외래키의 개념과 필요성을 파악하기 위해 인터넷 쇼핑몰을 위한 데이터베이스에서 고객 릴레이션과 주문 릴레이션의 관계를 생각해보자.
-
[그림 5-9]에서 고객 릴레이션은 속성이 6개이고,
고객 아이디
속성이 기본키다. 주문 릴레이션은 속성이 6개이고,주문번호
속성이 기본키다. -
여기서 주문 릴레이션의 주문고객 속성이 고객 릴레이션의 기본키인
고객 아이디
속성을 참조하면주문고객
속성을 외래키라고 한다.
- [그림 5-10]와 같이 외래키는 반드시 다른 릴레이션의 기본키를 참조해야 하며 외래키의 도메인은 참조되는 기본키와 같게 정의되어야 한다.