키와 무결성
쉽게 말하면
키는 수많은 자료 중에서 딱 한 건을 찾아내는 이름표예요. 학생 테이블에서 '이름'은 동명이인이 있어 이름표가 못 되지만 '학번'은 한 명만 가리켜요. 이렇게 겹치지 않는 필드를 기본 키로 정해요. 다른 테이블이 이 학번을 가져다 쓰면, 그쪽에서는 그 필드를 외래 키라고 불러요.
시험용 정의
키는 튜플을 구별하는 기준 속성이다. 슈퍼 키는 유일성(모든 튜플을 구별)만 있는 속성 집합, 후보 키는 유일성과 최소성(꼭 필요한 속성만으로 구성)을 모두 갖춘 키다. 후보 키 중 하나를 기본 키(Primary Key)로 정하고 나머지는 대체 키다. 외래 키(Foreign Key)는 다른 릴레이션의 기본 키를 참조하는 속성이다. 데이터의 정확성과 일관성을 지키는 무결성 제약 조건에는 개체 무결성(기본 키는 Null·중복 불가), 참조 무결성(외래 키 값은 참조하는 테이블의 기본 키 값이거나 Null), 도메인 무결성(정해진 값의 범위)이 있다. Access에서 기본 키는 디자인 보기에서 설정하며, 여러 필드로 만들 수 있고, 지정하지 않아도 테이블은 만들어진다(저장할 때 만들지 묻는다). 이미 데이터가 있는 필드도 중복·Null이 없으면 기본 키로 정할 수 있고, OLE 개체·첨부 파일 필드에는 정할 수 없다. 데이터시트 보기에서 새 테이블을 만들면 ID(일련 번호) 기본 키가 자동으로 생긴다. 관계에 쓰이는 기본 키를 해제하려면 관계를 먼저 삭제해야 한다.
비유로 이해하기
주민등록번호는 한 사람만 가리키는 기본 키다. 이름+생년월일+주소를 합쳐도 구별되지만 쓸데없이 길다(슈퍼 키). 회사 인사 기록에 적힌 주민등록번호는 주민 명부를 가리키는 외래 키다.
자세히
키의 종류
| 키 | 유일성 | 최소성 | 설명 |
|---|---|---|---|
| 슈퍼 키 | O | X | 구별은 되지만 필요 없는 속성이 섞여도 된다 |
| 후보 키 | O | O | 기본 키가 될 자격이 있는 키 |
| 기본 키 | O | O | 후보 키 중 고른 하나. Null·중복 불가 |
| 대체 키 | O | O | 기본 키로 고르지 않은 나머지 후보 키 |
| 외래 키 | - | - | 다른 테이블의 기본 키를 참조하는 필드 |
무결성 제약 조건
| 종류 | 규칙 |
|---|---|
| 개체 무결성 | 기본 키는 Null이나 중복 값을 가질 수 없다 |
| 참조 무결성 | 외래 키 값은 참조하는 테이블의 기본 키 값이거나 Null이다 |
| 도메인 무결성 | 필드 값은 정해진 범위(도메인) 안에 있어야 한다 |
Access 기본 키 규칙
- 디자인 보기에서 필드를 고르고 [기본 키] 단추. Ctrl로 여러 필드를 골라 복합 기본 키
- 지정하지 않아도 테이블은 저장된다 (저장할 때 만들지 묻는다)
- 값이 이미 들어 있어도 중복·빈 값이 없으면 지정 가능
- OLE 개체·첨부 파일 형식에는 지정할 수 없다
- 기본 키 필드는 자동으로 인덱스(중복 불가능)가 된다
- 관계가 설정된 기본 키를 해제하려면 관계를 먼저 지운다 (관계가 저절로 지워지지 않는다)
시험에 이렇게 나와요
- 기본 키 → Null·중복 불가, 여러 필드로도 지정 가능, 꼭 지정해야 하는 것은 아님
- 데이터가 있는 필드도 지정 가능, OLE 개체·첨부 파일에는 불가
- 관계가 있는 테이블의 기본 키 해제 → 관계를 먼저 삭제
- 외래 키 → 다른 테이블의 기본 키를 참조하는 필드
- 데이터의 정확성·일관성 보장 → 무결성 제약 조건
확인 문제
Q1. Access에서 기본 키에 대한 설명으로 옳은 것은?
- 모든 테이블에 반드시 지정해야 한다
- 반드시 하나의 필드에만 지정한다
- 여러 필드를 묶어 지정할 수 있다
- Null 값을 허용한다
정답 보기
3번 여러 필드를 묶어 지정할 수 있다
기본 키는 여러 필드를 묶어 만들 수 있다(복합 키). 기본 키에는 Null과 중복이 허용되지 않고, 지정하지 않아도 테이블은 만들어진다.
Q2. 유일성과 최소성을 모두 만족하는 키는?
- 슈퍼 키
- 외래 키
- 후보 키
- 복합 속성
정답 보기
3번 후보 키
후보 키다. 유일성(값이 겹치지 않음)과 최소성(꼭 필요한 속성만)을 모두 만족한다. 슈퍼 키는 유일성만, 외래 키는 다른 테이블의 기본 키를 참조하는 키다.
Q3. 사원(사번, 이름, 부서코드)과 부서(부서코드, 부서명)에서 외래 키는? (밑줄 없이 사번과 부서.부서코드가 각 기본 키)
- 사원 테이블의 부서코드
- 부서 테이블의 부서명
- 부서 테이블의 부서코드
- 사원 테이블의 사번
정답 보기
1번 사원 테이블의 부서코드
사원 테이블의 부서코드가 부서 테이블의 기본 키를 참조한다.
Q4. Access 기본 키에 대한 설명으로 옳지 않은 것은?
- 지정하지 않아도 테이블을 만들 수 있다
- 여러 필드를 묶어 지정할 수 있다
- Null 값을 넣을 수 없다
- 첨부 파일 필드에도 지정할 수 있다
정답 보기
4번 첨부 파일 필드에도 지정할 수 있다
OLE 개체·첨부 파일 형식에는 기본 키를 지정할 수 없다.
Q5. 기본 키에 Null과 중복 값을 허용하지 않는 규칙은?
- 정규화
- 참조 무결성
- 개체 무결성
- 도메인 무결성
정답 보기
3번 개체 무결성
참조 무결성은 외래 키에 대한 규칙이다.
헷갈리기 쉬운 O·X
관계가 설정된 테이블에서 기본 키를 해제하면 그 관계도 자동으로 삭제된다.
정답 보기
X 관계를 먼저 삭제해야 기본 키를 해제할 수 있다.
Access의 모든 테이블에는 기본 키를 반드시 지정해야 한다.
정답 보기
X 지정하지 않아도 테이블은 만들어진다. 다만 관계와 검색을 위해 지정하는 것이 좋다.