유일성과 최소성
- 유일성: 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질을 의미함. (중복X)
- 최소성: 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질.
예를 들어 특정 학교 학생을 구별할 때, 세가지 구별자인 [학번, 이름, 성별]가 있다면 이는 유일성은 만족하지만 최소성은 만족하지 않는다.
이름과 성별을 제외한 학번만으로 학생을 구별할 수 있으며, 학번은 최소성을 만족한다.
키의 종류
1. 슈퍼 키(Super Key)
- 유일성 O, 최소성 X
- 중복된 값이 존재하지 않는다.
- 예를 들어, 유일성을 만족하는 학번을 가진 [학번 + 이름], [성별 + 학번] 등은 슈퍼키가 될 수 있다.
하지만 [이름 + 성별] 은 두 가지가 모두 일치하는 사람이 존재할 수 있기 때문에 유일성 성립이 안된다.
2. 복합 키(Composite Key)
- 유일성 O, 최소성 O
- 2개 이상의 속성(attribute)을 묶어서 기본키로 지정한 것이다.
3. 후보 키(Candidate key)
- 유일성 O, 최소성 O
- 슈퍼키 중에서 최소성을 만족하는 키로, 기본키가 될 수 있는 후보이기 때문에 후보키라고 불린다.
- 예를 들어, [주민등록번호], [학번] 같이 유일성을 만족하면서 최소성도 만족하면 후보키이다.
4. 기본 키(Primary key)
- 유일성 O, 최소성 O
- 후보 키에서 선택된 키로, 레코드를 식별할때 기준이 되는 반드시 필요한 키이다.
- NULL값, 중복값은 들어갈 수 없다.
5. 대체 키(Surrogate / Alternate key)
- 유일성 O, 최소성 O
- 후보 키 중에 기본 키로 선택되지 않은 키이다.
6. 외래 키(Foreign Key)
- 테이블(relation)간의 관계를 나타낼때 사용하며, 다른 테이블의 기본키를 참조해 외래키로 사용한다.
- 데이터 무결성을 위해 외래키를 설정한다.
예를 들어, 왼쪽 테이블의 student_id 값이 변경되면 오른쪽 테이블의 student_id 도 변경되어야 한다.
