Search

RDBMS Key 종류 (기본키, 후보키, 대체키, 슈퍼키, 외래키)

Created time
2022/04/26 04:44
Modified
2022/11/14 12:58
Tags
rdbms
키(Key)란? : 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 구분할 수 있는 기준이 되는 속성(애트리뷰트)

키(Key)의 종류

예시 릴레이션

후보키(Candidate Key)

후보키는 릴레이션의 속성 중에서 튜플을 유일하게 식별할 수 있는 속성의 부분 집합이다.
기본키로 사용할 수 있는 속성들을 말한다.
하나의 릴레이션에서는 중복된 튜플들이 있을 수 없다.
모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.
후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.

Example)

<학생> 릴레이션에서 학번이나 주민등록번호는 유일성과 최소성을 만족하므로 후보키가 된다.
<수강> 릴레이션에서는 (학번, 과목명)으로 조합해야 유일성과 최소성을 만족하기 때문에 (학번, 과목명)으로 조합된 것이 후보키가 된다.
※ (학번, 과목명)과 같이 2개 이상의 필드를 조합하여 만든 키를 복합키(Comoisite Key)라고 한다.
유일성(Unique) : 하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야한다. 최소성(Minimality) : 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성만으로 구성되어 있어야한다.

기본키(Primary Key)

기본키는 후보키 중에서 선택한 주키(Main Key)이다.
하나의 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.
Null값을 가질 수 없다.
기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.
유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키

Example)

<학생> 릴레이션에서 후보키인 학번이나 주민등록번호 중에서 선택하여 기본키로 설정할 수 있고, <수강> 릴레이션에서는 (학번, 과목명)을 조합해서 기본키로 설정할 수 있다.
학번이 <학생> 릴레이션의 기본키로 정의되면 이미 입력된 학번 '190001'은 다른 튜플의 학번 속성 값으로 입력할 수 없다.

대체키(Alternate Key)

후보키 중에서 선정된 기본키를 제외한 나머지 후보키를 의미한다.
보조키라고도 부른다.

Example)

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

슈퍼키(Super Key)

슈퍼키는 하나의 릴레이션 내에 있는 속성의 집합으로 구성된 키이다.
릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 가진 속성의 집합은 없다.
슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성을 만족시키지만, 최소성은 만족시키지 못한다.

Example)

<학생> 릴레이션에서는 학번, 주민등록번호, (학번, 주민등록번호), (학번, 주민등록번호, 이름) 등이 슈퍼키이다.
유일성 O, 최소성 X : (학번 + 주민번호)로 슈퍼키를 만들면 튜플을 구분할 수 있는 유일성은 만족하지만, (학번)이나 (주민번호)만 가지고도 튜플을 구분할 수 있으므로 최소성은 만족하지 않는다.

외래키(Foregin Key)

다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미한다.
외래키는 릴레이션 간에 관계를 표현하는데 사용하는 키이다.
참조 릴레이션의 기본키와 동일한 키 속성을 가진다.
관계를 가진 (릴레이션 R1, 릴레이션 R2)에서 R1이 R2의 기본키를 참조하는 속성을 R1의 외래키라고 한다.

Example)

<수강> 릴레이션의 학번은 <학생> 릴레이션의 기본키인 학번을 참조하고 있으므로 <수강> 릴레이션에서 학번은 외래키가 된다.
<수강> 릴레이션의 학번 속성에는 <학생> 릴레이션의 학번 속성에 없는 값을 입력할 수 없다.
<학생> 릴레이션과 <수강> 릴레이션은 학번을 기준으로 관계가 설정된 것이다.