티스토리 뷰
정규형(Normal Form, NF)
: 릴레이션 스키마에 있는 함수종속의 유형에 따라 정규화된 정도를 등급으로 구별함
정규형 등급이 높아질수록 데이터의 중복이 적어지고 이상현상이 줄어듦
FD를 기반으로 하는 정규형
: 제1정규형 (first normal form: 1NF), 제2정규형 (second normal form: 2NF), 제3정규형 (third normal form: 3NF), 보이스-코드 정규형 (Boyce-Code normal form: BCNF)
그 외의 정규형
: 제4정규형 (fourth normal form: 4NF), 제5정규형 (fifth normal form: 5NF or PJNF))
1) 제1정규형 (first normal form: 1NF)
: 릴레이션에 있는 각 필드가 원자값들만을 포함하는 릴레이션
원자값 - 단일속성/단일값만 허용, 값들의 집합이나 리스트가 아님
관계형 DB는 원자값만을 허용하므로 모두 제1정규형
2) 제2정규형 (second normal form: 2NF)
: 제1정규형에 속하고, 기본키에 속하지 않은 각 속성이 기본키 전체에 완전함수종속인 릴레이션
즉, 기본키의 일부가 다른 속성을 함수종속(부분함수종속)하지 않는 릴레이션
- 완전 함수 종속 (full functional dependency)
복합 속성 X 에 대하여 X ->Y 가 성립할 때, X’⊂ X 이고 X’->Y 를 만족하는 속성 X’가 존재하지 않음
- 부분 함수 종속 (partial functional dependency)
복합 속성 X 에 대하여 X ->Y 가 성립할 때, X’⊂ X 이고 X’->Y 를 만족하는 속성 X’가 존재함
(기본키의 속성 일부가 또 다른 속성을 함수종속하는 것)
기본키가 하나의 속성이면, 각 속성은 기본키에 완전함수 종속
기본키가 하나면 복합 속성이 아니기 때문에 모든 속성이 기본키에 완전함수종속
3) 제3정규형 (third normal form: 3NF)
F 에 있는 모든 FD X → A 가 적어도 다음 중 하나를 만족하면, 릴레이션 스키마 R은 제 3정규형
i) A ∈ X (재귀규칙)
ii) X 는 R 의 수퍼키
iii) A 는 R 에 대한 키의 일부분
어떤 FD X → A 가 3NF 를 위배하는 경우
X 는 어떤 키 K의 진부분집합이다. (부분 종속성)
X 는 어떤 키 K의 진부분집합도 아니다. (이행 종속성)
4) 보이스-코드 정규형 (Boyce-Code normal form: BCNF)
F 에 속한 모든 FD X → A 가 적어도 다음 중 하나를 만족하면, 릴레이션 스키마 R 은 BCNF
i) A ∈ X (재귀규칙)
ii) X 는 R의 수퍼키
X | Y | A |
10 | y1 | 20 |
10 | y2 | ? |
- BCNF는 데이터의 중복을 허락하지 않음
만약 X → A 이라고 가정하면 두 번째 투플의 애트리뷰트 A 값도 20이 됨.
BCNF라면, FD X → A 에 의해 X가 수퍼키이어야 하므로 y1 = y2 가 되고 두 투플이 동일.
관계형 DB에서는 동일한 튜플이 존재하지 못하므로 BCNF는 데이터의 중복이 있을 수 없음.
무손실 분해(Lossless-Join decomposition)
- R : 릴레이션 스키마, F : FD의 집합, R1, R2 : R의 분해
- IFF F+가 FD R1∩R2 → R1 혹은 R1∩R2 → R2를 포함하면, 이 분해는 무손실 조인 분해이다.
ex) R = {SNLRWH}을 R1 = {SNLRH}, R2 = {RW}로 분해 / FD = {S → SNLRWH, R → W}
R1∩R2 = {R}, R → W 에 의해 R → RW(R2) 이므로 R1∩R2 → R2 (무손실 분해)
'cs > DB' 카테고리의 다른 글
[데이터베이스/Database] 인덱싱 (0) | 2021.04.02 |
---|---|
[데이터베이스/Database] 힙 파일, 정렬 파일, 해시 기반 파일 (0) | 2021.04.02 |
[데이터베이스/Database] 함수 종속성과 폐포(암스트롱 공리) (0) | 2021.03.18 |
[데이터베이스/Datebase] 스키마 분해/정제 (0) | 2021.03.14 |
[데이터베이스/Datebase] SQL DDL/DML 정리 (0) | 2021.01.16 |