학습 목표
속성 집합의 유일성과 최소성을 따로 검사한다.
본문
핵심 이론
슈퍼키는 튜플을 유일하게 식별하며 후보키는 더 줄일 수 없는 최소 슈퍼키다. 후보키 중 선택한 것이 기본키, 나머지는 대체키다. 후보키 구성 속성은 주요 속성이다.
속성 폐포 X+는 X로부터 함수 종속을 반복 적용하여 얻는 속성 집합이다. 전체 속성을 얻는지 확인하고 각 속성을 빼서 최소성을 검사한다.
개체 무결성은 기본키의 NULL·중복 금지, 참조 무결성은 외래키의 유효한 참조, 도메인 무결성은 허용 값 범위다. 외래키 NULL은 NOT NULL 등 다른 제약이 없으면 허용될 수 있다.
외부 스키마는 사용자 관점, 개념 스키마는 전체 논리 구조, 내부 스키마는 물리 저장이다. 물리적 독립성은 내부 변경을 개념 수준에서, 논리적 독립성은 개념 변경을 외부 수준에서 흡수한다. 릴레이션 차수는 열 수, 카디널리티는 행 수다.
개념 도식
키를 찾을 때 유일성과 최소성을 따로 검사한다
슈퍼키는 행을 유일하게 구별하는 속성 집합, 후보키는 그중 불필요한 속성을 뺄 수 없는 최소 집합이다. 후보키 중 하나를 기본키로 선택하고 나머지는 대체키가 된다. 현재 표에서 우연히 중복이 없다는 사실만으로 모든 미래 데이터의 키라고 단정하지 않는다.
A→B, B→A, C→D만 있다면 AC로 A·
| 무결성 | 핵심 검사 |
|---|---|
| 개체 무결성 | 기본키의 중복·NULL 금지 |
| 참조 무결성 | 외래키의 비NULL 값이 허용된 참조키에 존재 |
| 도메인 무결성 | 속성값의 형식·범위·허용값 충족 |
3단계 스키마는 사용자별 관점인 외부, 전체 논리 구조인 개념, 저장 구조인 내부다. 내부 저장 배치를 바꿔도 논리 구조를 유지하면 물리적 데이터 독립성에 해당한다. 릴레이션의 디그리는 열 수, 카디널리티는 행 수라는 방향도 함께 확인한다.
풀이 예시
다음 릴레이션의 기본키는 (room_id, slot)이다. 1번과 2번 행은 이미 저장되어 있다. 후보 3번, 4번을 각각 독립적으로 삽입할 때 기본키 제약조건을 위반하는 행 번호를 모두 쓰시오.
| 번호 | room_id | slot | person |
|---|---|---|---|
| 1 | R1 | 1 | 가 |
| 2 | R1 | 2 | 나 |
| 3 | R1 | 1 | 다 |
| 4 | R2 | NULL | 라 |
정답과 풀이 보기
예시 정답
3, 4
풀이 과정
3번은 기존 1번과 기본키 조합이 같아 유일성을 위반한다. 4번은 기본키의 구성 속성 slot이 NULL이므로 개체 무결성을 위반한다. person이 다르다고 기본키 중복이 허용되지는 않는다.