220329_키의 종류 (슈퍼 키, 후보 키, 기본 키, 대체 키, 외래 키)

창고·2022년 7월 28일
1
post-custom-banner

티스토리에 저장했던 글을 옮겼습니다.
https://mrcocoball.tistory.com/38?category=1080971

1. 키(Key)의 정의**

(1) 키(Key)의 정의

  • 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
  • 무언가를 식별하는 고유한 식별자(identifier) 기능을 함

(2) 유일성과 희소성

  • 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
  • 희소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함
  • 다만 "최소성 만족 > 슈퍼키 X"는 아님. 
    슈퍼키는 최소성과 관계없이 튜플을 유일하게 구분할 수 있으면 됨

2. 키(Key)의 종류**

(1) 슈퍼 키(Super Key)

  • 테이블에서 각 행을 유일하게 식별할 수 있는 속성들의 집합
  • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키이며 릴레이션을 구성하는 모든 튜플 중 
    슈퍼키로 구성된 속성의 집합과 동일한 값은 나타내지 않음
  • 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하나 최소성은 만족하지 못함
  • 예시
    • '등록번호'와 '사업자등록번호'는 유일성을 만족하고 있으나
      '대표자명'은 동명이인이 있을 수 있어 유일성 만족 X
    • 슈퍼 키(Super Key)
      등록번호, 사업자등록번호, (등록번호, 사업자등록번호), (등록번호, 사업자등록번호, 대표자명)

(2) 후보 키(Candidate Key)

  • 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
  • 릴레이션을 구성하는 속성들 중 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
  • 후보 키는 기본 키가 될 수 있는 후보들이며 유일성과 최소성을 동시에 만족해야 함
  • 예시
    • [광고주] 테이블에서는 등록번호와 사업자등록번호는 유일성과 최소성을 만족하므로 후보키가 됨
    • [매체] 테이블에서는 등록번호와 매체명으로 조합해야 유일성과 최소성을 만족하기 때문에 (등록번호, 매체명)이 후보키가 됨
  • 2개 이상의 필드를 조합하여 만든 키를 복합 키 (Composite Key)라고 함

(3) 기본 키(Primary Key)

  • 후보 키 중 특별히 선정된 키로, 중복된 값을 가질 수 없음
  • 후보 키의 성질을 갖기 때문에 유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키
  • NULL 값을 가질 수 없으며 튜플에서 기본 키로 설정된 속성엔 NULL 값이 있어서는 안됨
  • 예시
    • [광고주] 테이블에서는 후보 키인 등록번호나 사업자등록번호를 선택하여
      기본 키로 설정할 수 있음
    • [매체] 테이블에서는 (등록번호, 매체명) 을 기본 키로 설정할 수 있음
    • [광고주] 테이블의 기본 키로 정의될 경우 이미 입력된 등록번호 '1'은 
      다른 튜플의 등록번호 속성 값으로 입력할 수 없음

(4) 대체 키(Alternate Key)

  • 후보 키 중에서 선정된 기본 키를 제외한 나머지 후보 키를 의미
  • [광고주] 테이블에서 등록번호가 기본 키로 설정이 되면 사업자등록번호는 대체 키가 됨

(5) 외래 키(Foreign Key)

  • 다른 테이블, 릴레이션의 기본 키를 참조하는 속성 또는 속성들의 집합을 의미
  • 테이블, 릴레이션 간의 관계를 표현할 때 사용
  • 한 테이블, 릴레이션의 속한 속성 A와 참조 테이블, 릴레이션의 기본 키인 B가 동일한 도메인 상에서 정의되었을 때 속성 A를 외래키라고 함
  • 참조 테이블의 기본 키와 동일한 키 속성을 지님
  • 예시
    • [매체] 테이블에서의 등록번호는 [광고주] 테이블의 기본 키인 등록번호를 참조하고 있어 [매체] 테이블에서의 등록번호는 외래 키가 된다
    • [매체] 테이블에서의 등록번호 속성에 [광고주] 테이블의 등록번호 속성에 없는 값을 입력 불가
    • [광고주] 테이블과 [매체] 테이블은 등록번호를 기준으로 관계가 설정된 것
    • 먼저 참조되는 테이블을 부모 테이블, 참조하는 테이블을 자식 테이블이라 하며
      부모 테이블 > 참조 테이블 순으로 생성이 되어야 함
  • 부모 테이블을 삭제하기 위해선 자식 테이블을 먼저 삭제하여야 함

레퍼런스

https://jerryjerryjerry.tistory.com/49
https://moonibot.tistory.com/61
https://sharpcoder.tistory.com/116

profile
공부했던 내용들을 모아둔 창고입니다.
post-custom-banner

0개의 댓글