CS/데이터베이스

데이터베이스 키(key)의 개념 및 종류

안드선생 2021. 11. 9. 15:02
반응형

데이터베이스 키(Key)

데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 다른 튜플들과 구별 할 수 있는 유일한 기준이 되는 속성

 

키(key)의 특징

Key의 특징으로는 다음과 같은 종류가 있다.

이 특징들은 Key의 종류에 따라 만족하는 경우도 있고, 그렇지 않은 경우도 있다.

  • 유일성 : 유일한 값을 가져야 함.
  • 최소성 : 최소한의 값으로 식별할 수 있어야 함.
  • 불변성 : 변하는 값이어선 안 됨.

 

키(Key)의 종류

키의 종류에는 슈퍼키, 후보키, 기본키, 대체키, 외래키가 있다.

다음의 릴레이션을 예시로 종류 별로 알아보도록 하자.

이미지 출처 : https://moonibot.tistory.com/61

슈퍼키

  • 유일성 O , 최소성 X
  • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키. 
  • 유일성을 만족하므로 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
<학생> 릴레이션에서는 학번, 주민등록번호, [학번, 주민등록번호], [학번, 주민등록번호, 이름] 등이 슈퍼키이다.

 

후보키

  • 유일성 O , 최소성 O
  • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
  • 최소성을 만족하므로 최소의 개수로 이루어져야 한다.

<학생> 릴레이션에서는 학번, 주민등록번호가 후보키 이며
<수강> 릴레이션에서는 [학번, 과목명]으로 조합해야 유일성과 최소성을 만족하므로 [학번, 과목명] 이 후보키가 된다.

 

기본키

  • 후보키 선택받은 키
  • 후보키의 성질을 가지므로 유일성최소성을 만족한다
  • NULL 값과 중복된 값을 가질 수 없다.

<학생> 릴레이션에서의 후보키인 학번이나 주민등록번호 중에 하나를 기본키로 설정할 수 있고,
<수강> 릴레이션에서는 [학번, 과목명] 을 기본키로 설정 할 수 있다.

 

대체키

  • 후보키선택받지 못한 키

<학생> 릴레이션에서 학번이 기본키가 된다면 주민등록번호는 대체키가 된다.

 

외래키

  • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
  • 릴레이션 간의 관계를 표현할 때 사용한다
  • 참조 릴레이션의 기본키와 동일한 키 속성을 가진다

<수강> 릴레이션의 학번은 <학생> 릴레이션의 기본키인 학번을 참조하고 있으므로,
<수강> 릴레이션에서 학번은 외래키가 된다.

이로써 <학생> 릴레이션과 <수강> 릴레이션이 학번을 기준으로 관계가 설정된 것이라 할 수 있다.

 

외래키가 필요한 이유?!

외래키의 존재 이유는 데이터 무결성 때문이다.

여기서 무결성이란, 데이터가 항상 정확한 값을 유지하는 성질을 의미한다.
예를 들어 학생 릴레이션의 학번이 변경되었을 때, 수강 릴레이션의 학번 값이 변경되지 않는다면 무결성이 깨지게 된다.

 

마치며..

오늘은 이렇게 데이터베이스의 키에 대해 알아보았습니다.

이외에 전체적인 CS주제들은 https://github.com/HongEunho  https://github.com/MLifeFam/cs_interview 에 정리되어 있습니다.

반응형