데이터베이스에서, 각 테이블에 있는 인스턴스를 어떻게 구별할까? 그 역할을 하는 속성을 키(key) 라고 한다.
key는 한 개의 속성으로도 구성될 수 있고, 여러개로도 구성될 수 있다.
key에는 여러가지 종류들이 있는데 알아보자.
수퍼 키 - Super Key
수퍼키는 유일성의 특성을 만족하는 속성 또는 속성들의 집합이라고 한다.
유일성은,
키가 갖추어야 하는 기본 특성으로, 하나의 릴레이션에서 키로 지정된 속성의 값은 튜플마다 달라야 한다.
이렇듯, 각 튜플마다 중복 되는 값이 있으면 안된다는 것이다.
위의 사진의 빨간 원 안에 있는 튜플들을 보면, 겹치는 값이 없어야 한다.
후보 키 - Candidate Key
후보키는 유일성과 최소성을 만족하는 속성 또는 그러한 것들의 집합이라고 한다.
유일성은 슈퍼키에서 보았으므로 최소성을 알아보도록 하자.
최소성이란,
키를 구성하고 있는 여러 속성 중에서 하나라도 없으면 튜플을 유일하게 구분할 수 없는, 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성이다.
예를 들어, 사진에서 보듯이, 후보키는 Roll_No를 포함해, Ph_No또한 후보키로서 자격이 된다.
하지만 이 둘을 합쳐 Roll_No, Ph_No를 같이 써 후보키로 쓸 수 있냐면, 그렇지 않다. 왜냐면 최소성을 만족하지 못하는데, 그 이유는 Roll_No나 Ph_No 둘 다 하나만으로도 튜플을 구별할 수 있기 때문이다.
기본 키 - Primary Key
어떤 릴레이션에서 튜플을 구분하기 위해 사용하는 최종적인 후보키 하나를 기본 키라고 한다.
이러한 후보 키는 릴레이션에서 여러 개 일 수 있다.
기본 키는 한 가지의 속성을 가지고 만들 수도 있고, 여러개의 속성을 합쳐 사용할 수도 있다.
또한 기본 키로 사용하기 위한 조건이 있다. 살펴보자면...
- 널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합하다.
- 단순한 후보키로 기본키를 선택한다.
이정도가 있다고 한다.
널 값을 가질경우, 튜플을 구성할 수 없고, 값이 자주 변경되면, 바뀌는 값이 기본키의 조건을 만족하는지 자주 확인을 해야만 한다.
이외에도 대체키나, 외래키 같은 것이 있다.
대체키는 기본키로 뽑히지 못한 후보키들을 가리키는 것이고,
외래키는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키라고 할 수 있다.
'데이터베이스' 카테고리의 다른 글
[데이터베이스] 데이터베이스 정규화 - Database Normalization (0) | 2020.09.19 |
---|