FD and Normalization
๋ฆด๋ ์ด์
์คํค๋ง๋ฅผ ์ค๊ณํ๋ ๋ช ๊ฐ์ง ๊ฐ๋ต์ ์ธ ์ง์นจ
๋จผ์ ์ข์ ๋ฆด๋ ์ด์
์ค๊ณ์ ๊ดํ ๊ฐ๊ด์ ์ธ ์ง์นจ์ ๋
ผ์ํ ํ, ํจ์์ ์ข
์์ฑ๊ณผ ์ ๊ทํ ๊ฐ๋
์ ๊ดํด ๋
ผ
์ํจ
- ์ ๊ทํ์ ์ข
๋ฅ
- 1NF (์ 1์ ๊ทํ)
- 2NF (์ 2์ ๊ทํ)
- 3NF (์ 3์ ๊ทํ)
- BCNF (Boyce-Codd ์ ๊ทํ)
- 4NF (์ 4์ ๊ทํ)
- 5NF (์ 5์ ๊ทํ)
๋ฆด๋ ์ด์
์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ์๋ฏธ
- ๋ฆด๋ ์ด์
์คํค๋ง๋ฅผ ํ์ฑํ๊ธฐ ์ํด ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ์ง๋จํ ํ๋ ๊ฒฝ์ฐ, ํ ๋ฆด๋ ์ด์
์ ์ํ๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ ์ค์ธ๊ณ์์ ์ด๋ค ์๋ฏธ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
- ์ฌ๋ฌ ์ํฐํฐ(EMPLOYEE, DEPARTMENT, PROJECT)์ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ด ํ๋์ ๋ฆด๋ ์ด์
์ ํผํฉ๋๋ฉด ์๋ฏธ๊ฐ ๋ถ๋ช
ํํด์ง๋ฏ๋ก ์ข์ง ์์.
- ํ๋์ ๋ฆด๋ ์ด์
์ ํ๋์ ์ํฐํฐ๋ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด ๋ฐ๋์งํจ
- ๋ค๋ฅธ ์ํฐํฐ๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด์๋ ์ธ๋ํค ๋ง์ ์ฌ์ฉํด์ผ ํ๋ค.
Anomaly์ ์
- ์ญ์ ์ด์(deletion anomaly)
- 200๋ฒ ํ์์ด โC123โ์ ๋ฑ๋ก์ ์ทจ์
- 3ํ๋
์ด๋ผ๋ ์ ๋ณด๋ ํจ๊ป ์ญ์ ๋จ
- ์ฐ์ ์ญ์ (triggered deletion)์ ์ํ ์ ๋ณด์ ์์ค(loss of information)
- ์ฝ์
์ด์(insertion anomaly)
- 600๋ฒ ํ์์ด 2ํ๋
์ด๋ผ๋ ์ฌ์ค์ ์ฝ์
- ์ด๋ค ๊ณผ๋ชฉ์ ๋ฑ๋กํ์ง ์๋ ํ ์ฝ์
์ด ๋ถ๊ฐ๋ฅ
- (โต ๊ณผ๋ชฉ ๋ฒํธ๊ฐ ๊ธฐ๋ณธ ํค)
- ์ํ์ง ์๋ ์ ๋ณด์ ๊ฐ์ ์ฝ์
- ๊ฐฑ์ ์ด์(update anomaly)
- 400๋ฒ ํ์์ ํ๋
์ 4์์ 3์ผ๋ก ๋ณ๊ฒฝ
- ํ๋ฒ์ด 400์ธ 4๊ฐ์ ํฌํ ๋ชจ๋๋ฅผ ๊ฐฑ์ ์์ผ์ผ ํจ
- ์ค๋ณต๋ฐ์ดํ์ ์ผ๋ถ ๊ฐฑ์ ์ผ๋ก ์ ๋ณด์ ๋ชจ์์ฑ(inconsistency) ๋ฐ์
๊ฒฐ๋ก :
์ ํธ๋ฆฌ๋ทฐํธ๋ค ๊ฐ์ ์ข
์๊ด๊ณ๋ฅผ ๋ถ์ํ์ฌ ์ฌ๋ฌ๊ฐ์ ๋ฆด๋ ์ด์
์ผ๋ก ๋ถํด(decomposition) โ ์ ๊ทํ(normalization)
ํํ์ NULL ๊ฐ
- ๋ฆด๋ ์ด์
์ ํฌํ๋ค์ด (๊ฐ๊ธ์ ) ๋ ๊ฐ์ ๊ฐ์ง์ง ์๋๋ก ์ค๊ณํด์ผ ํจ
- ๋ ๊ฐ์ ์ ์ฅ ๋จ๊ณ์์ ๊ณต๊ฐ์ ๋ญ๋นํ๊ฒ ๋๊ณ
- ๋
ผ๋ฆฌ์ ์ฐจ์์์๋ ์กฐ์ธ ์ฐ์ฐ๋ค์ ์ง์ ํ๊ธฐ ํ๋ค๊ณ
- ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ์๋ฏธ๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ค์
- COUNT๋ AVG์ ๊ฐ์ ์ง๋จ ํจ์๋ค์ด ์ ์ฉ๋์์ ๋ ๋ ๊ฐ์ ํด์์ด ๋ชจํธํจ
- ๋ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ง๋ก ํด์์ด ๊ฐ๋ฅํจ
- ๊ทธ ์ ํธ๋ฆฌ๋ทฐํธ๊ฐ ์ด ํฌํ์๋ ์ ์ฉ๋์ง ์๋๋ค. (์กด์ฌ ์ฌ๋ถ๋ฅผ ๋ชจ๋ฅธ๋ค)
- ์ด ํฌํ์์ ์ ํธ๋ฆฌ๋ทฐํธ์ ๊ฐ์ด ์์ง ์๋ ค์ ธ ์์ง ์๋ค (์กด์ฌํ์ง๋ง ๋ชจ๋ฅธ๋ค).
- ์ ํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด ์๋ ค์ ธ ์์ง๋ง DB์ ๊ธฐ๋ก๋์ง๋ ์์๋ค.
- ๋ชจ๋ ๋ ๊ฐ์ ๋์ผํ๊ฒ ํํํ๋ฉด ๋ ๊ฐ์ด ๊ฐ๋ ์ฌ๋ฌ ์๋ฏธ๋ฅผ ํผ์ํ๊ฒ ๋๋ค.
- ๋ ๊ฐ์ ๋ฐฉ์ง ๊ธฐ๋ฒ : ๋ฆด๋ ์ด์
์ ๋ถ๋ฆฌ
- ๋ ๊ฐ์ด ๋ง์ด ๋ํ๋๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ๋ณ๋ ๋ฆด๋ ์ด์
์ผ๋ก ๋ถ๋ฆฌํจ
- ์: ์ฌ์๋ค ์ค 10%๋ง์ด ์๊ธฐ์ ์ฌ๋ฌด์ค์ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ, ์ฌ์ ๋ ์ฝ๋์ 90%๋ ๋ ๊ฐ์ผ๋ก ์ฑ์์ง
์ ๋ณด์ ๋ณํ์ผ๋ก ์ธํ ๊ฐ์ง ํฌํ (Spurious Tuple)
- ๊ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ๋ฅผ ์๋ชปํ๊ฒ ๋๋ฉด, ์กฐ์ธ ์ฐ์ฐ๋ค์ด ํ๋ฆฐ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ์ ์๋ค.
- ์กฐ์ธ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ฅด๊ธฐ ์ํด์๋, ๋ฆด๋ ์ด์
๋ค์ด โ๋ฌด์์ค ์กฐ์ธ(lossless join)โ ์กฐ๊ฑด์ ๋ง์กฑํ๋๋ก ์ค๊ณ๋์ด์ผ ํ๋ค.
- ๋ฌด์์ค ์กฐ์ธ ํน์ฑ: ์๋์ ๋ฆด๋ ์ด์
์ ๋ถํดํ์ฌ ๋ ๋ฆด๋ ์ด์
์ ์์ฑํ๋ ๊ฒฝ์ฐ, ๋ถํด๋ ๋ ๋ฆด๋ ์ด์
์ ์กฐ์ธํ๋ฉด ์๋์ ๋ฆด๋ ์ด์
์ด ๋ณต์๋์ด์ผ ํ๋ค.
- ๋ฌด์์ค ์กฐ์ธ ํน์ฑ์ด ๋ง์กฑ๋์ง ์์ผ๋ฉด ์กฐ์ธ ์ ์๋์ ๋ฆด๋ ์ด์
์ ์๋ ๊ฐ์ง ํฌํ์ด ๋ฐ์ํจ.
- ๋ถํด ์ (๊ธฐ๋ณธํค, ์ธ๋ํค) ์กฐํฉ์ ์ด์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํจ
- ํค๊ฐ ์๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ฅผ ๋งค๊ฐ๋ก ๋ถํดํ๋ฉด ์กฐ์ธ ์ ๊ฐ์ง ํฌํ์ด ๋ฐ์ํ ์ ์์
ํจ์์ ์ข
์์ฑ(FD)
- ํจ์์ ์ข
์์ฑ(FD: functional dependency)์ ์ข์ ๋ฆด๋ ์ด์
์ค๊ณ์ ์ ํ์ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉ๋๋ค.
- FD์ ํค๋ ๋ฆด๋ ์ด์
์ ์ ๊ทํ์ ์ ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
- FD๋ ๋ฐ์ดํฐ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ์๋ฏธ์ ์ ํธ๋ฆฌ๋ทฐํธ๋ค ๊ฐ์ ์ํธ ๊ด๊ณ๋ก๋ถํฐ ์ ๋๋๋ ์ ์ฝ์กฐ๊ฑด(constraints)์ ์ผ์ข
์ด๋ค.
ํจ์์ ์ข
์์ฑ์ ์ ์ (1/2)
- ํจ์์ ์ข
์์ฑ
- X์ Y๋ฅผ ์์์ ์ ํธ๋ฆฌ๋ทฐํธ ์งํฉ์ด๋ผ๊ณ ํ ๋, X์ ๊ฐ์ด Y์ ๊ฐ์ ์ ์ผํ๊ฒ(unique) ๊ฒฐ์ ํ๋ค๋ฉด โX๋ Y๋ฅผ ํจ์์ ์ผ๋ก ๊ฒฐ์ ํ๋ค(functionally determines)โ๋ผ๊ณ ํจ
- X โ Y๋ก ํ๊ธฐํ๊ณ , โY๋ X์ ํจ์์ ์ผ๋ก ์ข
์๋๋คโ ๋ผ๊ณ ํจ
- X๋ฅผ ๊ฒฐ์ ์(determinant)
- Y๋ฅผ ์ข
์์(dependent)
- ํจ์์ ์ข
์์ฑ์ ๋ชจ๋ ๋ฆด๋ ์ด์
์ธ์คํด์ค r(R)์ ๋ํ์ฌ ์ฑ๋ฆฝํด์ผ ํจ
- ํจ์์ ์ข
์์ฑ์ ๊ฒ์ฌ ๋ฐฉ๋ฒ
- ๋ฆด๋ ์ด์
์ธ์คํด์ค r(R)์ ์ํ๋ ์ด๋ ํ ์์์ ๋ ํฌํ์ ๋ํด์๋ ์์ฑ๋ค์ ์งํฉ X์ ๋ํด ๋์ผํ ๊ฐ์ ๊ฐ์ง ๋๋ง๋ค Y์ ๋ํด์๋ ๋์ผํ ๊ฐ์ ๊ฐ์ง๋ค๋ฉด X โ Y๋ผ๋ ํจ์์ ์ข
์์ฑ์ด ์ฑ๋ฆฝํ๋ค.
- ์ฆ, r(R)์์์ ์์์ ๋ ํฌํ t1๊ณผ t2์ ๋ํด t1[X] = t2[X]์ด๋ฉด, t1[Y] = t2[Y]์ด๋ค.
- FD ์ ์ฝ์กฐ๊ฑด์ ์์
- ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ๋ ์ฌ์์ ์ด๋ฆ์ ๊ฒฐ์ ํ๋ค.
- ํ๋ก์ ํธ ๋ฒํธ๋ ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ์์น๋ฅผ ๊ฒฐ์ ํ๋ค.
- PNUMBER โ {PNAME, PLOCATION}
- ์ฌ์์ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ์ ํ๋ก์ ํธ ๋ฒํธ๋ ๊ทธ ์ฌ์์ด ์ผ์ฃผ์ผ ๋์ ๊ทธ ํ๋ก์ ํธ์ ์ํด์ ์ผํ๋ ์๊ฐ์ ๊ฒฐ์ ํ๋ค.
- FD๋ ์คํค๋ง R์ ์๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ํน์ฑ์ด๋ฉฐ, ๋ชจ๋ ๋ฆด๋ ์ด์
์ธ์คํด์ค r(R)์์ ์ฑ๋ฆฝํด์ผ ํ๋ ์ฑ์ง์ด๋ค.
- K๊ฐ R์ ํค์ด๋ฉด K๋ R์ ๋ชจ๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ํจ์์ ์ผ๋ก ๊ฒฐ์ ํ๋ค.
- (t1[K] = t2[K]์ธ ์๋ก ๋ค๋ฅธ ๋ ํฌํ์ด ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์).
์์ ํจ์ ์ข
์๊ณผ ๋ถ๋ถ ํจ์ ์ข
์
๋ณตํฉ ์ ํธ๋ฆฌ๋ทฐํธ X์ ๋ํ์ฌ X ยฎY๊ฐ ์ฑ๋ฆฝํ ๋
- ์์ ํจ์ ์ข
์ (full functional dependency)
- Xโ โ X ์ด๊ณ Xโ โ Y ๋ฅผ ๋ง์กฑํ๋ ์ ํธ๋ฆฌ๋ทฐํธ Xโ์ด ์กด์ฌํ์ง ์์
- ๋ถ๋ถ ํจ์ ์ข
์ (partial functional dependency)
- Xโ โ X ์ด๊ณ Xโ โ Y ๋ฅผ ๋ง์กฑํ๋ ์ ํธ๋ฆฌ๋ทฐํธ Xโ์ด ์กด์ฌํจ
ํจ์ ์ข
์์ ๋ํ ์ถ๋ก ๊ท์น
- R1: (๋ฐ์ฌ, reflexive) A โ B์ด๋ฉด A โ B์ด๋ค. ๋ํ A โ A์ด๋ค
- R2: (์ฒจ๊ฐ, augmentation) A โ B์ด๋ฉด AC โ BC์ด๊ณ AC โ B์ด๋ค.
- R3: (์ดํ, transitive) A โ B์ด๊ณ B โ C์ด๋ฉด A โ C์ด๋ค.
- R4: (๋ถํด, decomposition) A โ BC์ด๋ฉด A โ B์ด๋ค.
- R5: (๊ฒฐํฉ, union) A โ B์ด๊ณ A โ C์ด๋ฉด A โ BC์ด๋ค.
Note
- ํจ์ ์ข
์์ ๋ฐ์ดํ์ ์๋ฏธ(data semantics) ๋ฅผ ํํ
- ์: โํ๋ฒ โ ํ๋
โ์ ์๋ฏธ๋ โํ์์ ํ๋์ ํ๋
์๋ง ์ํ๋คโ
- ์๋ฏธ์ ์ ์ฝ ์กฐ๊ฑด
- DBMS๋ ํจ์ ์ข
์์ ์ ์งํ๊ธฐ ์ํ์ฌ ํจ์ ์ข
์์ ์คํค๋ง์ ๋ช
์ธํ๋ ๋ฐฉ๋ฒ๊ณผ ํจ์ ์ข
์์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ์ผ ํจ
์ ๊ทํ(normalization)
- ์ ๊ทํ(normalization)
- ๊ฐ๋
: ์๋ก ๋
๋ฆฝ์ ์ธ ๊ด๊ณ(relationship)๋ ๋ณ๊ฐ์ ๋ฆด๋ ์ด์
์ผ๋ก ๋ถํด
- ์ด์์ด ์๋ โ๋์โ ๋ฆด๋ ์ด์
์ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ๋๋์ด์ ๋ ์์ โ์ข์โ ๋ฆด๋ ์ด์
์ผ๋ก ๋ถํดํ๋ ๊ณผ์
- decomposition
- ์ ๊ทํ(normal form)
- ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฆด๋ ์ด์
์คํค๋ง์ ํํ
- ์ 1์ ๊ทํ, ์ 2์ ๊ทํ, ์ 3์ ๊ทํ, BCNF
- ๋ฆด๋ ์ด์
์คํค๋ง์ FD์ ํค์ ๊ธฐ๋ฐํ์ฌ ์ ์๋จ
- ์ผ๋ฐ์ ์ผ๋ก ์
๊ณ์์๋ ์ 3 ์ ๊ทํ ๋๋ BCNFํ๊น์ง ๊ณ ๋ ค
- ์ฃผ์ ์ ํธ๋ฆฌ๋ทฐํธ: ํค(๊ธฐ๋ณธํค, ํ๋ณด๊ธฐ ๋ชจ๋ ํฌํจ)์ ์ํ๋ ์ ํธ๋ฆฌ๋ทฐํธ
- ๋น์ฃผ์ ์ ํธ๋ฆฌ๋ทฐํธ: ์ฃผ์ ์ ํธ๋ฆฌ๋ทฐํธ๊ฐ ์๋ ์ ํธ๋ฆฌ๋ทฐํธ
์ 1์ ๊ทํ (1NF)
- ์ ํธ๋ฆฌ๋ทฐํธ์ ๋๋ฉ์ธ์ด ์ค์ง ์์ ๊ฐ๋ง์ ํฌํจํ๊ณ , ํฌํ์ ๋ชจ๋ ์ ํธ๋ฆฌ๋ทฐํธ๊ฐ ๋๋ฉ์ธ์ ์ํ๋ ํ๋์ ๊ฐ์ ๊ฐ์ ธ์ผ ํจ
- ๋ณตํฉ ์ ํธ๋ฆฌ๋ทฐํธ(composite attribute), ๋ค์น ์ ํธ๋ฆฌ๋ทฐํธ(multivalue attribute), ๊ทธ๋ฆฌ๊ณ ์ค์ฒฉ ๋ฆด๋ ์ด์
(nested relation) ๋ฑ ๋น์์์ (non-atomic) ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ํ์ฉํ์ง ์์ ๋ฆด๋ ์ด์
์ ํํ
1NF์ ์ด์(anomaly)
- 1NF๋ก ์ ๊ทํํ์ฌ๋ ์ด์(anomaly)์ด ๋ฐ์ํจ
- ์ฝ์
์ด์
- ์ญ์ ์ด์
- ๊ฐฑ์ ์ด์
- 1NF ์ด์์ ์์ธ
- ๊ธฐ๋ณธํค์ ๋ถ๋ถ ํจ์ ์ข
์๋ ์ ํธ๋ฆฌ๋ทฐํธ๊ฐ ์กด์ฌ
- ๊ธฐ๋ณธํค๋ก ์๋ณ๋๋ ๊ฐ์ฒด์ ๋ฌด๊ดํ ์ ํธ๋ฆฌ๋ทฐํธ๊ฐ ์กด์ฌ
- ๋๊ฐ์ง ์์ดํ ์ ๋ณด๊ฐ ํฌํจ
- 1NF ์ด์์ ํด๊ฒฐ
- ํ๋ก์ ์
์ผ๋ก ๋ฆด๋ ์ด์
์ ๋ถํด (๋ถ๋ถ ํจ์ ์ข
์์ ์ ๊ฑฐ)
- โ 2NF
์ 2์ ๊ทํ (2NF)
- ์ 2์ ๊ทํ์ ๊ธฐ๋ณธํค์ ์์ ํจ์์ ์ข
์์ฑ์ ๊ฐ๋
์ ๊ธฐ๋ฐ์ ๋๋ค.
- ์์ ํจ์์ ์ข
์์ฑ(full functional dependency):
- FD YโZ์์ Y์ ์ด๋ค ์ ํธ๋ฆฌ๋ทฐํธ๋ผ๋ ์ ๊ฑฐํ๋ฉด ๋ ์ด์ ํจ์์ ์ข
์์ฑ์ด ์ฑ๋ฆฝํ์ง ์๋ ๊ฒฝ์ฐ
- ์์ :
- {SSN, PNUMBER} โ HOURS๋ SSN โ HOURS์ PNUMBER โ HOURS๊ฐ ์ฑ๋ฆฝํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ํจ์์ ์ข
์์ฑ์ด๋ค.
- {SSN, PNUMBER} โ ENAME์ SSN โ ENAME์ด ์ฑ๋ฆฝํ๊ธฐ ๋๋ฌธ์ ์์ ํจ์์ ์ข
์์ฑ์ด ์๋๋ค - (์ด๋ ๋ถ๋ถ ํจ์ ์ข
์์ฑ(partial functional dependency)์ด๋ผ๊ณ ๋ถ๋ฆ).
- ์ 2 ์ ๊ทํ์ ์ ์:
- ๋ฆด๋ ์ด์
์คํค๋ง R์ ๋ชจ๋ ๋น์ฃผ์ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ด ๊ธฐ๋ณธํค์ ๋ํด์ ์์ ํจ์์ ์ข
์์ด๋ฉด, R์ ์ 2์ ๊ทํ(2NF)์ ์ํ๋ค.
- 1NF์ด๊ณ , ํค์ ์ํ์ง ์๋ ์ ํธ๋ฆฌ๋ทฐํธ๋ค์ ๋ชจ๋ ๊ธฐ๋ณธํค์ ์์ ํจ์ ์ข
์
๋ฌด์์ค ๋ถํด(nonloss decomposition)
- ํ๋ก์ ์
ํ์ฌ ๋ถํด๋ ๋ฆด๋ ์ด์
๋ค์ ์์ฐ ์กฐ์ธ์ ํตํด ์๋์ ๋ฆด๋ ์ด์
์ผ๋ก ๋ณต๊ท ๊ฐ๋ฅ
- ์๋์ ๋ฆด๋ ์ด์
์์ ์ป์ ์ ์๋ ์ ๋ณด๋ ๋ถํด๋ ๋ฆด๋ ์ด์
๋ค๋ก ๋ถํฐ๋ ์ป์ ์ ์์ ๊ทธ๋ฌ๋, ๊ทธ ์ญ์ ์ฑ๋ฆฝํ์ง ์์
- (500๋ฒ ํ์์ ์ง๋๊ต์๊ฐ P4๋ผ๋ ์ ๋ณด๋ ์๋์ ๋ฆด๋ ์ด์
์์ ํํํ ์ ์์)
2NF์ ์ด์(anomaly)
- 2NF๋ก ์ ๊ทํํ์ฌ๋ ์ด์(anomaly)๊ฐ ์์ : ์) ์ง๋ ๋ฆด๋ ์ด์
- ์ฝ์
์ด์
- ์ด๋ค ์ง๋๊ต์๊ฐ ํน์ ํ๊ณผ์ ์ํ๋ค๋ ์ฌ์ค์ ์ฝ์
๋ถ๊ฐ๋ฅ
- ์ญ์ ์ด์
- 300๋ฒ ํ์์ ํฌํ์ ์ญ์ ํ๋ฉด ์ง๋๊ต์ P3๊ฐ ์ปดํจํฐ๊ณตํ๊ณผ์ ์ํ๋ค๋ ์ ๋ณด ์์ค
- ๊ฐฑ์ ์ด์
- ์ง๋๊ต์ P1์ ์์์ด ์ปดํจํฐ๊ณตํ๊ณผ์์ ์ ์๊ณผ๋ก ๋ณ๊ฒฝ๋๋ค๋ฉด ํ๋ฒ์ด 100๊ณผ 400๋ฒ์ธ ๋๊ฐ์ ํฌํ์ ๋ชจ๋ ๋ณ๊ฒฝํ์ฌ์ผ ํจ
- 2NF ์ด์์ ์์ธ
- ์ดํ์ (transitive) ํจ์ ์ข
์์ด ์กด์ฌ
- 2NF ์ด์์ ํด๊ฒฐ
- ํ๋ก์ ์
์ผ๋ก ๋ฆด๋ ์ด์
๋ถํด (์ดํ์ ํจ์ ์ข
์์ ์ ๊ฑฐ)
- โ 3NF
์ 3์ ๊ทํ (3NF)
- ์ 3์ ๊ทํ์ ์ดํ ํจ์์ ์ข
์์ฑ์ ์ ๊ฑฐ๊ฐ ๋ชฉ์
- ์ดํ ํจ์์ ์ข
์์ฑ(transitive functional dependency):
- ๋ FD Y โ X์ X โ Z์ ์ํด์ ์ถ๋ก ๋ ์ ์๋ FD Y โ Z
- ์์
- SSN โ DMGRSSN์ SSN โ DNUMBER๊ณผ DNUMBER โ DMGRSSN์ด ์ฑ๋ฆฝํ๊ธฐ ๋๋ฌธ์ ์ดํ์ ํจ์์ ์ข
์์ฑ์ด๋ค.
- SSN โ ENAME๋ SSN โ X์ด๊ณ X โ ENAME์ธ ์ ํธ๋ฆฌ๋ทฐํธ ์งํฉ X๊ฐ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์ดํ์ ์ข
์์ฑ์ด ์๋๋ค.
- ์ 3์ ๊ทํ์ ์ ์:
- ๋ฆด๋ ์ด์
์คํค๋ง R์ด ์ 2์ ๊ทํ์ ๋ง์กฑํ๊ณ ,
- R์ ์ด๋ค ๋น์ฃผ์ ์ ํธ๋ฆฌ๋ทฐํธ๋ ๊ธฐ๋ณธํค์ ๋ํด์ ์ดํ์ ์ผ๋ก ์ข
์๋์ง ์์ผ๋ฉด R์ ์ 3์ ๊ทํ์ ๋ง์กฑํ๋ค๊ณ ํจ
3NF์ ์ฝ์
ERD์ ์ ๊ทํ ๋ถ์
- 1NF๋ฅผ ๋ง์กฑํ๊ณ ์๋์ง ๋ถ์
- 1NF : ์ค๋ณต๋ ํ(repeating groups)์ด ์๊ณ , ๋ชจ๋ ์์ฑ์ ์์๊ฐ(atomic value)
- ERD์ ์๋ ๋ชจ๋ entity๊ฐ PK๊ฐ ์๋์ง ํ์ธ
- 1NF๋ฅผ ๋ง์กฑํ๊ณ ์๋์ง ํ๋จ
- 2NF๋ฅผ ๋ง์กฑํ๊ณ ์๋์ง ๋ถ์
- 2NF : ๋ถ๋ถ์ ํจ์ ์ข
์์ ์ ๊ฑฐ
- PK๊ฐ 1๊ฐ์ด๋ฉด ๋ฌด์กฐ๊ฑด 2NF๋ฅผ ๋ง์กฑ
- PK๊ฐ 2๊ฐ ์ด์์ ์์ฑ์ผ๋ก ์ด๋ฃจ์ด์ง entity์์ PK์์ฑ์ผ๋ถ์ ๋๋จธ์ง ์์ฑ๋ค์ด ์ข
์ ๊ด๊ณ๊ฐ ์๋์ง ์ผ์ผ์ด ์ฒดํฌํด์ผ ํจ
- 3NF๋ฅผ ๋ง์กฑํ๊ณ ์๋์ง ๋ถ์
- 3NF : ์ดํ์ ํจ์์ข
์์ ์ ๊ฑฐ
- PK๊ฐ ์๋ ์์ฑ๋ค ์ค์์ ์ข
์๊ด๊ณ๊ฐ ์๋์ง ์ผ์ผ์ด ์ฒดํฌํด์ผ ํ๋ค.
- ๋ฆด๋ ์ด์
์คํค๋ง R์์ ์ฑ๋ฆฝํ๋ ์์์ FD X โ A์์ X๊ฐ R์ ์ํผํค์ด๋ฉด R์ Boyce-Codd ์ ๊ทํ(BCNF)์ ๊ฐ๋๋ค๊ณ ํ๋ค.
- ์ฆ, ๋ฆด๋ ์ด์
R์ ๋ชจ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค์ด๋ฉด ๋ฆด๋ ์ด์
R์ BCNF์ ์ํ๋ค.
- ๊ฐ ์ ๊ทํ์ ๊ทธ์ ์ ํ ์ ๊ทํ๋ณด๋ค ๋ ์๊ฒฉํ ์กฐ๊ฑด์ ๊ฐ๋๋ค. (strong 3NF๋ผ๊ณ ๋ ํจ)
- ๋ชจ๋ ์ 2์ ๊ทํ ๋ฆด๋ ์ด์
์ ์ 1์ ๊ทํ์ ๊ฐ๋๋ค.
- ๋ชจ๋ ์ 3์ ๊ทํ ๋ฆด๋ ์ด์
์ ์ 2์ ๊ทํ์ ๊ฐ๋๋ค.
- ๋ชจ๋ BCNF ๋ฆด๋ ์ด์
์ ์ 3์ ๊ทํ์ ๊ฐ๋๋ค.
- ์ 3์ ๊ทํ์๋ ์ํ๋ BCNF์๋ ์ํ์ง ์๋ ๋ฆด๋ ์ด์
์ด ์กด์ฌํ๋ค.
- ๊ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ๋ชฉํ๋ ๊ฐ ๋ฆด๋ ์ด์
์ด BCNF(๋๋ 3NF)๋ฅผ ๊ฐ๊ฒ ํ๋ ๊ฒ์ด๋ค.
๋ ๋ง์ ์ข
์์ฑ๊ณผ ์ ๊ทํ
๋ค์น ์ข
์์ฑ๊ณผ ์ 4์ ๊ทํ(4NF)
- ํจ์์ ์ข
์์ฑ์ ํ๋์ ๊ณตํต๋ ํํ์ ์ ์ฝ์กฐ๊ฑด์ ๋ช
๊ธฐํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ฉฐ, ํจ์์ ์ข
์์ฑ ๋ง์ ์ํด์ ๋ช
๊ธฐ๋ ์ ์๋ ๋ค๋ฅธ ํํ์ ์ ์ฝ์กฐ๊ฑด๋ค์ด ์กด์ฌํ๋ค.
- ์ถ๊ฐ์ ์ธ ์ข
์์ฑ์๋ ๋ค์น ์ข
์์ฑ(multi-valued dependency)์ด ์์ผ๋ฉฐ, ์ด์ ๊ธฐ๋ฐํ ์ ๊ทํ์ด ์ 4์ ๊ทํ(4NF)์ด๋ค.
- ์ 4์ ๊ทํ์ ํน์ฑ
- 3NF์ BCNF๋ ๋ค์น ์ข
์์ฑ์ ๋ค๋ฃจ์ง ์๋๋ค.
- ๋น๋จ์ ๋ค์น ์ข
์์ฑ์ ๊ฐ์ง๋ ๋ฆด๋ ์ด์
์คํค๋ง๋ ์ข์ ๋์์ธ์ด ์๋ ์ ์๋ค.
- ์ 4 ์ ๊ทํ์ ์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ๋ฉฐ, BCNF ์ ๊ทํ์ด ๋๋ค.
- (์ 4 ์ ๊ทํ์ ์ํ๋ ๋ชจ๋ ๋ฆด๋ ์ด์
์ BCNF ์ ๊ทํ์ ์ํ๋ค)
์กฐ์ธ ์ข
์์ฑ๊ณผ ์ 5์ ๊ทํ(5NF)
- ๋ ๋ค๋ฅธ ์ถ๊ฐ์ ์ข
์์ฑ์ผ๋ก ์กฐ์ธ ์ข
์์ฑ(Join Dependency)์ด ์์ผ๋ฉฐ, ์ด์ ๊ธฐ๋ฐํ ์ ๊ทํ์ด ์ 5์ ๊ทํ์ด๋ค.
- ์กฐ์ธ ์ข
์(JD, Join Dependency)
- ๋ฆด๋ ์ด์
R์ด ๊ทธ์ ํ๋ก์ ์
A, B, โฆ, Z์ ์กฐ์ธ๊ณผ ๋์ผํ๋ฉด R์ JD *(A, B, โฆ, Z)์ ๋ง์กฑ.
- ์ 5์ ๊ทํ(5NF)
- ํจ์์ ์ข
์์ฑ, ๋ค์น ์ข
์์ฑ, ์กฐ์ธ ์ข
์์ฑ์ ๋ชจ๋ ๊ณ ๋ คํ๋ ์ ๊ทํ์ผ๋ก, ํ๋ก์ ํธ-์กฐ์ธ ์ ๊ทํ (Project-Join NF: PJNF)์ด๋ผ๊ณ ๋ ํ๋ค.
- ์กฐ์ธ ์ข
์์ฑ์ ๋ฐ๊ฒฌํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ค์ด ์ผ๋ก, ์ค์ ๋ก ์ 5์ ๊ทํ์ ๊ฑฐ์ ์ฐ์ด์ง ์๋๋ค.
Source
- Fundamentals of Database Systems 7th Edition by Ramez Elmasri, Shamkant B. Navathe.