Pokeball - Pokemon

Database

[데이터베이스] 키의 종류 및 특징 - 슈퍼키/후보키/기본키/대체키/외래키

ansi. 2024. 4. 12. 02:27

1. 키(Key)란?

키(Key)란 데이터베이스 테이블에서 각 레코드를 식별하거나 정렬하기 위해 사용되는 하나 이상의 속성(컬럼)의 집합을 말한다.

 

 

2. 키의 종류

슈퍼키(Super Key)

슈퍼키는 한 릴레이션에서 각 튜플을 고유하게 식별할 수 있는 속성 또는 속성의 집합이다.
(유일성 O, 최소성 X)

예시

학생 정보를 저장하는 릴레이션에서 슈퍼키는

{학번}, {주민등록번호}, {학번, 이름}, {주민등록번호+이름} 등이 될 수 있다.

 

후보키(Candidate Key)

후보키는 한 릴레이션에서 각 튜플을 고유하게 식별하는 최소한의 속성들의 집합이다.
(유일성 O, 최소성 O)

예시

학생 정보를 저장하는 릴레이션에서 후보키는

{학번}, {주민등록번호} 가 될 수 있다.

🚨 {학번, 주민등록번호}는 '최소성'을 만족시키지 못하므로 후보키가 될 수 없다!

 

Q. 그렇다면 후보키는 오직 하나의 속성만을 의미하는 건가? 🤔
A. 아니다!

 

💡 후보키도 두 개 이상의 속성들로 이루어질 수 있다.

후보키가 두 개 이상의 속성들로 이루어졌을 경우 '복합키(Composite Key)'라고 부른다.

 

수강 릴레이션

위 릴레이션에서 각 학생은 여러 과목을 수강할 수 있고, 각 과목마다 여러 학생이 수강할 수 있다.

따라서 학번이나 과목번호만 사용해서는 각 튜플을 고유하게 식별할 수 없다.

때문에 두 개의 속성의 집합인 {학번, 과목번호}가 후보키가 된다.

 

🔎 후보키와 슈퍼키의 관계

후보키는 슈퍼키의 하위 개념이다. 즉, 모든 후보키는 슈퍼키이지만, 모든 슈퍼키가 후보키는 아니다.

슈퍼키는 릴레이션 내의 튜플을 유일하게 식별할 수 있는 어떤 속성의 집합을 의미하며, 후보키는 그 중에서 '유일성'과 '최소성'을 만족하는 슈퍼키를 의미한다.

 

기본키(Primary Key, PK)

기본키는 한 릴레이션에서 모든 튜플을 고유하게 식별할 수 있는 속성이다. 릴레이션의 특성에 따라 후보키 중 하나가 기본키로 선정된다.
(유일성 O, 최소성 O)

예시

학생 정보를 저장하는 릴레이션에서 후보키인 {학번}, {주민등록번호} 중 하나가 기본키가 될 수 있다.

 

특징

  • 유일성 : 테이블 내의 모든 행을 유일하게 식별할 수 있어야 한다. 즉, 기본키로 지정된 속성의 값은 중복되어서는 안 된다.
  • 존재성 : 테이블 내에 기본키가 반드시 존재해야 한다.
  • 최소성 : 모든 튜플을 유일하게 식별하는 데 필요한 최소한의 속성으로 구성되어야 한다.
  • NULL 값 허용 불가 : 기본키는 NULL 값을 가질 수 없다. 즉, 유효한 값을 가져야 한다.

 

대체키(Alternate Key)

대체키는 기본키로 선정되지 않은 후보키를 말한다.
(유일성 O, 최소성 O)

예시

만약 학생 정보를 저장하는 릴레이션의 후보키인 {학번}과 {주민등록번호} 중에서

{학번}을 기본키로 선택했을 경우, {주민등록번호}가 대체키에 해당한다.

 

 

 

외래키(Foreign Key, FK)

외래키는 릴레이션 간의 관계를 표현하기 위해 사용되는 키로, 다른 릴레이션의 기본키를 참조하는 속성을 말한다.

예시

 

💡 자신이 속한 릴레이션의 기본키를 참조할 수도 있다.

자체 릴레이션의 기본 키를 참조하는 외래 키

 

3. 키들의 포함 관계