Unborn 8.0 Yellow Pointer
본문 바로가기
프로그래밍/데이터베이스

[데이터베이스] 키(수퍼키, 후보키, 기본키, 외래키)

by 에삐니 2017. 9. 11.
728x90

 

키(key)가 필요한 이유

테이블의 각 레코드들은 레코드를 구성하는 각 필드의 값으로 구별해야 한다. 특정 레코드의 모든 필드에 대한 값들은 해당 레코드를 유일하게 식별할 수 있는 식별자가 되는데 이러한 식별자를 키라고 한다. 참고로 두 개 이상의 필드로 구성된 키를 복합키(composite key)라고 한다.

 

수퍼키(super key)

아무런 제약 조건 없이 레코드들을 식별할 수 있는 필드의 집합으로 모든 테이블은 적어도 하나의 수퍼키를 갖고 있다. 따라서 테이블 내에 존재하는 모든 필드의 집합도 하나의 수퍼키가 된다.

 

후보키(candidate key)

레코드들을 식별할 수 있는 최소한의 필드만으로 구성된 키를 후보키라고 한다. 어떠한 필드라도 제외하면 키가 될 수 없는 필드의 집합을 의미한다.

 

기본키(주키;primary key)

후보키 중에서 하나만을 식별자로 정한 것을 기본키라고 한다. 기본키를 결정하는 특별한 규칙은 없으며 전적으로 테이블을 설계하는 설계자의 몫이다. 일반적으로 하나의 필드 또는 최소의 필드를 갖는 후보키를 기본키로 정하는 것이 유리하다.

 

외래키(foreign key)

위의 키들은 하나의 테이블 내에서 정의되지만 외래키는 두 테이블 간의 관계로부터 정의되는 개념이다. 외래키는 반드시 다른 테이블의 기본키를 참조한다.

정의:외래키

두 테이블 스키마 R1과 R2에 대해서 R1의 어떤 필드 집합 FK가 다음 두 조건을 만족하면, FK는 R2의 기본키인 PK를 참조하는 P1의 외래키이다.

1. FK의 필드들은 R2의 기본키인 PK와 동일한 도메인을 갖는다.

2. R1의 모든 레코드의 FK값은 R2의 레코드 중 하나의 PK 값과 일치하거나 널이된다.

여기서 R1과 같이 외래키를 갖고 있는 테이블을 참조하는 테이블(referencing table)라 하고 R2와 같이 외래키가 참조하는 기본키를 갖는 테이블을 참조되는 테이블(referenced table)라 한다.

FK가 널이 된다는 의미는 참조하고자 하는 레코드가 아직 결정되지 않았거나 알지 못한다는 것을 의미한다.

 

키가 널(null)이 될 수 있나 ?

기본키는 식별자의 기능을 하는데, 만약 기본키로 정의된 필드가 널을 갖게 되면 이러한 식별 기능을 상실하게 되므로 기본키는 널이 될 수 없다.

728x90
반응형

'프로그래밍 > 데이터베이스' 카테고리의 다른 글

SQL Injection 이란?  (0) 2022.07.28
[데이터베이스] 테이블의 특성  (0) 2017.09.09
[데이터베이스] 용어 정리  (0) 2017.09.08

댓글