Key의 종류에 대해 이해하기 위해서 최소성과 유일성에 대한 이해가 필요하다.
최소성과 유일성
유일성
- 각각의 튜플은 서로 구분할 수 있어야한다.
- 즉 각각의 튜플은 유일해야한다.
예를 들어 (주민번호, 나이, 거주지, 혈액형) 이라는 튜플이 있다고 하자.
나이, 거주지, 혈액형은 중복될 수 있는 튜플이다. 하지만 주민번호는 모두 다르다. 주민번호처럼 각각의 튜플을 구분할 수 있는 성질을 유일성 이라고 한다.
최소성
- 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성
사원번호(유일성) + 주민등록번호(유일성) = 최소성 : 공간 낭비
학번,주민번호 등으로 유일한 튜플을 구분할 수 있다면 최소한만 사용해야한다.
(주민번호, 이름, 나이)로 구성된 키가 있다. 해당 키는 각 튜플을 구분할 수 있다. 하지만 이름, 나이를 빼고 주민번호만으로도 각 튜플을 유일하게 식별한다.
따라서 이름, 나이를 빼면 해당 키는 최소성을 만족한다.
Key의 종류
- 슈퍼 키 : 유일성을 만족하는 키, {학번 + 이름}
- 복합 키 : 2개 이상의 속성을 사용한 키
- 후보 키 : 유일성과 최소성을 만족하는 키
- 기본 키 : 후보 키에서 선택된 키, NULL 값이 들어갈 수 없다.
- 대체 키 : 후보 키 중에서 기본 키로 선택되지 않은 키
- 외래 키 : 어떤 테이블 간 기본키를 참조하는 속성, 테이블 간의 관계를 나타내기 위해 사용함

슈퍼 키
- 테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상 속성들의 집합
- 슈퍼키는 유일성만 만족하면 슈퍼키가 된다.

- 7조 팀에 팀원은 4명이다. 4명을 구분할 수 있는 것은 학번이나 주민번호다.
- 이름과 나이를 묶어서 하나의 속성으로 만들 수 있다. 이름과 나이를 합쳐 4명을 구분할 수 있으면 슈퍼키가 된다.
- 학번 + 주민번호, 학번 + 주민번호 + 이름 를 합쳐서 슈퍼키를 만들 수 있다. 어떤 속성끼리 묶던 중복값이 안나오고 구별할 수 있으면 된다.
후보키
- 테이블에서 각 행을 유일하게 식별할 수 있는 최소 속성 집합이다.
- 후보키는 기본키가 될 수 있다. 그리고 유일성과 최소성을 동시에 만족해야한다.

- 슈퍼키들 중에서 속성은 최소 갯수로 4명을 구분해야 후보키가 된다.
- 학번 슈퍼키, 주민번호 슈퍼키는 속성이 1개다. 하지만 이름+나이 슈퍼키는 속성이 두개다. 따라서 1개 속성을 가지고 있는 주민번호, 학번 슈퍼키가 최소성을 만족한다.
기본키
- 후보키들 중에서 하나를 선택한 키, 최소성과 유일성을 만족
- 테이블에서 기본키는 오직 1개
- 기본키는 테이블 안에서 유일하게 각 행들을 구분한다.
- 기본키는 NULL, 중복된 값을 가지지 못한다.

대체키
- 후보키가 두개 이상일 경우, 그 중에서 한 개를 기본키로 지정한다. 남은 후보키들은 대체키가 된다.
- 후보키로 학번과 주민번호가 뽑혔다. 그리고 기본키는 학번이 되었다. 학번이 기본키가 되면 주민번호는 대체키가 된다.
- 학번 기본키가 없어지면 주민번호는 없어진 기본키를 대체한다.

외래키
- 참조 될 테이블(A) 먼저 만들어지고 참조하는 테이블(B)에 값이 입력되어야 한다.
- 이때, 참조될 (A)열 값은 참조될 (A)테이블에서 기본키로 설정되어야 한다.
- 외래키는 참조되는 테이블의 기본키와 동일한 키 속성을 가진다.
- 참조되는 부모테이블이 먼저 생성된 뒤 데이터를 넣고, 참조하는 자식 테이블이 다음에 생긴다.
- 부모 테이블 먼저 삭제될 수 없다. 참조 관계에서 부모 테이블이 삭제되면 자식 테이블은 참조할 수 없어 외래키 오류가 발생한다. 따라서 외래키 관계에서 부모테이블을 삭제하기 위해 자식 테이블을 먼저 삭제한다.

- 부모 테이블은 학생 테이블, 자식 테이블은 수강 테이블
- 학생 테이블은 학번이 기본키이자 참조되는 참조키
- 수강 테이블은 학번이 참조하는 키이자 외래키
기본키와 유니크키 차이
기본키
- 값 중복을 허용하지 않는다.
- NULL 값을 허용하지 않는다.
- 테이블에서 한 개만 생성 가능하다.
유니크키
- 값 중복을 허용하지 않는다.
- NULL 값을 허용한다.
- 테이블에서 여러 개 생성 가능하다.
차이점
기본키는 해당 테이블의 식별자 역할을 한다. 그래서 테이블에 하나만 지정할 수 있다. 사람을 식별할 때 유일한 성질을 가진 주민등록번호를 사용하는 이유다.
유니크 키는 유일성을 가지기 위해 설정한다. 따라서 지정이 되면 중복이 되는 것을 제어한다. 예를 들면 회원 이름을 중복으로 설정하지 않는다. 중복되는 이름은 뒤에 숫자를 붙여 최초 한 사람만 기입되도록 한다. 결국 기본키는 유니크 키 성질을 포함한다. 그 중, 설계자가 기본적으로 선택한 키다. 유니크 키는 하나의 테이블에 컬럼마다 지정이 가능하다. 그러나 기본키는 오직 하나만 설정된다.
요약(with gpt)
데이터베이스에서 키의 종류와 그 특성을 이해하기 위해서는 두 가지 중요한 개념인 '유일성'과 '최소성'을 알아야 합니다.
-
유일성(Uniqueness): 키는 각 행을 구별할 수 있어야 하며, 모든 튜플은 유일해야 합니다. 예를 들어, 주민번호는 각 사람을 유일하게 식별할 수 있는 속성입니다.
-
최소성(Minimality): 키는 그 구성 요소 중 필요한 최소한의 속성만을 포함해야 합니다. 예를 들어, 주민번호만으로도 각 사람을 유일하게 식별할 수 있으므로, 주민번호만을 사용하는 것이 최소성을 만족합니다.
데이터베이스에서 사용되는 주요 키의 종류는 다음과 같습니다:
-
슈퍼 키(Super Key): 테이블에서 각 행을 유일하게 식별할 수 있는 하나 이상의 속성 집합입니다. 예를 들어, 학번과 이름을 합친 것도 슈퍼 키가 될 수 있습니다.
-
후보 키(Candidate Key): 유일성과 최소성을 모두 만족하는 키입니다. 예를 들어, 학번 또는 주민번호가 후보 키가 될 수 있습니다.
-
기본 키(Primary Key): 후보 키 중에서 선택된 키로, 각 행을 유일하게 식별합니다. 기본 키는 중복되거나 NULL 값을 가질 수 없습니다.
-
대체 키(Alternate Key): 후보 키 중 기본 키로 선택되지 않은 나머지 키들입니다. 예를 들어, 학번이 기본 키로 선택되면, 주민번호는 대체 키가 됩니다.
-
외래 키(Foreign Key): 다른 테이블의 기본 키를 참조하는 키로, 테이블 간의 관계를 나타내는 데 사용됩니다.
또한, 기본 키와 유니크 키의 차이점은 다음과 같습니다:
-
기본 키(Primary Key): 중복과 NULL 값을 허용하지 않으며, 테이블에서 단 하나만 존재합니다.
-
유니크 키(Unique Key): 중복 값을 허용하지 않지만, NULL 값을 허용하며, 테이블에서 여러 개 존재할 수 있습니다.
기본 키는 테이블의 각 행을 유일하게 식별하는 데 사용되며, 유니크 키는 중복을 방지하는 데 사용됩니다. 기본 키는 유니크 키의 특성을 포함하며, 테이블에서는 오직 하나의 기본 키만 설정됩니다.
참고
https://jjeongil.tistory.com/1234
https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%ED%82%A4KEY-%EC%A2%85%EB%A5%98-%F0%9F%95%B5%EF%B8%8F-%EC%A0%95%EB%A6%AC