[Database Modeling] Key

DaeHoon·2023년 7월 23일
0

Database Modeling

목록 보기
2/5

Key

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

키의 관계

1. 후보 키 (Candidate Key)

  • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합
  • 즉, 후보키(candidate key)는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다.
  • 모든 릴레이션은 반드시 하나 이상의 후보키를 갖는다.

Example

  • 고객이름 속성은 후보키가 될 수 있을까?
    • 세상에는 이름이 같은 동명이인이 있기 때문에 불가능하다.
  • 위 릴레이션에서는 고객아이디 속성을 통해 튜플을 구별할 수 있다.
  • 고객아이디+고객이름은 후보키가 될 수 없다.
    • 고객아이디로 충분히 구별이 가능한데 고객이름이 들어갈 경우 최소성을 깨트림

2. 기본 키(Primary Key)

  • 여러 후보키 중에서 기본적으로 사용할 키를 반드시 선택해야 하는데 이것이 기본키(primary key)다.
  • 주 식별자, Not Null & Unique

Example

  • 위 사진에서는 (고객아이디) , (고객이름+주소) 두가지의 후보키가 존재한다.
  • 일반적으로 같이 사는 가족의 주소는 같지만 이름까지 같은 경우는 없기 때문에 (고객이름+주소) 도 후보키로 가능하다.
  • 하지만, 어떤 후보키를 기본키로 지정해야 하는지는 데이터베이스 관리자나 설계자의 몫이다.
  • 보통은 한 개 속성으로 컬럼을 구분할 수 있는 키를 선호함.

3. 슈퍼 키(Super Key)

  • 테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다. 슈퍼키는 유일성만 만족하면 슈퍼 키가 될 수 있다.

Example

  • 7조라는 팀에 팀원은 4명이 있다. 이 4명을 구분할 수 있는 속성은 학번, 주민번호
  • 이름 + 나이를 묶어서 하나의 속성으로 만드는 것도 가능. 튜플이 7조 안에서 중복만 되지 않으면 가능하기 때문이다. 즉, 4명을 구분할 수 있으면 슈퍼키가 될 수 있다.
  • 어떤 속성끼리 묶던 중복값이 안나오고 서로 구별만 할 수 있으면 된다.
  • 최소성은 만족하지 않는다.

4. 대체 키 (Alternate Key)

-기본 키(PK)로 선택되지 못한 후보키들이다.

  • 이름에서 알 수 있듯이 대체키는 기본키를 대신할 수 있지만 기본키가 되지 못하고 탈락한 이유가 있을 수 있다

Example


-고객아이디, 고객이름+주소 두 가지의 후보 키가 존재하지만, 고객아이디를 기본 키로 지정했으므로 고객이름+주소 는 대체 키가 된다.

5. 외래 키 (Foreign Key)

  • 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본 키가 되는 키
  • 다른 릴레이션의 PK를 그대로 참조하는 속성의 집합이 외래키
  • 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다. (참조 무결성)

Example

  • 주문 릴레이션의 주문고객 속성은 고객 릴레이션의 고객 아이디 를 참조
  • 외래 키는 바로 참조하는 릴레이션의 주문고객 이 되는 것이다.
  • 따라서 외래키 속성의 도메인과 참조되는 기본키 속성의 도메인은 반드시 같아야 한다. 도메인이 같아야 연관성 있는 튜플을 찾기 위한 비교 연산이 가능하기 때문
profile
평범한 백엔드 개발자

0개의 댓글