티스토리에 저장했던 글을 옮겼습니다.
https://mrcocoball.tistory.com/38?category=1080971
1. 키(Key)의 정의**
(1) 키(Key)의 정의
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 무언가를 식별하는 고유한 식별자(identifier) 기능을 함
(2) 유일성과 희소성
- 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
- 희소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함
- 다만 "최소성 만족 > 슈퍼키 X"는 아님.
슈퍼키는 최소성과 관계없이 튜플을 유일하게 구분할 수 있으면 됨
2. 키(Key)의 종류**
(1) 슈퍼 키(Super Key)
- 테이블에서 각 행을 유일하게 식별할 수 있는 속성들의 집합
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키이며 릴레이션을 구성하는 모든 튜플 중
슈퍼키로 구성된 속성의 집합과 동일한 값은 나타내지 않음
- 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하나 최소성은 만족하지 못함
- 예시
- '등록번호'와 '사업자등록번호'는 유일성을 만족하고 있으나
'대표자명'은 동명이인이 있을 수 있어 유일성 만족 X
슈퍼 키(Super Key)
등록번호, 사업자등록번호, (등록번호, 사업자등록번호), (등록번호, 사업자등록번호, 대표자명)
(2) 후보 키(Candidate Key)
- 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
- 릴레이션을 구성하는 속성들 중 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 후보 키는 기본 키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족해야 함
- 예시
- [광고주] 테이블에서는 등록번호와 사업자등록번호는 유일성과 최소성을 만족하므로 후보키가 됨
- [매체] 테이블에서는 등록번호와 매체명으로 조합해야 유일성과 최소성을 만족하기 때문에 (등록번호, 매체명)이 후보키가 됨
- 2개 이상의 필드를 조합하여 만든 키를
복합 키 (Composite Key)
라고 함
(3) 기본 키(Primary Key)
- 후보 키 중 특별히 선정된 키로, 중복된 값을 가질 수 없음
- 후보 키의 성질을 갖기 때문에 유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키
- NULL 값을 가질 수 없으며 튜플에서 기본 키로 설정된 속성엔 NULL 값이 있어서는 안됨
- 예시
- [광고주] 테이블에서는 후보 키인 등록번호나 사업자등록번호를 선택하여
기본 키로 설정할 수 있음
- [매체] 테이블에서는 (등록번호, 매체명) 을 기본 키로 설정할 수 있음
- [광고주] 테이블의 기본 키로 정의될 경우 이미 입력된 등록번호 '1'은
다른 튜플의 등록번호 속성 값으로 입력할 수 없음
(4) 대체 키(Alternate Key)
- 후보 키 중에서 선정된 기본 키를 제외한 나머지 후보 키를 의미
- [광고주] 테이블에서 등록번호가 기본 키로 설정이 되면 사업자등록번호는 대체 키가 됨
(5) 외래 키(Foreign Key)
- 다른 테이블, 릴레이션의 기본 키를 참조하는 속성 또는 속성들의 집합을 의미
- 테이블, 릴레이션 간의 관계를 표현할 때 사용
- 한 테이블, 릴레이션의 속한 속성 A와 참조 테이블, 릴레이션의 기본 키인 B가 동일한 도메인 상에서 정의되었을 때 속성 A를 외래키라고 함
- 참조 테이블의 기본 키와 동일한 키 속성을 지님
- 예시
- [매체] 테이블에서의 등록번호는 [광고주] 테이블의 기본 키인 등록번호를 참조하고 있어 [매체] 테이블에서의 등록번호는 외래 키가 된다
- [매체] 테이블에서의 등록번호 속성에 [광고주] 테이블의 등록번호 속성에 없는 값을 입력 불가
- [광고주] 테이블과 [매체] 테이블은 등록번호를 기준으로 관계가 설정된 것
- 먼저 참조되는 테이블을 부모 테이블, 참조하는 테이블을 자식 테이블이라 하며
부모 테이블 > 참조 테이블 순으로 생성이 되어야 함
- 부모 테이블을 삭제하기 위해선 자식 테이블을 먼저 삭제하여야 함
레퍼런스
https://jerryjerryjerry.tistory.com/49
https://moonibot.tistory.com/61
https://sharpcoder.tistory.com/116