[DB] 키, 후보키, 기본키, 슈퍼키, 대체키, 외래키란?

키(Key)란?

키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 속성(Attribute)를 말한다.

 

키가 필요한 이유

테이블 내에서 어떤 데이터를 찾는다고 하자. 수 많은 데이터 중 내가 원하는 데이터를 찾으려면 엄청난 탐색 시간이 필요할 것이다. 이러한 탐색 시간을 줄여줄 수 있는 것이 키다.

Key 예시

후보키 (Candidate Key)

  1. 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말한다.
  2. 하나의 릴레이션내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.
  3. 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.
  4. 위 테이블에서 학생번호, 휴대폰 등이 후보키이다. 이름은 동명이인이 있으므로 유일성을 만족하지 않는다. 나이도 마찬가지로 같은 나이가 있으므로 유일성을 만족하지 않는다. 
참고)
유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있다.
최소성 : 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성만으로 구성되어 있어야 한다.

기본키 (Primary Key)

  1. 기본키는 후보키 중에서 선택한 주 키(Main Key)이다.
  2. 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.
  3. NULL 값을 가질 수 없다.
  4. 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.
  5. 위 테이블에서 기본키는 후보키 중에서 고르면 된다. 학생번호나 휴대폰 중 고르면 된다.

대체키 (Alternate Key)

  1. 후보키가 둘 이상일때 기본키를 제외한 나머지 후보키들을 말한다.
  2. 보조키라고도 한다.
  3. 만약 학생번호를 기본키로 골랐다면 휴대폰이 대체키가 된다.

슈퍼키 (Super Key)

  1. 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타나지 않는다.
  2. 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못한다.
  3. 만약 (학생번호, 이름) 을 묶어서 키로 사용하면, 동명이인이 있어도 튜플을 구분할 수 있다. 예를 들어 2번 제니는 3번 제니와 다른 제니임을 알 수 있다. 따라서 유일성은 만족시키지만, 학생번호 하나만으로도 구분할 수 있다는 최소성을 만족시키지 못한다. 따라서 (학생번호, 이름), (학생번호, 나이), (휴대폰, 나이) 등등은 슈퍼키가 될 수 있다. 

외래키 (Foreign Key)

  1. 관계를 맺고 있는 릴레이션 R1, R2 에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 외래키라고 한다.
  2. 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구이다.
반응형

댓글

Designed by JB FACTORY