키(Key) :
- 특정 투플을 식별할 때 사용하는 속성 혹은 집합.
- 릴레이션은 중복된 투플을 허용하지 않음 => 각각의 투플에 포함된 속성들 중 어느 하나(혹은 하나 이상)은 값이 달라야만 함. 즉 키가 되는 속성(혹은 속성 집합)은 반드시 값이 달라서 투플들을 서로 구별할 수 있어야 함.
- 키는 릴레이션 간의 관계를 맺는 데도 사용됨.
키의 종류
- 슈퍼키
- 후보키
- 기본키
- 대리키
- 대체키
- 외래키
: 투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
(고객 릴레이션 예)
■ 고객 릴레이션은 고객번호와 주민번호를 포함한 모든 속성의 집합이 슈퍼키가 됨
ex) (주민번호), (주민번호, 이름), (주민번호, 이름, 주소), (주민번호, 이름, 핸드폰),
(고객번호), (고객번호, 이름, 주소), (고객번호, 이름, 주민번호, 주소, 핸드폰) 등
: 투플을 유일하게 식별할 수 있는 속성의 최소 집합
(주문 릴레이션 예)
■ 주문 릴레이션의 후보키는 2개의 속성을 합한 (고객번호, 도서번호)가 됨
■ 2개 이상의 속성으로 이루어진 키를 복합키(composite key)라고 함
: 여러 후보키 중 하나를 선정하여 대표로 삼는 키
후보키가 하나뿐이라면 그 후보키를 기본키로 사용하면 되고,
여러 개라면 릴레이션의 특성을 반영하여 하나를 선택하면 됨
기본키 선정 시 고려사항
1) 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야 함.
2) NULL 값은 허용하지 않음
3) 키 값의 변동이 일어나지 않아야 함
4) 최대한 적은 수의 속성을 가진 것이라야 함
5) 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 함
릴레이션 스키마를 표현할 때 기본키는 밑줄을 그어 표시함
: 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때는 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 경우가 있음 이러한 키를 대리키(surrogate key) 혹은 인조키(artificial key)라고 함
: 기본키로 선정되지 않은 후보키
ex) 고객 릴레이션의 경우 고객번호와 주민번호 중 고객번호를 기본키로 정하면 주민번호가 대체키가 됨
: 다른 릴레이션의 기본키를 참조하는 속성을 말함
엔티티에서 자동증가하는 id가 일종의 대리키였군요.
그리고 대리키 부분 표가 투명해서 어두운 배경에서 잘 안보입니다..