프로그래밍 & 알고리즘 & IT/컴퓨터일반

[데이터베이스] Key의 종류

라니체 2022. 9. 17. 11:56
728x90

(관계형) 데이터베이스 (RDBMS) 의 각 table을 relation이라고 하며

relation은 attribute(column name)와 tuple(rows)들로 이루어져있다.

이때 attribute들의 부분집합으로 super key를 정의할 수 있다.

여기서 key란, 해당 attribute들의 tuple들이 서로 겹치지 않을 때, 그 해당 attribute들은 super key가 될 자격을 가지게 된다.

예를 들어, 아래와 같은 table이 주어졌다고 할 때, {age,sex}, {age,bloodtype} 등은 super key가 될 수 있다.

 

 

한편, candidate key란 위의 가능한 super key의 후보들 중 최소한의 개수(cardinality)를 갖는 key이다.

예를 들면, {age} 나 {height} 같은 것이 최소 개수 1을 가지므로 candidate key가 될 수 있겠다.

한편, primary key는 candidate key 들 중에서 사용자가 지정한 key이다.

즉, table마다 하나의 primary key를 가질 수 있으며, 이는 사용자가 지정하기 나름이다.

정리하면

 

primarykey⊂candidatekey⊂super key

가 성립한다.

참고로 primary key를 refer하는 attribute를 foreign key라고 부른다.

즉, 테이블에서 어떤 attribute가 primary key가 아닌데 또다른 테이블에서는 primary key일때,

그 테이블에서의 attribute가 다른 테이블에서의 primary key를 참조하게 만들면 그 attribute는 foreign key가 된다. foreign key는 데이터의 기입 오류를 방지해준다.