[DB] 키 (Key)

·2025년 1월 2일

데이터베이스

목록 보기
4/22
post-thumbnail

키의 종류

  • 키(key)는 릴레이션에 포함된 튜플들을 구분해주는 속성 또는 속성들의 집합
  • 관계 데이터 모델에서는 키를 슈퍼키, 후보키, 기본키, 대체키, 외래키의 5가지로 분류 할 수 있음

슈퍼키(super key)

  • 유일성의 특성을 만족하는 속성 또는 속성들의 집합
  • 유일성은 하나의 릴레이션에서 슈퍼키로 지정된 속성의 값은 각 튜플마다 고유해야 하며, 동일한 값이 중복될 수 없음
  • 고객아이디는 슈퍼키가 될 수 있고, 고객이름은 슈퍼키가 될 수 없음. 단, (고객아이디, 고객이름)은 슈퍼키가 될 수 있음 즉, 고객아이디를 포함하는 속성 집합은 모두 슈퍼키가 될 수 있음
  • (고객아이디, 고객이름)과 같이 유일성을 만족하기 위해 불필요한 속성의 값까지 확인하는 비효율적인 작업이 필요함

후보키(cadidate key)

  • 유일성최소성을 만족하는 속성 또는 속성들의 집합
  • 최소성(minimality)은 키를 구성하고 있는 여러 속성 중에서 하나라도 없으면 튜플을 유일하게 구별할 수 없는, 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성
  • 후보키는 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어지므로 슈퍼키 중에서 최소성을 만족하는 것이 후보키가 됨
  • 고객 아이디는 후보키가 될 수 있지만, (고객아이디, 고객이름)은 후보키가 될 수 없음
  • 후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 튜플이 삽입되거나 기존 튜플의 속성 값이 바뀌어도 유지되어야 함

기본키(primary key)

  • 여러 후보키 중에서 행을 식별하기 위해 기본적으로 사용할 키
  • 후보키가 한 개만 존재하면 당연히 해당 후보키를 기본키로 선택해야 하겠지만 여러 개일 경우에는 데이터베이스 사용 환경을 고려하여 적합한 것을 기본키로 선택

기본키를 선택할때 기준

  • 널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합
  • 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합
  • 단순한 후보키를 기본키로 선택한다

대체키(alternate key)

  • 대체키는 기본키로 선택되지 못한 후보키
  • 고객 번호가 기본키고, (고객이름, 고객 주소) 집합은 대체키가 됨

외래키(foreign key)

  • 외래키는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키
  • 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키
  • 하나의 릴레이션에는 외래키가 여러 개 존재할 수 있음
  • 외래키가 반드시 다른 릴레이션을 참조할 필요는 없음. 참조하는 릴레이션과 참조되는 릴레이션이 같을 수도 있음.
  • 즉, 외래키 자신이 속한 릴레이션의 기본키를 참조하도록 외래키를 정의할 수도 있음
  • 외래키는 기본키를 참조하지만 기본키가 아니기 때문에 널 값을 가질 수 있음
  • 서로 다른 튜플이 같은 값을 가질 수 있음

대리키(Surrogate Key)

  • 마땅한 기본키가 없을때 일련번호와 같이 속성을 추가하여 그것을 키로 삼는 키. 인조키라고도 불림.
  • 자연키(natural key)와 대칭되는 개념인데,비즈니스와 관련 없는 임의로 만들어진 키로써, auto_increment가 이에 속함
  • 사용하는 이유
    • 기본키의 저장 공간을 줄여줌
    • 중요한 데이터를 대체하여 보안의 효율을 높임(ex: 주민등록번호나 아이디를 PK로 한경우)
    • 데이터 변경에 영향을 덜 받기 위함 (ex: 주민등록번호 폐지시)

Reference

https://terms.naver.com/list.naver?cid=58430&categoryId=58430&so=st4.asc

0개의 댓글