본문 바로가기
SQL

[DB] Key 정리

by 다람이도토리 2021. 8. 18.

Key란? 

데이터베이스에서 검색이나 정렬을 수행할 시 tuple을 구분할 수 있는 attribute
(attribute는 '특성' 정도로 이해하면 편하다)

Key의 종류

- 후보키
- 기본키
- 대체키
- 외래키
- 슈퍼키

1) 후보키

후보키는 릴레이션을 구성하는 속성들에서, 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합이다.
모든 릴레이션에는 하나 이상의 후보키가 존재하게 된다. 이 때, 후보키는 다음의 특성을 만족해야 한다.

유일성 : 하나의 키 값으로는 하나의 튜플만을 유일하게 찾아낼 수 있어야 한다.
최소성 : 모든 레코드들을 유일하게 찾아내는데에 꼭 필요한 속성만으로 구성되어야 한다.

Remark. 슈퍼키
슈퍼키는 유일성은 만족되나, 최소성이 만족되지 않는 경우를 뜻한다.

예를 들어, 대학생 데이터를 생각할 때, 학번+주민등록번호 로 슈퍼키를 만들면 유일성은 만족되나 학생들의 구분은 학번 혹은 주민등록번호 하나 만으로도 충분하기 때문에 최소성이 만족되지 않는다.

 

2) 기본키

기본키는 후보키 중에서 선택한 주 키이다. 즉, 기본키를 통해서는 튜플들을 모두 유일하게 구분해내고, 찾아낼 수 있다.
기본키의 중요한 점은 다음과 같다.

- Null값을 가질 수 없다.
- 동일한 값이 중복되어 저장될 수 없다.

 

3) 대체키

대체키는 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 의미한다.
기본키 하나가 없어지면 자동으로 대체키 중 하나가 기본키를 가져가게 된다.

 

4) 외래키

외래키는 릴레이션이 여러개인 경우에 대해서만 고려할 수 있다. 외래키를 고려하는 이유는 여러 릴레이션간의 참조 관계를 표현하기 위함이다.

다시, 대학생 데이터베이스를 생각해보자.

릴레이션 A : 주민등록번호, 학번, 성명, 학과
릴레이션 B : 학번, 평균평점, 장학금 수여 받은 횟수

이러한 릴레이션 두 개가 존재한다고 하고, 릴레이션 A의 기본 키는 주민등록번호, B는 학번이라고 하자.
이 때, 릴레이션 B의 기본키 학번은 릴레이션 A가 참조할 수 있다. 릴레이션 A의 학번이 외래키가 되는 것이다.

'SQL' 카테고리의 다른 글

[DB] 트랜잭션이란?  (0) 2021.08.24
[DB] 인덱스 간단히 개념잡기  (0) 2021.08.23
[SQL] Having 절  (0) 2021.07.05
[SQL] HackerRank - Ollivander's Inventory  (0) 2021.06.08
[SQL] HackerRank - The Report  (0) 2021.06.08