키는 릴레이션에서 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합이다.
키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 튜플들을 서로 구별할 수 있어야 한다.
키는 릴레이션 간의 관계를 맺는 데도 사용된다.
두 개 이상의 속성으로 이루어진 키를 복합키라고 한다.
튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
튜플을 유일하게 식별할 수 있는 속성의 최소 집합
(가장 효율적인 슈퍼키)
후보키 중 대표로 삼는 키
기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때에는 일련번호와 같은 가상의 속성을 만들어 기본키로 삼는다.
기본키를 제외한 나머지 후보키
다른 릴레이션의 기본키를 참조하는 속성
외래키가 성립하기 위해서는 참조하고 참조되는 양쪽 릴레이션의 도메인이 서로 같아야 한다
참조되는 릴레이션의 기본키 값이 변경되면 이 기본키를 참조하는 외래키의 값 역시 변경된다
외래키는 자기 자신의 기본키를 참조할 수도 있다
NULL값과 중복 값 등이 허용된다
외래키가 기본키의 일부가 될 수 있다.
릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다는 조건
NULL값이 될 수 없다
릴레이션 내에 오직 하나의 값만 존재해야 한다
부모 릴레이션 : 참조되는 릴레이션
자식 릴레이션 : 참조하는 릴레이션
(외래키를 보유하는 릴레이션)
자식 릴레이션의 외래키와 부모 릴레이션의 기본키는 도메인이 동일해야 한다
부모 릴레이션에서 튜플을 삭제했을 경우
RESTRICTED
삭제 작업이 거부된다
CASCADE
자식 릴레이션의 관련 튜플도 같이 삭제된다
DEFAULT
자식 릴레이션의 관련 튜플이 미리 설정해둔 값으로 변경된다
NULL
자식 릴레이션의 관련 튜플을 NULL값으로 설정한다
(NULL값이 허가된 경우에 한해서)
부모 릴레이션의 튜플을 수정할 경우 '삭제'와 '삽입'이 연달아 수행된다고 간주하면 된다