key 란?
key는 database에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬을 할 때 튜플을 구분하는 기준이 되는 속성을 말합니다.
키의 종류에는 후보키, 기본키, 대체키, 슈퍼키, 외래키 등이 있습니다.
1) 기본키 Primary Key
흔히 PK라고도 불리며 기본키는 후보키 중에서 선정된 주(Main) 키로 중복된 값을 가질 수 없습니다. 즉 한 테이블에서 특정 튜플(row = 행)을 유일하게 구별할 수 있는 것입니다.
기본키는 기본적으로 Null값을 받아올 수 없습니다. 왜냐하면 기본키는 유일성*과 최소성*을 가지고 있어 튜플을 식별해야 하기 때문에 null값이 올 수 없는 것입니다.
2. 외래키 Foreign Key
FK라 불리며 다른 테이블의 기본키를 참조하는 속성이나 속성들의 집합을 의미합니다.
참조한 테이블을 부모 테이블, 참조할 테이블을 자식테이블이라 할 수 있는데 이때 외래키는 부모테이블의 기본키 값을 따라야 하며 자식테이블에 입력값이 존재할 때 부모테이블의 기본키 값이 아닌 경우에는 에러가 발생하게 됩니다. 마찬가지로 테이블을 삭제할 때도 부모테이블 먼저 삭제를 하게 되면 에러가 발생하기 때문에 자식테이블을 삭제 한 뒤에 부모테이블을 삭제할 수 있습니다.
3) 후보키 Candidate Key
후보키는 테이블을 구성하는 속성들 중에 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합으로 기본키로 사용할 수 있는 속성들을 말합니다. 이때 후보키는 테이블에 있는 모든 튜플에 대해서 유일성과 최소성을 만족해야 합니다.
예를 들어서 학생정보 테이블이라 했을 때 학번, 주민번호, 이름이 있다고 하면, 학번과 주민번호는 유일성과 최소성을 갖고 있어 후보키가 될 수 있지만 이름은 유일성을 충족하지 않기 때문에(동명이인) 후보키가 될 수 없습니다.
4) 슈퍼키 Super Key
슈퍼키의 경우에는 속성들을 그룹 지어 튜플을 구분 짓은 값을 말하는데요. 이때 슈퍼키로 구분할 경우 튜플의 유일성은 만족하지만 최소성은 만족하지 못합니다.
예를 들어서 학생정보 테이블에 학번, 주민번호, 이름값이 존재한다면 슈퍼키는 학번+주민번호, 학번+이름, 주민번호+이름과 같이 속성끼리 그룹을 짓는 게 특징입니다. 이때 이 슈퍼키는 각 튜플의 유일성 조건을 만족하지만, 학번, 주민번호화 같이 속성 하나로도 다른 튜플을 구분할 수 있는데 중복되어 사용하였으니 최소성을 갖지 못한 것입니다.
5) 대체키 Alternate Key
대체키는 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 말하며 보조키라고도합니다.
예를 들어서 학생테이블의 학번, 주민번호 이름값이 존재한다면 학번을 주키(PK)로 설정하면 다른 하나인 후보키는 주민번호가 되고, 학번을 대체할 수 있는 후보키 이기 때문에 주민번호는 대체키가 됩니다.
'데이터베이스' 카테고리의 다른 글
[SQL] timezone 수정하기 (0) | 2023.12.20 |
---|---|
DATABASE의 제약조건 (NOT NULL과 DEFAULT) (0) | 2023.12.19 |
[SQL] 날짜/시간 타입 (0) | 2023.12.19 |
데이터 중복과 정규화 (0) | 2023.12.18 |
RDBMS vs NoSQL (0) | 2023.12.18 |