반응형

데이터베이스 키(슈퍼 키, 후보 키, 기본 키, 대체 키, 외래 키)

데이터베이스에는 여러 키가 존재한다. 이번 포스팅을 통해서 헷갈리지 않도록 각각의 키가 무엇을 뜻하는지 알아보자.
 

슈퍼 키(Super Key)

아래와 같은 테이블이 있을 때 특정한 튜플(행)을 유일하게 식별하는 하나 또는 여러 개의 속성(attributes)들의 집합을 뜻한다.
예를 들면 ID와 Email은 고유한 값들을 갖고 있는데, 이 값으로 어떤 튜플인지 찾아낼 수 있으므로 슈퍼 키가 될 수 있다.
또한 슈퍼키는 속성들의 집합이기도 하다고 했는데 (ID, Name) 또는 (ID, Major), (ID, Name, Major)와 같은 식으로 ID + Extra 형태도 가능하고 ID뿐만 아니라 Email에 대해서도 가능하다. 이는 고유한 값이 하나 정해져 있다면 꼭 필요하지 않은 속성도 집합에 포함될 수 있다는 것을 의미하고 유일성은 만족하지만 최소성은 만족하지 않는다는 것을 뜻한다.
즉, 가능한 경우를 정리하면 아래와 같다.

  1. ID (+ Extra)
  2. Email (+ Extra)

 

후보 키(Candidate Key)

후보 키는 간단하다. 아까 슈퍼 키에서는 꼭 필요하지 않은 속성도 집합에 포함될 수 있다고 했는데, 슈퍼 키에서 꼭 필요한 키들만 뽑은 것이 후보 키이다.
그렇다면 아래 그림에서 후보키는 무엇이 되겠는가?
바로 ID, Email이다.

 

기본 키(Primary Key) ~ Null이 올 수 없다! / 중복된 값이 올 수 없다.

기본 키는 릴레이션(Table)을 보면 알 수 있다. 속성(attribute)에 밑줄이 그어져 있으면 기본 키이다.
그렇다면 기본 키는 무엇일까?
슈퍼 키 안에서 꼭 필요한 키만 놔둔 것이 후보 키라고 하였다.
그 후보 키에서 메인이 되는 키를 정한 것을 기본 키(primary key)라고 하며 이 값은 절대로 Null이 올 수 없다는 것을 기억하자.
또한 중복된 값이 올 수 없다는 것은 자명하다.
아래 그림에서 기본 키는 밑줄이 그어져 있는 속성인 'ID'이다.

대체 키(Alternate Key)

대체 키는 매우 쉽다. 후보 키 중에서 기본 키가 되지 못한 키를 대체 키라고 한다.
아래 그림에서 후보 키는 ID, Email이 있었고 기본 키는 ID이다.
그렇다면 자연스럽게 대체 키는 Email이라고 할 수 있다.

 

키들의 포함 관계

지금까지 슈퍼 키, 후보 키, 기본 키, 대체 키에 대해서 학습했다. 간단하게 이들의 관계를 아래 그림과 같은 이미지를 머릿 속에 기억하고 정리하자.

 

외래 키(Foriegn Key)

외래 키는 참조되는 릴레이션(table, 표)의 기본 키가 되어 릴레이션 참조 관계를 표현한다는 점으로 인해 관계형 데이터베이스에서 매우 중요한 개념이다.
관계를 맺고 있는 릴레이션 R1, R2가 있다고 가정하자.
먼저, R1의 외래 키가 R2의 기본 키를 가리키고 있을 때를 보자.(다른 릴레이션의 기본 키를 참조하는 외래 키)

EMPLOYEE 릴레이션에서 DNO가 외래 키인데, 이 외래 키는 DEPARTMENT 릴레이션의 기본 키인 DEPTNO를 참조한다.
참고로 데이터 무결성 조건에 의해서 DNO의 값은 DEPTNO에 있는 값들인 1, 2, 3 외에 다른 값이 올 수 없다.
 
다음으로는 자기 자신 릴레이션의 기본 키를 가리키는 경우도 있다.

 
마지막으로 각각의 외래 키가 합쳐져서 다른 릴레이션의 기본 키의 구성 요소가 되는 경우도 있다.