테마
관계형 모델과 키·무결성
관계형 모델(relational model)은 데이터를 행과 열로 된 표, 즉 릴레이션(relation)으로 담는 방식이다. 에드거 코드(Edgar F. Codd)가 1970년에 제안했다. 실기 시험은 표의 각 부분을 부르는 이름, 다섯 가지 키의 정의, 무결성(integrity) 규칙을 짧게 묻는다. 튜플(tuple) 수와 속성 수를 세게 하는 문제도 나온다.
릴레이션의 구성
릴레이션은 수학의 집합에서 나온 개념이라 부분마다 이름이 따로 있다.
| 용어 | 뜻 | 다른 이름 |
|---|---|---|
| 튜플 | 한 행 | 레코드 |
| 속성 | 한 열, 가장 작은 논리 단위 | 필드, 애트리뷰트 |
| 도메인(domain) | 한 속성이 가질 수 있는 원자값의 집합 | |
| 차수(degree) | 속성의 수 | 디그리 |
| 기수(cardinality) | 튜플의 수 | 카디널리티 |
예를 들어 학번·이름·학년·학과 네 열에 학생 다섯 명이 들어 있으면 차수는 4, 기수는 5다. 학년 도메인이 1~4라면 5학년 값은 들어갈 수 없다. 구조를 릴레이션 스키마(schema), 어느 시점의 튜플들을 릴레이션 인스턴스라 한다. 릴레이션에는 같은 튜플이 두 번 들어갈 수 없고, 튜플과 속성 사이에 순서가 없다.
키의 종류
키(key)는 튜플을 구별하는 속성의 집합이다. 행을 특정하지 못하면 수정·삭제 대상을 정할 수 없어 필요하다. 키를 이해하는 두 기준은 유일성(uniqueness)과 최소성(minimality)이다. 유일성은 키 값이 같은 튜플이 둘 없다는 뜻이고, 최소성은 속성 하나라도 빼면 유일성이 깨진다는 뜻이다.
| 키 | 정의 | 유일성 | 최소성 |
|---|---|---|---|
| 슈퍼키(superkey) | 튜플을 유일하게 구별하는 속성 집합 | ○ | × |
| 후보키(candidate key) | 슈퍼키 가운데 최소성까지 갖춘 것 | ○ | ○ |
| 기본키(primary key) | 후보키 중 대표로 고른 하나 | ○ | ○ |
| 대체키(alternate key) | 기본키로 뽑히지 않은 나머지 후보키 | ○ | ○ |
| 외래키(foreign key) | 다른 릴레이션의 기본키를 참조하는 속성 |
학번과 주민번호가 모두 유일하면 둘 다 후보키다. {학번, 이름}은 이름을 빼도 유일하므로 슈퍼키일 뿐이다. 학번을 기본키로 고르면 주민번호는 대체키(보조키라고도 한다)가 된다.
외래키(foreign key)는 릴레이션 사이 관계를 표현한다. 수강 릴레이션의 학번이 학생 릴레이션의 학번을 참조하면 수강.학번이 외래키다.
무결성 규칙
무결성(integrity)은 데이터베이스에 저장된 값이 현실의 실제 값과 맞고 모순이 없는 상태다. DBMS가 규칙을 강제하지 않으면 잘못된 값이 조용히 쌓이므로, 관계형 모델은 다음 규칙을 둔다.
| 무결성 | 규칙 |
|---|---|
| 개체 무결성 | 기본키를 이루는 속성은 NULL(값 없음)도, 중복 값도 가질 수 없다 |
| 참조 무결성 | 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값 중 하나다 |
| 도메인 무결성 | 속성 값은 정의된 도메인에 속해야 한다 |
| 고유 무결성 | UNIQUE로 지정한 속성은 값이 중복되지 않는다 |
| NULL 무결성 | NOT NULL로 지정한 속성은 NULL일 수 없다 |
| 키 무결성 | 한 릴레이션에는 키가 하나 이상 있어야 한다 |
NULL은 값이 없거나 알 수 없다는 뜻이라, 기본키가 NULL이면 그 튜플을 가리킬 수 없다. 시험에는 개체·참조·도메인 무결성이 가장 자주 나온다.
시험 포인트
- 속성 수 → 차수(degree), 튜플 수 → 기수(cardinality). 헷갈리면 "카드 장수가 행 수"로 외운다.
- "유일성은 만족하지만 최소성은 만족하지 못한다" → 슈퍼키. "유일성과 최소성 모두" → 후보키.
- "후보키 중 기본키를 제외한 나머지" → 대체키.
- "기본키는 NULL·중복 불가" → 개체 무결성. "외래키는 NULL이거나 참조 기본키 값" → 참조 무결성.
