필드들의 일부로 각 레코드들을 유일하게 식별해낼 수 있는 식별자(identifier)
키는 왜 필요한가?
레코드간의 순서가 의미가 없으므로 레코드를 구분하기 위해서는 각 레코드의 값을 이용함
일반적으로 하나의 필드를 지정하여 키로 지정하나,
여러 개의 필드들로 키를 구성할 수도 있음
두개 이상의 필드로 구성된 키를 복합키(composite key)라고 함관계형 데이터 모델에서
특정 레코드를 구별하거나 탐색하기 위한 유일한 방법
두 개 이상의 속성(필드 또는 컬럼)으로 이루어진 키
- 테이블에서 각 행을 유일하게 식별할 수 있는 키
- 여러 개의 속성을 조합하여 유일성을 보장
- 각 개별 속성은 중복될 수 있지만, 조합된 값은 유일해야 함
- 기본키, 후보키, 외래키로도 사용될 수 있음
아무런 제약 조건 없이 레코드들을 식별할 수 있는 필드의 집합
예)
(주민등록번호)(학번)(학번, 주민등록번호)(주민등록번호, 학번) 등
전체 테이블의 속성(필드 또는 컬럼)을 모두 합한 것도 하나의 슈퍼키
최소한의 필드만으로 구성된 키
예)
(학번)(주민등록번호)
후보키 중에서 식별자로 정의한 하나의 키
되도록 하나의 필드로 구성된 후보키를 선정하는 것이 유리함
예)
(학번) 또는 (주민등록번호)
후보키와 기본키 모두 하나의 필드만으로 식별이 가능하다면
복합키가 될 수 없음최소 두 개 이상의 필드만으로 식별이 가능할 때 후보키와 기본키 모두 복합키가 될 수 있음
추가적으로 기본키는
NULL이 될 수 없음
서로 관련이 있는 테이블 사이에서 데이터 일관성을 보장해주는 수단
위의 사진에서 외래키는 학과번호
- 다른 테이블의 기본키 또는 유니크키를 포함하고 있는 경우,
이를 외래키로 지정 가능
자기 자신을 참조하는 경우도 있음
- 외래키로 지정이 되면 키본키 또는 유니크키를 참조하게 됨.
참조되는 테이블에서 기본키를 삭제 또는 변경할 수 없으며,
기본키에 없는 값은 외래키 값으로 입력할 수 없음