정리

[DB] 헷갈리는 KEY 개념 잡기

오직노력 2023. 3. 21. 23:34

EMPLOYEE_ACCOUNT

bank_name account_num account_id class ratio empl_id empl_name card_id

위와 같은 컬럼(=attribute =요소)이 있는 테이블이 있다고 가정하고 시작해 보자

 

Super key 

- table에서 tuple(행)들을 unique 하게 식별할 수 있는 attributes set(요소들의 집합)

 

=> 위의 talbe에서 각 tuple(행)들을 unique 하게 식별할 수 있는 키는 {account_id}, {bank_name, account_num} 이렇게 두 가지인데 Super key는 이 키들의 집합 즉, 이렇게 tuple(행)들을 unique 하게 식별할 수 있는 하나 또는 그 이상의 집합을 Super key라고 한다. 

 

(Candidate) key

- 어느 한 attribute라도 제거하면 unique하게 tuples를 식별할 수 없는 super key 

 

=> 위 테이블에서  tuple(행)들을 unique하게 식별할 수 있는 키는 {account_id}, {bank_name, account_num}가 있는데

{account_id} attribute가 하나이기 때문에 제거하면 tuples를 식별할 수 없는 super key이면서 (Candidate) key이고 마찬가지로 두 개의 attribute로 이루어진 {bank_name, account_num} 키도 두 attribute 중 하나라도 제거하면 unique 하게 tuples를 식별할 수 없는 super key 이면서 (Candidate) key이다.

 

Primary key

- table에서 tuple(행)들을 unique하게 식별하려고 선택된 (Candidate) key

 

=> 위 테이블에서 (Candidate) key는 {account_id}, {bank_name, account_num} 이렇게 두 가지가 있는데 둘 중에 

PK로 사용할 키를 선택하면 된다. 요소가 하나인 편이 더 관리하기 쉬우니 보통은 {account_id}처럼 요소가 하나인 (Candidate) key를 PK로 선택한다.

 

Reference)

쉬운코드 DB정규화