[DB] 키, 후보키, 기본키, 슈퍼키, 대체키, 외래키란?
- Computer Science/[DB]
- 2021. 11. 5.
키(Key)란?
키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 속성(Attribute)를 말한다.
키가 필요한 이유
테이블 내에서 어떤 데이터를 찾는다고 하자. 수 많은 데이터 중 내가 원하는 데이터를 찾으려면 엄청난 탐색 시간이 필요할 것이다. 이러한 탐색 시간을 줄여줄 수 있는 것이 키다.
후보키 (Candidate Key)
- 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말한다.
- 하나의 릴레이션내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.
- 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다.
- 위 테이블에서 학생번호, 휴대폰 등이 후보키이다. 이름은 동명이인이 있으므로 유일성을 만족하지 않는다. 나이도 마찬가지로 같은 나이가 있으므로 유일성을 만족하지 않는다.
참고)
유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있다.
최소성 : 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성만으로 구성되어 있어야 한다.
기본키 (Primary Key)
- 기본키는 후보키 중에서 선택한 주 키(Main Key)이다.
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.
- NULL 값을 가질 수 없다.
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.
- 위 테이블에서 기본키는 후보키 중에서 고르면 된다. 학생번호나 휴대폰 중 고르면 된다.
대체키 (Alternate Key)
- 후보키가 둘 이상일때 기본키를 제외한 나머지 후보키들을 말한다.
- 보조키라고도 한다.
- 만약 학생번호를 기본키로 골랐다면 휴대폰이 대체키가 된다.
슈퍼키 (Super Key)
- 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타나지 않는다.
- 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못한다.
- 만약 (학생번호, 이름) 을 묶어서 키로 사용하면, 동명이인이 있어도 튜플을 구분할 수 있다. 예를 들어 2번 제니는 3번 제니와 다른 제니임을 알 수 있다. 따라서 유일성은 만족시키지만, 학생번호 하나만으로도 구분할 수 있다는 최소성을 만족시키지 못한다. 따라서 (학생번호, 이름), (학생번호, 나이), (휴대폰, 나이) 등등은 슈퍼키가 될 수 있다.
외래키 (Foreign Key)
- 관계를 맺고 있는 릴레이션 R1, R2 에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 외래키라고 한다.
- 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구이다.
반응형
'Computer Science > [DB]' 카테고리의 다른 글
[DB] 트랜잭션의 고립(격리) 수준(Isolation Level) | 고립 수준 예시 (2) | 2021.11.18 |
---|---|
[DB] 트랜잭션(Transaction)이란? ACID란? (0) | 2021.11.16 |
[DB] 정규화(Normalization)란? 정규화 예시, 1NF, 2NF, 3NF, BCNF (9) | 2021.11.05 |
[DB] 이상현상(anomaly), 함수 종속성(Functional Dependency)이란? (0) | 2021.11.05 |
[DB] 인덱스(index)란? 인덱스 자료구조 (0) | 2021.11.05 |