제1정규형(1NF)
-
릴레이션의 모든 속성이 원자 값을 가진다.
-
릴레이션에서 속성의 값은 속성의 도메인에 속하는 단일 값이어야 한다는 제약을 의미한다.
| 학번 | 이름 | 학과 |
| ---------- | ------ | -------------------------- |
| 2019100100 | 홍길동 | {컴퓨터공학과, 전기공학과} |
| 2019100051 | 임꺽정 | 컴퓨터공학과 |
| 2019155015 | 논개 | 전기공학과 | -
학생은 복수 전공을 통해 최대 두 학과에 소속될 수 있기 때문에 학과 속성은 다치값을 갖는다.
-
이 릴레이션을 제1정규형으로 만드는 방법은 2가지가 있다.
- 학과 속성의 다치값을 위해서 하나의 레코드를 생성하여 새 릴레이션을 만든다.
- 제1정규형으로 변한된 학과 릴레이션
| 학번 | 이름 | 학과 |
| ---------- | ------ | ------------ |
| 2019100100 | 홍길동 | 컴퓨터공학과 |
| 2019100100 | 홍길동 | 전기공학과 |
| 2019100051 | 임꺽정 | 컴퓨터공학과 |
| 2019155015 | 논개 | 전기공학과 |- 기존의 릴레이션을 학생 릴레이션과 학과 릴레이션으로 분리한다.
- 제1정규형으로 두개의 테이블로 분리된 학생 릴레이션
| 학번 | 이름 |
| ---------- | ------ |
| 2019100100 | 홍길동 |
| 2019100051 | 임꺽정 |
| 2019155015 | 논개 |- 제1정규형으로 두개의 테이블로 분리된 학과 릴레이션
| 학번 | 학과 |
| ---------- | ------------ |
| 2019100100 | 컴퓨터공학과 |
| 2019100100 | 전기공학과 |
| 2019100051 | 컴퓨터공학과 |
| 2019155015 | 전기공학과 |
제2정규형(2NF)
-
완전 함수 종속성 개념에 기반을 둔다.
-
아래 예시 릴레이션은 공급자번호+부품번호가 기본키이다.
-
부품 공급 릴레이션
| 공급자번호 | 부품번호 | 운송거리 | 소재지 | 수량 |
| ---------- | -------- | -------- | ------ | ---- |
| S1 | P1 | 46 | 수원 | 300 |
| S1 | P2 | 46 | 수원 | 200 |
| S1 | P3 | 46 | 수원 | 400 |
| S1 | P4 | 46 | 수원 | 200 |
| S1 | P5 | 46 | 수원 | 100 |
| S1 | P6 | 46 | 수원 | 100 |
| S2 | P1 | 164 | 대전 | 300 |
| S2 | P2 | 164 | 대전 | 400 |
| S3 | P2 | 302 | 대구 | 200 |
| S4 | P2 | 329 | 광주 | 200 |
| S4 | P4 | 329 | 광주 | 300 |
| S4 | P6 | 329 | 광주 | 400 | -
삽입이상
- 공급자가 S5가 부산에 위치한다는 데이터를 저장하고 싶은 경우, 이 정보를 삽입할 수 없다.
- 릴레이션의 기본키가 (공급자번호, 부품번호)로 구성되어 있는데 (S5, 부산) 데이터에는 부품번호가 포함되어 있지 않기 때문이다.
-
삭제이상
- S3에 대한 레코드는 하나뿐인데 S3가 부품 P2를 공급한다는 사실을 삭제할 경우, S3가 대구에 위치하는 사실도 삭제된다.
- 공급자 S3가 대구에 위치하는 사실은 S3의 부품공급 여부와 관계없이 사용자가 보존해야하는 필요한 정보이지만 삭제가 된다.
-
갱신이상
- S1의 소재지는 수원이다. 만약 S1이 전주로 이주한다면 S1의 모든 레코드가 갱신되어야 한다.
- 극단적인 경우 S1의 소재지가 수원과 전주 두곳이 되는 일관성 없는 데이터가 발생할 수 있다.