더듬이의 헬로월드

Hello, World!

컴퓨터 공학 기초 지식/데이터베이스

[데이터베이스/DB] 4.관계형 데이터베이스의 키(key)의 종류

더듬이 2022. 1. 18. 17:57
728x90

키가 존재하는 이유 - 투플을 구별하기 위해

-투플을 유일하게 구별하기 위해 모든 속성을 이용하는 것보다 일부 속성만 이용하는 것이 효율성을 높일 수 있다. 릴레이션에 포함된 투플들을 유일하게 구별해주는 역할은 속성 또는 속성들의 집합인 키가 담당한다.

키의 종류

후보키(Candidate Key)

후보키(candidate key)는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다.

후보키는 투플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어지므로 수퍼키 중에서 최소성을 만족하는 것이 후보키가 된다

EX) 만약 (고객이름) 속성은 후보키가 될 수 있을까?
세상에는 이름이 같은 동명이인이 있기 때문에 불가능하다.
위 릴레이션에서는 (고객아이디) 속성을 통해 각 투플을 구별할 수 있다! (후보키 => 고객아이디)
->같은 아이디를 가지는 고객은 없으니까.
EX) 하지만 (고객아이디+고객이름) 은 후보키가 될 수 없다
->(고객아이디) 만으로도 구별 가능한데, 고객이름은 필요없기 때문


기본키(Primary Key)

릴레이션에서 투플을 구별하기 위해 여러 개의 후보키를 모두 사용할 필요는 없다.

데이터베이스 설계자나 관리자는 여러 후보키 중에서 기본적으로 사용할 키를 반드시 선택해야 하는데 이것이 기본키(primary key)다.

만약 후보키가 1개만 존재하면 당연히 해당 후보키를 기본키로 선택해야 하겠지만 여러 개일 경우에는 데이터베이스 사용 환경을 고려하여 적합한 것을 기본키로 선택하면 된다.

EX) 여러 후보키가 존재할 수 있다!
위 사진에서는 (고객아이디) , (고객이름+주소) 두가지의 후보키가 존재한다.
일반적으로 같이 사는 가족의 주소는 같지만 이름까지 같은 경우는 없기 때문에 (고객이름+주소) 도 후보키로 가능하다.

하지만, 어떤 후보키를 기본키로 지정해야 하는지는 데이터베이스 관리자나 설계자의 몫이다.
그치만 딱 봐도 고객아이디가 적합하다.


슈퍼키(Super Key)

-슈퍼키(super key)는 유일성의 특성을 만족하는 속성 또는 속성들의 집합이다.

-유일성(uniqueness)은 키가 갖추어야 하는 기본 특성으로, 하나의 릴레이션에서 키로 지정된 속성 값은 투플마다 달라야 한다는 의미다. 즉, 키 값이 같은 투플은 존재할 수 없다.

-릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족시키지 못한다.


대체키 (Alternate Key)

-대체키(alternate key)는 기본키로 선택되지 못한 후보키들이다.

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

Ex) (고객아이디) , (고객이름+주소) 두가지의 후보키가 존재하지만, (고객아이디)를 기본키로 지정했으므로

(고객이름+주소) 는 대체키가 된다.


 

외래키 (Foreign Key)

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

-다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키다. 외래키는 릴레이션들 사이의 관계를 올바르게 표현하기 위해 필요하다.

-외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다.

EX)위 사진을 보면 주문 릴레이션의 (주문고객) 속성은 고객 릴레이션의 (고객 아이디) 를 참조한다.
일반적으로 주문 릴레이션과 같이 외래키를 가진 릴레이션을 '참조하는 릴레이션'이라 하고,
고객 릴레이션과 같이 기본키를 가진 릴레이션을 '참조되는 릴레이션'이라 한다.

외래키는 바로 참조하는 릴레이션의 (주문고객) 이 되는 것이다.

-따라서 외래키 속성의 도메인과 참조되는 기본키 속성의 도메인은 반드시 같아야 한다. 도메인이 같아야 연관성 있는 투플을 찾기 위한 비교 연산이 가능하기 때문이다.

 

728x90