- 각 튜플을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트의 모임
- 특정 튜플을 검색하거나, 다른 튜플들과 연관시킬 수 있도록 사용하는 목적
- 수퍼키
- 특정 튜플을 고유하게 식별하는 하나의 애트리뷰트 or 애트리뷰트의 집합
- 키의 조건이 만족되면서 최소성은 만족되지 않아도 됨
- 후보키
- 각 튜플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임
- 키의 조건와 최소성이 만족되야함
- 복합키
- 두 개 이상의 애트리뷰트로 구성되는 후보 키
- 후보키의 특성을 따름
(신용카드번호), (주민등록번호) 애트리뷰트는 하나만으로 튜플을 고유식별 할 수 있기 때문에 수퍼키, 후보 키 모두 가능
하지만 (신용카드번호, 이름) 과 같은 애트리뷰트는 최소성에 의하여 수퍼키는 될 수 있지만, 후보키는 될 수 없음
왜냐하면 (신용카드번호) 애트리뷰트만 있어도 고유식별을 할 수 있기 때문이다.
그렇다고 후보키가 하나만의 애트리뷰트로 구성되는 것만은 아니다. 위의 릴레이션에서 (학번), (과목번호),(학점)
모두 중복이 되어 키가 될 수 없다 그렇기 때문에 (학번, 과목번호)와 같이 두 개 이상의 애트리뷰트가 있어야 후보키, 즉 복합키가 된다.
-
기본키
-
한 릴레이션에 후보 키가 두 개 이상 있으면 하나를 기본 키로 선정한다.
-
모든 튜플을 고유하게 식별해야하므로, null값이나 중복된 값을 가질 수 없다.
-
기본 키는 자연스러운 키를 선정하는 것이 좋다.
위 신용카드 회사 고객 릴레이션에서 (신용카드번호), (주민등록번호) 가 후보키 였을 때
(신용카드번호) 를 기본키로 선정하는 것이 더 자연스럽다.
-
-
대리키
- 자연스러운 기본 키를 찾을 수 없을 때, 레코드 번호와 같이 릴레이션에 애트리뷰트를 추가한 키
- 기본키를 이용한 수정, 삭제, 외래키 참조에만 효율적이다
- 자연 키를 대체하여 성능을 향상시킨다.
- 중요한 자료를 대체하여 보안상 이득을 얻는다.
-
대체 키
-
기본 키로 선정되지 않는 후보 키
위 신용카드 회사 고객 릴레이션에서 (신용카드번호), (주민등록번호) 중 (신용카드번호)가 기본키가 된다면 (주민등록번호)는 대체 키가 된다.
-
-
외래 키란?
- 어떤 릴레이션의 기본 키를 참조하는 애트리뷰트
- 관계형 데이터베이스에서 릴레이션들 간의 관계를 나타내기 위해 사용
- 외래 키 이름은 대응되는 기본 키와 다른 이름을 가질 수 있음 하지만 참조되는 릴레이션의 기본 키와 동일한 도메인을 가져야 한다.
-
외래 키의 유형
-
다른 릴레이션의 기본 키를 참조하는 외래 키
직원 릴레이션의 외래 키 (소속 부서 번호)는 부서 릴레이션의 기본 키인 (부서 번호)를 참조하고 있다.
-
자체 릴레이션의 기본 키를 참조하는 외래 키
직원 릴레이션의 외래 키 (직속 상관)은 자체 릴레이션의 기본 키인 (직원 번호)를 참조하고 있다.
직속상관이 없는 경우 NULL로 표기
-
기본 키의 구성요소가 되는 외래 키
수강 릴레이션의 기본 키는 두 개의 외래키 (학번, 과목번호)로 이루어짐. 즉 수강 릴레이션의 두 개의 외래키는 수강 릴레이션의 기본 키의 구성요소도 된다.
- 자연 키
- 기본키만을 위한 데이터가 아니라 비즈니스 모델에서 자연스레 나오는 속성으로 기본키를 정하는 것 ex) email, ID 등등
- 인조 키
- 비즈니스 모델과는 달리 키를 위한 데이터 ex) Auto Increment 등등
- 최소성을 만족하지 않고 튜플을 고유식별 할 수 있는 애트리뷰트 or 애트리뷰트 집합
- 최소성을 만족하고 튜플을 고유식별 할 수 있는 애트리뷰트 or 애트리뷰트 집합
- 두 개 이상의 애트리뷰트로 모여진 후보키
- 릴레이션의 후보키 중 하나의 자연스러운 애트리뷰트를 선정하여 튜플을 고유식별 할 수 있는 키
- 릴레이션에 고유식별을 할 수 있는 기본키의 재목이 없을 때 임의적으로 만들어 내는 키(거의 사용X)
- 기본 키가 되지 못한 후보 키
- 릴레이션의 애트리뷰트를 참조하는 키로써 릴레이션 간의 관계를 나타낼 때 사용하는 키
-