Key의 종류

본 글은 소프트웨어 마에스트로 과정을 위해 작성한 내용입니다.


Key?

유일성과 최소성 속성 & 속성의 조합. 식별자라고도 한다.

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

튜플 : 릴레이션을 구성하는 각각의 행, 속성의 모임으로 구성됨. 파일 구조에서 레코드와 같은 개념
카디날리티(Cardinality) : 튜플의 수

Key의 종류

image

  • 슈퍼 키(Super Key) : 유일성을 만족하는 키. 테이블 내에서 레코드를 유일하게 식별하는 속성 혹은 속성 조합 (ex: {학번 + 이름}, }주민등록번호 + 학번})
  • 복합 키(Composite Key) : 2개 이상의 속성(attribute)를 사용한 키
  • 후보 키(Cadidate Key) : 유일성최소성을 만족하는 키. 기본키가 될 수 있는 후보이기 때문에 후보키라고 불림. 슈퍼키 대상 키 (ex: 주빈등록번호, 학번 등)
  • 기본 키(Primary Key) : 후보 키에서 선정된 속성 혹은 속성 조합. Null 값이 들어갈 수 없으며, 기본 키로 선택된 속성은 동일한 값이 들어갈 수 없음.
  • 대체 키(Surrogate Key) : 후보 키 중에서 기본 키로 선택되지 않은 키
  • 외래 키(Foreign Key) : 어떤 테이블 간의 기본 키(Primary Key)를 참조하는 속성. 테이블들 간의 관계를 나타내기 위해 사용됨

슈퍼 키(Super Key)

  • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
  • 릴레이션을 구성하는 모든 튜플 중 슈퍼 키로 구성된 속성의 집합과 동일한 값은 나타내지 않음
  • 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족시키지 못함
    • 뭉쳤을 경우 유일성이 생기고, 흩어지면 몇몇 속성들은 독단적으로 유일성있는 키로 사용할 수 없음 = 최소성을 만족하지 못함
    • ex) <학생> 릴레이션에서 학번, 주민번호, 성명이라는 속성이 있을 때 이 3가지의 속성을 조합하면 다른 튜플과 구별이 가능하지만, '성명' 단독적으로 슈퍼키를 사용할 경우에는 구별이 가능하지 않기 때문에 최소성을 만족시키지 못함

후보 키(Candidate Key)

  • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합
  • 모든 릴레이션은 반드시 하나 이상의 후보키를 가짐
  • 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 함
    • ex) <학생> 릴레이션에서 '학번'이나 '주민번호'는 다른 레코드를 유일하게 구별할 수 있는 기본키로 사용될 수 있으므로 후보키가 될 수 있음
    • 기본키가 될 수 있는 키

기본 키(Primary Key)

  • 후보 키 중에서 선택한 주 키(Main Key)
  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
  • Null 값을 가질 수 없음 (개체 무결성의 첫 번째 조건)
  • 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음 (개체 무결성의 두 번째 조건)
    • ex) <학생> 릴레이션에는 '학번' 혹은 '주민번호'가 기본키가 될 수 있고, <수강> 릴레이션에는 '학번'+'과목명'으로 조합해야 기본키가 만들어질 수 있음
      • ex) <수강> 릴레이션에는 '학번' 속성과 '과목명' 속성은 개별적으로 기본키로 사용할 수 없음 => 다른 튜플들과 구별이 되지 않기 때문

대체 키(Surrogate Key)

  • 후보 키가 둘 이상일 때 기본키를 제외한 나머지 후보 키들을 말함
  • 보조 키라고도 함
    • ex) <학생> 릴레이션에서 '학번'을 기본키로 정의하면 '주민번호'는 대체키가 됨

외래 키(Foreign Key)

  • 관계(Relation)을 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 잇는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성
  • 참조되는 릴레이션의 기본 키와 대응되어 릴레이션 간 참조 관계를 표현하는데 중요한 도구로 사용됨
  • 외래 키로 지정되면 참조 테이블의 기본 키에 없는 값은 입력할 수 없음 (참조 무결성 조건)
    • ex) <수강> 릴레이션이 <학생> 릴레이션을 참조하고 있으므로 <학생> 릴레이션의 '학번'은 기본키, <수강> 릴레이션의 '학번'은 외래키
    • ex) <수강> 릴레이션의 '학번'에는 <학생> 릴레이션의 '학번'에 없는 값을 입력할 수 없음

Reference