기본키
태그 :
- 개념
- 후보키(candidate key)중 데이터베이스 설계자가 선정하는 하나의 키
1.Key의 개념
가. Key의 정의
- 릴레이션의 튜플(tuple)을 유일하게 식별할 수 있는 애트리뷰트(속성)의 집합
- 여러 개의 집합체를 담고 있는 하나의 엔티티 타입에서 각각의 엔티티를 구분할 수 있는 결정자
특징 |
내용 |
비고 |
유일성 |
식별자에 의해 엔티티타입내에 모든 엔티티들이 유일하게 구분 |
예 주민등록번호 주식별자가 모든 사람을 고유하게 식별할 수 있음 |
최소성 |
최소한의 속성으로 식별자 구성 |
예. 이미 주민번호하나만으로 유일성을 확보할 수 있는데 구분코드+주민번호 PK구성은 최소성을 위배함 |
불변성 |
식별자가 한 번 특정 엔티티를 지정되면 그 식별자는 변하지 않아야 함 |
예. 주민등록번호 가 변한다는 의미는 이전기록이 말소가 되고 새로운 기록이 발생되는 개념임 |
존재성 |
식별자가 지정되면 반드시 데이터 값이 존재 |
예. 주민등록번호 없는 대한민국 국민은 있을 수 없음 |
나. Key의 종류
종류 |
정 의 |
후보키 (candidate key)
|
- 릴레이션 R(A1, A2, ..., An)에 대한 애트리뷰트 집합 A = { A1, A2, ..., An }, K = { Ai , Aj , ..., Ak }에 대하여, K Í A 인 K가 아래 성질을 만족하면 후보키 - 유일성(uniqueness) : K (= { Ai , Aj , ..., Ak }) 의 값(< Vi , Vj , ..., Vk >)은 유일 - 최소성(minimality) : K는 투플을 유일하게 식별하기 위해 필요한 최소의 애트리뷰트로 구성 |
슈퍼키 (super key) |
- 유일성(uniqueness)은 만족하지만 최소성(minimality)을 보장하지는 않는 키의 집합 |
기본키 (primary key) |
- 후보키(candidate key)중 데이타베이스 설계자가 선정하는 하나의 키 - Minimal super key |
대체키 (alternate key) |
- 후보키중에 기본키를 제외한 나머지 후보키 |
외래키 (foreign key) |
- 릴레이션 R1에 속한 애트리뷰트(집합)FK가 릴레이션 R2의 기본키일 때 FK는 R1의 외래키이다. - (FK의 도메인) = (R2의 기본키의 도메인) - FK의 값은 R2에 존재하는 값이거나 null이다. - R1과 R2가 반드시 다른 릴레이션일 필요는 없다. - R1을 참조 릴레이션(referencing relation), R2를 참조된 릴레이션(referenced relation)이라 한다. |
2. 엔티티타입의 주 식별자인 기본키(Primary Key)의 개념
가.기본키(Primary Key, PK)의 정의
- 후보키(candidate key)중 데이타베이스 설계자가 선정하는 하나의 키
- 기본키(Primary Key)는 엔티티 타입을 대표하는 주 식별자임
나.주식별자와 보조식별자의 개념
구 분 |
정 의 |
사 용 |
주식별자 |
엔티티타입을 대표성을 나타내는 유일한 식별자 |
물리적인 테이블에서 PRIMARY KEY로 지정 |
보조식별자 |
엔티티타입을 식별할 수 있는 속성이 한 개 이상일 때 하나는 주 식별자로 선택하고 그 나머지를 보조식별자로 지정 |
물리적인 테이블에서 UNIQUE INDEX로 지정 |
다.기본키(Primary key)의 특징
특징 |
내용 |
비고 |
유일성 |
식별자에 의해 엔티티타입 안의 모든 엔티티 들이 유일하게 구분 |
예. 주민등록번호 : 주식별자가 모든 사람을 고유하게 식별 할 수 있음 |
최소성 |
최소한의 속성으로 식별자 구성 |
예. 이미 주민번호 하나만으로 유일성을 확보할 수 있는데 구분코드+주민번호로 PK를 구성하는 것은 최소성을 위배함 |
불변성 |
식별자가 한 번 특정 엔티티로 지정되면 그 식별자는 변하지 않아야 함 |
예. 주민등록번호가 변한다는 의미는 이전 기록이 말소가 되고 새로운 기록이 발생되는 개념임 |
존재성 |
식별자가 지정되면 반드시 데이터 값이 존재 |
예. 주민등록번호 없는 대한민국 국민은 있을 수 없음 |
3. 기본키(Primary key)의 선정 기준
선정기준 |
내용 |
1. 속성의 사용 빈도 |
해당업무에서 빈번하게 사용하는 속성으로 지정. 사례) 사원번호는 주 식별자, 주민등록번호는 보조 식별자 선정 |
2. 명칭, 내역 등의 이름 속성은 제외 |
명칭, 내역 등과 같이 이름으로 기술되는 것들은 주 식별자로 선정하기 부적절함 이유) 부서명을 주 식별자로 선정하면 물리DB 테이블 생성시 부서명이 조건절(where)에 기술되거나, 부서명이 20자 이상으로 길어질 수 있으므로 제외 방안1- 부서에 부서코드를 부여하여 주 식별자로 사용 방안2- 부서일련번호(부서번호)를 주 식별자, 부서명은 보조 식별자로 선정 |
3. 과도한 복합키 배재 |
- 주식별자 속성 개수 최대 7~8개 이내로 유지 -방안 : 주식별자 속성 수가 8개 이상 시, 모델 단순화를 위해 새로운 식별자 (Artificial Identifier)를 주식별자로 선정 사례) 접수정보 7개 이상의 복잡한 속성 |
[참고] Key의 분류
구분 |
식별자 |
정의 |
대표성 |
주 식별자 (Primary Key) |
- 테이블의 Primary key로 엔티티 타입의 대표성을 나타내는 식별자 - 하나의 엔티티타입에 주식별자가 한 개 존재 |
보조 식별자 (Candidate Key) |
- 테이블의 Unique Index - 주식별자를 선정하고 나머지 속성은 보조식별자로 지정 - 엔티티타입 하나에 한 개 이상 |
|
스스로 생성 |
내부식별자, |
자신의 엔티티타입 내에 존재 하는 식별자 |
외부식별자 (Foreign Key) |
타 엔티티타입의 식별자가 자신의 속성으로 포함된 것 |
|
단일속성 |
단일식별자, |
한 개의 식별자가 엔티티타입을 유일하게 대표 |
복합식별자 |
여러 개의 식별자가 합쳐진 식별자 |
|
대체여부 |
대리식별자 (Surrogate Identifier) |
주식별자의 속성이 복합 식별자일 경우 여러 개의 속성을 묶어 하나의 속성으로 만들어 주식별자로 활용하는 경우, 이때의 식별자를 대리식별자라 함 방법 1) 주 식별자 속성을 일반속성으로 내리고 일련번호 형태를 주 식별자로 사용 방법 2) 여러개의 속성을 한데 묶어서 하나의 주문번호로 대리 식별자를 생성 |
원조식별자 |
원래의 식별자 |