2 분 소요

Database Key

키(key) 란?

  • 각 튜플을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트의 모임
  • 특정 튜플을 검색하거나, 다른 튜플들과 연관시킬 수 있도록 사용하는 목적

수퍼 키(super key) VS 후보 키(candidate key), 복합 키(composite key)

  • 수퍼키
    • 특정 튜플을 고유하게 식별하는 하나의 애트리뷰트 or 애트리뷰트의 집합
    • 키의 조건이 만족되면서 최소성은 만족되지 않아도 됨
  • 후보키
    • 각 튜플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임
    • 키의 조건와 최소성이 만족되야함
  • 복합키
    • 두 개 이상의 애트리뷰트로 구성되는 후보 키
    • 후보키의 특성을 따름

https://raw.githubusercontent.com/Songwonseok/CS-Study/main/Database/images/키정리-1.JPG

(신용카드번호), (주민등록번호) 애트리뷰트는 하나만으로 튜플을 고유식별 할 수 있기 때문에 수퍼키, 후보 키 모두 가능

하지만 (신용카드번호, 이름) 과 같은 애트리뷰트는 최소성에 의하여 수퍼키는 될 수 있지만, 후보키는 될 수 없음

왜냐하면 (신용카드번호) 애트리뷰트만 있어도 고유식별을 할 수 있기 때문이다.

https://raw.githubusercontent.com/Songwonseok/CS-Study/main/Database/images/키정리-2.JPG

그렇다고 후보키가 하나만의 애트리뷰트로 구성되는 것만은 아니다. 위의 릴레이션에서 (학번), (과목번호),(학점)

모두 중복이 되어 키가 될 수 없다 그렇기 때문에 (학번, 과목번호)와 같이 두 개 이상의 애트리뷰트가 있어야 후보키, 즉 복합키가 된다.

기본 키(primary key), 대리 키(surrogate key) VS 대체 키(alternate key)

  • 기본키

    • 한 릴레이션에 후보 키가 두 개 이상 있으면 하나를 기본 키로 선정한다.

    • 모든 튜플을 고유하게 식별해야하므로, null값이나 중복된 값을 가질 수 없다.

    • 기본 키는 자연스러운 키를 선정하는 것이 좋다.

      위 신용카드 회사 고객 릴레이션에서 (신용카드번호), (주민등록번호) 가 후보키 였을 때

      (신용카드번호) 를 기본키로 선정하는 것이 더 자연스럽다.

  • 대리키

    • 자연스러운 기본 키를 찾을 수 없을 때, 레코드 번호와 같이 릴레이션에 애트리뷰트를 추가한 키
    • 기본키를 이용한 수정, 삭제, 외래키 참조에만 효율적이다
      • 자연 키를 대체하여 성능을 향상시킨다.
      • 중요한 자료를 대체하여 보안상 이득을 얻는다.
  • 대체 키

    • 기본 키로 선정되지 않는 후보 키

      위 신용카드 회사 고객 릴레이션에서 (신용카드번호), (주민등록번호) 중 (신용카드번호)가 기본키가 된다면 (주민등록번호)는 대체 키가 된다.

외래 키(foreign key)

  • 외래 키란?
    • 어떤 릴레이션의 기본 키를 참조하는 애트리뷰트
    • 관계형 데이터베이스에서 릴레이션들 간의 관계를 나타내기 위해 사용
    • 외래 키 이름은 대응되는 기본 키와 다른 이름을 가질 수 있음 하지만 참조되는 릴레이션의 기본 키와 동일한 도메인을 가져야 한다.

자연 키(Natural Key) VS 인조 키(Artificial Key)

  • 자연 키
    • 기본키만을 위한 데이터가 아니라 비즈니스 모델에서 자연스레 나오는 속성으로 기본키를 정하는 것 ex) email, ID 등등
  • 인조 키
    • 비즈니스 모델과는 달리 키를 위한 데이터 ex) Auto Increment 등등

한 줄 요약

수퍼 키

  • 최소성을 만족하지 않고 튜플을 고유식별 할 수 있는 애트리뷰트 or 애트리뷰트 집합

후보 키

  • 최소성을 만족하고 튜플을 고유식별 할 수 있는 애트리뷰트 or 애트리뷰트 집합

복합 키

  • 두 개 이상의 애트리뷰트로 모여진 후보키

기본 키

  • 릴레이션의 후보키 중 하나의 자연스러운 애트리뷰트를 선정하여 튜플을 고유식별 할 수 있는 키

대리 키

  • 릴레이션에 고유식별을 할 수 있는 기본키의 재목이 없을 때 임의적으로 만들어 내는 키(거의 사용X)

대체 키

  • 기본 키가 되지 못한 후보 키

외래 키

  • 릴레이션의 애트리뷰트를 참조하는 키로써 릴레이션 간의 관계를 나타낼 때 사용하는 키

카테고리:

업데이트: