devFancy BE Developer

[데이터베이스개론] 관계 데이터 모델의 개념 - Key의 종류

2023-02-15
devFancy

이 글의 정보들은 데이터베이스 개론면접을 위한 CS 전공지식 노트 교재를 공부하면서 정리한 내용을 토대로 작성하였습니다.

Key의 종류

  • key는 테이블 간의 관계를 조금 더 명확하게 하고, 관계 데이터 모델에서 중요한 제약조건을 정의한다.

    또한 튜플을 처리하는 데 중요한 역할을 하므로 키의 개념을 정확히 이해할 필요가 있다.

  • 관계 데이터 모델에서는 키를 다음과 같이 슈퍼키, 후보키, 기본키, 대체키, 외래키의 다섯 가지로 분류할 수 있다.

슈퍼키

  • 슈퍼키유일성의 특성을 만족하는 속성 또는 속성들의 집합이다. 유일성은 키가 갖추어야 하는 기본 특성으로, 키 값이 같은 튜플은 존재할 수 없다.

  • 예를 들어 [그림 5-2]의 고객 릴레이션에서 고객아이디 속성은 모든 고객 튜플마다 값이 다르고 이를 통해 다른 튜플과 유일하게 구별할 수 있으므로 슈퍼키가 될 수 있다.

  • 그러나 다른 속성(나이, 등급, 직업, 적립금)은 값이 같은 고객이 있을 수 있으므로 유일성을 만족시키지 못해 슈퍼키가 될 수 없다.

  • 고객 아이디 속성만으로도 모든 튜플을 구별할 수 있기 때문에 고객 아이디를 포함하는 속성 집합은 모두 슈퍼키가 될 수 있다.

후보키

  • 후보키유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다. 최소성은 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성이다. 그러므로 하나의 속성으로 구성된 키는 당연히 최소성을 만족한다.

  • 슈퍼키 중에서 최소성을 만족하는 것이 후보키가 된다. [그림 5-2]의 고객아이디 속성은 단독으로 고객 튜플을 유일하게 구별할 수 있으므로 후보키가 될 수 있다.

  • 후보키를 만족하기 위해서는 새로운 튜플이 삽입되거나 기존 튜플의 속성 값이 바뀌어도 유지되어야 한다.

기본키

  • 여러 후보키 중에서 기본적으로 사용할 키를 반드시 선택해야 하는데 이것이 기본키다.

  • 후보키가 1개일 경우에는 해당 후보키가 기본키로 선택하고, 후보키가 여러개일 경우에는 데이터베이스 사용 환경을 고려해서 적합한 것을 기본키로 선택하면 된다.

  • 선택한 기본키는 [그림 5-6]과 같이 속성 이름에 밑줄을 그어 표헌한다.

  • 기본키를 선택할 때 고려하면 도움이 되는 기준 몇 가지를 정리했다.

  1. 널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.

  2. 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.

  3. 단순한 후보키를 기본키로 선택한다.

  • 기본키 선정 과정은 대학에서 학생회장을 선발하는 과정과 유사하다. 대학에 다니는 학생들(슈퍼키) 중에서 학생회장이 될 만한 자격을 갖춘 후보 학생(후보키)을 추천한 다음, 지지를 가장 많이 받은 한 명의 학생(기본키)을 학생회장으로 임명하는 과정으로 이해하면 된다.

대체키

  • 대채키는 기본키로 선택되지 못한 후보키들이다.

  • [그림 5-8]은 하나의 릴레이션에서 볼 수 있는 슈퍼키, 후보키, 기본키, 대체키의 관계를 그림으로 표현한 것이다.

  • 이 외에도 다른 릴레이션과 관계에서 고려할 수 있는 외래키가 있다.

외래키

  • 외래키는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키다.

  • 다시 말해 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키다.

외래키가 다른 테이블의 대체키를 참조하는 것도 가능하다.
기본키로 선택받지 못했지만 유일성과 최소성을 만족하는 대체키를 참조하더라도 **관련 있는 튜플을 구분할 수 있기 때문**이다.
  • 외래키의 개념과 필요성을 파악하기 위해 인터넷 쇼핑몰을 위한 데이터베이스에서 고객 릴레이션과 주문 릴레이션의 관계를 생각해보자.

  • [그림 5-9]에서 고객 릴레이션은 속성이 6개이고, 고객 아이디 속성이 기본키다. 주문 릴레이션은 속성이 6개이고, 주문번호 속성이 기본키다.

  • 여기서 주문 릴레이션의 주문고객 속성이 고객 릴레이션의 기본키인 고객 아이디 속성을 참조하면 주문고객 속성을 외래키라고 한다.

  • [그림 5-10]와 같이 외래키는 반드시 다른 릴레이션의 기본키를 참조해야 하며 외래키의 도메인은 참조되는 기본키와 같게 정의되어야 한다.

Reference


Comments

Index