8. 데이터베이스 키(Key)와 무결성 제약조건(Integrity Constraint)
1. 키(Key)란?
키(Key)는 데이터베이스에서 저장되어 있는 튜플을 유일하게 구분할 수 있는 식별자를 말합니다. 이런 식별자는 단일 속성 이나 속성들의 집합이 될 수 있습니다. 키의 종류로는 후보키, 기본키, 대체키, 외래키, 슈퍼키가 있습니다.
회원번호 |
이름 |
주민등록번호 |
나이 |
성별 |
0001 |
강혜지 |
920504-2*****6 |
27 |
여 |
0002 |
박인호 |
931111-1*****5 |
26 |
남 |
0003 |
최민희 |
890713-2*****4 |
30 |
여 |
0004 |
민형석 |
921224-1*****7 |
27 |
남 |
- 슈퍼키(Super Key): 튜플을 유일하게 구분할 수 있는 하나 이상의 속성들로 구성된 키를 뜻합니다. 유일성을 만족하지만 최소성은 만족하지 않습니다.
[예시]: 슈퍼키로 올 수 있는 조합은 (회원번호), (주민등록번호), (회원번호, 이름), (회원번호, 주민등록번호), (회원번호, 나이), (회원번호, 성별), (회원번호, 이름, 나이), (회원번호, 주민등록번호, 성별), (회원번호, 주민등록번호, 나이), (주민등록번호, 이름), (주민등록번호, 나이, 성별) 등등이 될 수 있습니다.
※ 유일성: 각각의 튜플을 유일하게 구분하는 성질입니다. 예를들면 '성별'이란 속성의 경우 이 속성의 값을 가지고 검색하면 여러개의 튜플들이 검색되지만, '회원번호'의 경우 값을 통해서 검색하면 오로지 하나의 튜플만 찾아낼 수 있습니다. 타라서 '성별'은 유일성을 만족할 수 없지만, '회원번호'는 유일성을 만족합니다.
- 후보키(Candidate Key): 릴레이션에서 슈퍼키의 조건을 만족하면서, 튜플을 유일하게 구분하는데 필요한 최소한의 속성으로 구성된 키입니다. 유일성과 최소성을 모두 만족되어야 후보키가 될 수 있습니다.
[예시]: '회원번호', '주민등록번호'가 튜플을 유일하게 식별할 수 있습니다. 따라서 후보키는 '회원번호'와 '주민등록번호'가 됩니다.
※ 최소성: 최소한의 속성을 통해 각 튜플을 유일하게 구별해내는 성질입니다.
- 기본키(Primary Key): 후보키들 중에서 1개의 키를 선택한 것입니다. 기본키는 중복될 수 없으며, NULL을 가질 수 없습니다. 또한 후보키와 마찬가지로 유일성과 최소성을 만족해야 합니다.
[예시]: 후보키인 '회원번호', '주민등록번호' 둘 중에서 하나가 될 수 있습니다. '회원번호'를 기본키로 선택했다면, 기본키가 '회원번호'가 됩니다.
- 대체키(Alternate Key): 후보키 중에서 기본키를 제외한 속성들입니다.
[예시]: 후보키인 '회원번호'를 기본키로 설정했다면 '주민등록번호'가 대체키로 됩니다. 반대로 '주민등록번호'가 기본키라면 후보키는 '회원번호'가 됩니다.
- 외래키(Foreign Key): 한 릴레이션에서 다른 릴레이션을 참조할 때, 참조의 기준이 되는 속성입니다. 이는 참조하고자 하는 릴레이션의 기본키와 동일합니다. 그렇기에 외래키에서는 NULL이 올 수 없습니다. 다만 외래키의 속성명과 참조하는 릴레이션의 기본키 속성명이 일치하지 않아도 무방합니다.
2. 무결성 제약조건(Integrity Constraint)
무결성이란 데이터의 내용이 서로 모순되는 일이 없고, 데이터베이스에 걸린 제약을 완전히 만족하게 되는 성질을 뜻합니다. 이러한 무결성은 데이터베이스의 정합성과 안정성을 지켜줍니다. 무결성을 유지하기 위해 여러 제약조건들이 있는데, 제약조건에는 참조 무결성, 개체 무결성, 도메인 무결성, 이 있습니다.
- 개체 무결성: 기본키는 NULL이 올 수 없으며, 기본키를 구성하는 어떠한 속성값이라도 중복값이나 NULL값을 가질 수 없습니다.
- 참조 무결성: 참조할 수 없는 외래키 값은 가질 수 없습니다. 즉 외래키는 NULL값을 가질 수 없으며, 참조하는 릴레이션의 기본키와 동일해야합니다.
- 도메인 무결성: 각 속성값은 반드시 정의된 도메인(하나의 속성이 가질 수 있는 값들의 범위)만을 가져야합니다.