[๋ฐ์ดํฐ๋ฒ ์ด์ค] ๋ฐ์ดํฐ ์ด์ ํ์๊ณผ ์ ๊ทํ ๊ณผ์
๋ฐ์ดํฐ ์ด์ ํ์
- ์ฝ์
์ด์(Insertion Anomaly)
- ํน์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฝ์ ํ ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
- ์๋ฅผ ๋ค์ด, ๋ํ๊ต ํ ์ด๋ธ์ (ํ๋ฒ, ํ์๋ช , ํ๊ณผ๋ช , ํ๊ณผ์ฝ๋) ์ปฌ๋ผ์ด ์กด์ฌํ๊ณ , ํ๋ฒ์ด ๊ธฐ๋ณธํค์ธ ๊ฒฝ์ฐ, ์๋ก์ด ํ๊ณผ์ธ '์ํ๊ณผ'๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฝ์ ํ๋ ค๊ณ ํ ๋, ํด๋น ํ๊ณผ์ธ ํ์์ ์ ๋ณด๊ฐ ์์ด์ ํ๋ฒ์ด NULL์ด ๋๋๋ฐ, ํ๋ฒ์ ๊ธฐ๋ณธํค์ด๋ฏ๋ก NULL ๊ฐ์ ๊ฐ์ง ์๊ฐ ์๋ค.
- ๋ฐ๋ผ์ ์๋ก์ด ํ๊ณผ์ธ '์ํ๊ณผ'์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฝ์ ํ ์ ์๋ ์ํฉ์ด ๋ฐ์ํ๋ค.
ํ๋ฒ | ํ์๋ช | ํ๊ณผ๋ช | ํ๊ณผ ์ฝ๋ |
2018111111 | ํ๊ธธ๋ | ํต๊ณํ๊ณผ | 001 |
2018222222 | ์๊บฝ์ | ์ ์๊ณตํ๊ณผ | 002 |
2018333333 | ์ดํ์ง | ์ปดํจํฐ๊ณตํ๊ณผ | 003 |
์ํ๊ณผ | 004 |
๋ง์ง๋ง ํ์ ์ํ๊ณผ๋ฅผ ์ถ๊ฐํ ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ํ์ ํ ์ด๋ธ๊ณผ ํ๊ณผ ํ ์ด๋ธ๋ก ๋ถ๋ฆฌํด์ผ ํ๋ค.
- ์ญ์ ์ด์(Deletion Anomaly)
- ํน์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ฉด, ์ญ์ ๋๋ฉด ์๋๋ ๋ฐ์ดํฐ๋ ํจ๊ป ์ญ์ ๋๋ ํ์์ด๋ค.
- ์๋ฅผ ๋ค์ด, ๋ํ๊ต ํ ์ด๋ธ์ (ํ๋ฒ, ํ์๋ช , ํ๊ณผ๋ช , ํ๊ณผ) ์ปฌ๋ผ์ด ์กด์ฌํ๊ณ , ํ๋ฒ์ด ๊ธฐ๋ณธํค์ธ ๊ฒฝ์ฐ, ํน์ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ฉด ํด๋น ํ์์ด ์์๋ ํ๊ณผ ์ฝ๋์ ํ๊ณผ๋ช ๋ ํจ๊ป ์ญ์ ๋๋ค.
ํ๋ฒ | ํ์๋ช | ํ๊ณผ๋ช | ํ๊ณผ ์ฝ๋ |
2018111111 | ํ๊ธธ๋ | ํต๊ณํ๊ณผ | 001 |
2018222222 | ์๊บฝ์ | ์ ์๊ณตํ๊ณผ | 002 |
2018333333 | ์ดํ์ง | ์ปดํจํฐ๊ณตํ๊ณผ | 003 |
ํต๊ณํ๊ณผ์ธ ํ๊ธธ๋ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ฉด, ํต๊ณํ๊ณผ์ ํ๊ณผ๋ช ๊ณผ ํ๊ณผ ์ฝ๋ ์ ๋ณด๋ ํจ๊ป ์ญ์ ๋๋ค.
- ๊ฐฑ์ ์ด์(Update Anomaly)
- ํ ์ด๋ธ์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋๋ฐ, ์ ์์ ์ผ๋ก ๋ณ๊ฒฝ๋์ง ์๊ฑฐ๋ ๋๋ฌด ๋ง์ ํ์ ๋ชจ๋ ์ ๋ฐ์ดํธํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
- ์๋ฅผ ๋ค์ด, ๋ํ๊ต ํ ์ด๋ธ์ (ํ๋ฒ, ํ์๋ช , ํ๊ณผ๋ช , ํ๊ณผ) ์ปฌ๋ผ์ด ์กด์ฌํ๊ณ , ํ๋ฒ์ด ๊ธฐ๋ณธํค์ธ ๊ฒฝ์ฐ, ํ๊ณผ์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋๋ฉด ํด๋น ํ๊ณผ์ธ ๋ชจ๋ ํ์๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค. ์ด ์ค ํ ๋ฐ์ดํฐ๋ผ๋ ์ ๋๋ก ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉด ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง๋ค.
ํ๋ฒ | ํ์๋ช | ํ๊ณผ๋ช | ํ๊ณผ ์ฝ๋ |
2018111111 | ํ๊ธธ๋ | ์ปดํจํฐ๊ณตํ๊ณผ | 001 |
2018222222 | ์๊บฝ์ | ์ปดํจํฐ๊ณตํ๊ณผ | 002 |
2018333333 | ์ดํ์ง | ์ปดํจํฐ๊ณตํ๊ณผ | 003 |
... | ... | ... | ... |
2018444444 | ๊น๋ฏผ๊ฒฝ | ์ปดํจํฐ๊ณตํ๊ณผ | 099 |
2018555555 | ์ดํ์ง | ์ปดํจํฐ๊ณตํ๊ณผ | 100 |
์ปดํจํฐ๊ณตํ๊ณผ์ ํ๊ณผ๋ช ์ด '์ปดํจํฐํ๋ถ'๋ก ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ, ์ปดํจํฐ ๊ณตํ๊ณผ ์์ ํ์ 100๋ช ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๊ณ , ์ด ์ค 1๋ช ์ด๋ผ๋ ์ ๋๋ก ์ ๋ฐ์ดํธ๋์ง ์์ผ๋ฉด ๋ฐ์ดํฐ ์ด์ ํ์์ด ๋ฐ์ํ๋ค.
์ ๊ทํ ๊ณผ์
์ ๊ทํ ๊ณผ์ ์ ๋ฆด๋ ์ด์ ๊ฐ์ ์๋ชป๋ ์ข ์ ๊ด๊ณ๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด์ ํ์(Anomaly)์ด ์ผ์ด๋๋ ๊ฒ์ ํด๊ฒฐํ๊ฑฐ๋,
์ ์ฅ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๋ฆด๋ ์ด์ ์ ์ฌ๋ฌ ๊ฐ๋ก ๋ถ๋ฆฌํ๋ ๊ณผ์ ์ด๋ค.
์ ๊ทํ ๊ณผ์ ์ ์ ๊ทํ ์์น์ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ทํ์ ๋ง๋ค์ด๊ฐ๋ ๊ณผ์ ์ด๋ฉฐ, ์ ๊ทํ๋ ์ ๋๋ ์ ๊ทํ(Normal From, NF)์ผ๋ก ํํํ๋ค.
๊ธฐ๋ณธ ์ ๊ทํ์ธ ์ 1 ์ ๊ทํ, ์ 2 ์ ๊ทํ, ์ 3 ์ ๊ทํ, ๋ณด์ด์ค/์ฝ๋ ์ ๊ทํ์ด ์๊ณ , ๊ณ ๊ธ ์ ๊ทํ์ธ ์ 4 ์ ๊ทํ๊ณผ ์ 5 ์ ๊ทํ์ด ์๋ค.
๋ณธ๋ฌธ์์๋ ๊ธฐ๋ณธ ์ ๊ทํ์ ๋ํด์๋ง ์์๋ณด๊ณ ์ ํ๋ค.
์ ๊ทํ ์์น
1. ๊ฐ์ ์๋ฏธ๋ฅผ ํํํ๋ ๋ฆด๋ ์ด์ ์ด์ง๋ง ๋ ์ข์ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
2. ์๋ฃ์ ์ค๋ณต์ฑ์ ๊ฐ์ํด์ผ ํ๋ค.
3. ๋ ๋ฆฝ์ ์ธ ๊ด๊ณ๋ ๋ณ๊ฐ์ ๋ฆด๋ ์ด์ ์ผ๋ก ํํํด์ผ ํ๋ค.
4. ๊ฐ๊ฐ์ ๋ฆด๋ ์ด์ ์ ๋ ๋ฆฝ์ ์ธ ํํ์ด ๊ฐ๋ฅํด์ผ ํ๋ค.
์ 1 ์ ๊ทํ
๋ฆด๋ ์ด์ ์ ๋ชจ๋ ๋๋ฉ์ธ์ด ๋ ์ด์ ๋ถํด๋ ์ ์๋ ์์๊ฐ๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด์ผ ํ๋ค.
๋ฆด๋ ์ด์ ์ ์์ฑ ๊ฐ ์ค์์ ํ ๊ฐ์ ๊ธฐ๋ณธํค์ ๋ํด ๋ ๊ฐ ์ด์์ ๊ฐ์ ๊ฐ์ง๋ ๋ฐ๋ณต ์งํฉ์ด ์์ด์๋ ์๋๋ค.
์ ์ ๋ฒํธ | ID | ์๊ฐ๋ช | ์ฑ์ทจ๋ |
1 | ํ์ฒ | {C++, Java} | {90%, 100%} |
2 | ๋ฒ์ | {์๊ณ ๋ฆฌ์ฆ, ์๋ฃ๊ตฌ์กฐ} | {80%, 60%} |
์์ ๊ฐ์ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค์ธ ์๊ฐ๋ช ์ ์์ฑ ๊ฐ์ด ๋ ๊ฐ ์ด์์ ๊ฐ์ ๊ฐ์ง๋ค.
์ด๋ฅผ ์ ๊ฑฐํด์ฃผ๋ฉด ์๋์ ๊ฐ์ ํ ์ด๋ธ์ด ๋๋ค.
์ ์ ๋ฒํธ | ID | ์๊ฐ๋ช | ์ฑ์ทจ๋ |
1 | ํ์ฒ | C++ | 90% |
1 | ํ์ฒ | Java | 100% |
2 | ๋ฒ์ | ์๊ณ ๋ฆฌ์ฆ | 80% |
2 | ๋ฒ์ | ์๋ฃ๊ตฌ์กฐ | 60% |
ํ์ง๋ง, ์ 1 ์ ๊ทํ๋ฅผ ๊ฑฐ์น๋๋ผ๋ ๋ฐ์ดํฐ ์ด์ ํ์์ด ๋ฐ์ํ ์ ์๋ค.
์ 2 ์ ๊ทํ
๋ฆด๋ ์ด์ ์ด ์ 1 ์ ๊ทํ์ ๋ง์กฑํ๋ฉด์, ๋ถ๋ถ ํจ์์ ์ข ์์ฑ์ ์ ๊ฑฐํ ์ํ์ด๋ค.
๋ถ๋ถ ํจ์์ ์ข ์์ฑ ์ ๊ฑฐ๋ ๊ธฐ๋ณธํค๊ฐ ์๋ ๋ชจ๋ ์์ฑ์ด ๊ธฐ๋ณธํค์ ์์ ํจ์ ์ข ์์ ์ธ ์ํ๋ฅผ ๋งํ๋ค.
์ ์ ๋ฒํธ | ID | ์๊ฐ๋ช | ์ฑ์ทจ๋ |
1 | ํ์ฒ | C++ | 90% |
1 | ํ์ฒ | Java | 100% |
2 | ๋ฒ์ | ์๊ณ ๋ฆฌ์ฆ | 80% |
2 | ๋ฒ์ | ์๋ฃ๊ตฌ์กฐ | 60% |
์์ ๊ฐ์ ํ ์ด๋ธ์ด ์์ ๋, ํ์ฌ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค์ ๋ํ ์ข ์ ๊ด๊ณ๋ฅผ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์์ ๊ฐ์ด ์ ์ ๋ฒํธ๊ฐ ID์ ๋ถ๋ถ ์ข ์๋ ์ํ์ด๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ ์ ๋ฒํธ ๋ฆด๋ ์ด์ (ID, ์ ์ ๋ฒํธ)๊ณผ ์ฑ์ทจ๋ ๋ฆด๋ ์ด์ (ID, ์๊ฐ๋ช , ์ฑ์ทจ๋)๋ก ๋ถ๋ฆฌํ๋ค.
์ ์ ๋ฒํธ | ID |
1 | ํ์ฒ |
2 | ๋ฒ์ |
ID | ์๊ฐ๋ช | ์ฑ์ทจ๋ |
ํ์ฒ | C++ | 90% |
ํ์ฒ | Java | 100% |
๋ฒ์ | ์๊ณ ๋ฆฌ์ฆ | 80% |
๋ฒ์ | ์๋ฃ๊ตฌ์กฐ | 60% |
์ 3 ์ ๊ทํ
์ 2 ์ ๊ทํ์ด๋ฉด์ ๊ธฐ๋ณธํค๊ฐ ์๋ ๋ชจ๋ ์์ฑ์ด ์ดํ์ ํจ์ ์ข ์(transitive FD)์ ๋ง์กฑํ์ง ์๋ ์ํ๋ฅผ ๋งํ๋ค.
์ดํ์ ํจ์ ์ข ์์ด๋ A->B์ B->C๊ฐ ์กด์ฌํ๋ฉด ๋ ผ๋ฆฌ์ ์ผ๋ก A->C๊ฐ ์ฑ๋ฆฝํ๋๋ฐ, ์ด๋ ์งํฉ C๊ฐ ์งํฉ A์ ์ดํ์ ์ผ๋ก ํจ์ ์ข ์๋์๋ค๊ณ ํ๋ค.
ID | ๋ฑ๊ธ | ํ ์ธ์จ |
ํ์ฒ | ํ๋ํฐ๋ | 30% |
๋ฒ์ | ๋ค์ด์ | 50% |
๊ฐ์ | ๋ง์คํฐ | 70% |
์์ ๊ฐ์ ํ ์ด๋ธ์ด ์์ ๋, ID๊ฐ ๋ฑ๊ธ์ ์ํฅ์ ์ฃผ๊ณ , ๋ฑ๊ธ์ด ํ ์ธ์จ์ ์ํฅ์ ์ค๋ค. (ID->๋ฑ๊ธ, ๋ฑ๊ธ->ํ ์ธ์จ)
์ด๋ ID๋ ํ ์ธ์จ์ ์ง์ ์ ์ธ ์ํฅ์ ์ฃผ๋ ๊ด๊ณ๊ฐ ์๋์ง๋ง, ID->๋ฑ๊ธ, ๋ฑ๊ธ->ํ ์ธ์จ ๊ด๊ณ๋ก ์ธํด ID->ํ ์ธ์จ ๊ด๊ณ๋ผ ๋ณผ ์ ์๋ค.
์ด๋ฌํ ๊ด๊ณ๋ก ์ธํด ์ดํ์ ํจ์ ์ข ์ ์ํ๊ฐ ๋๋ค.
์ด ๊ฒฝ์ฐ์ ์ 3 ์ ๊ทํ๋ฅผ ์ํํ์ฌ ๋ค์๊ณผ ๊ฐ์ ํ ์ด๋ธ๋ก ๋ถ๋ฆฌํด์ผ ํ๋ค.
ID | ๋ฑ๊ธ |
ํ์ฒ | ํ๋ํฐ๋ |
๋ฒ์ | ๋ค์ด์ |
๊ฐ์ | ๋ง์คํฐ |
๋ฑ๊ธ | ํ ์ธ์จ |
ํ๋ํฐ๋ | 30% |
๋ค์ด์ | 50% |
๋ง์คํฐ | 70% |
๋ณด์ด์ค/์ฝ๋ ์ ๊ทํ
์ 3 ์ ๊ทํ์ด๋ฉด์, ๊ฒฐ์ ์๊ฐ ํ๋ณดํค๊ฐ ์๋ ํจ์ ์ข ์ ๊ด๊ณ๋ฅผ ์ ๊ฑฐํ์ฌ ๋ฆด๋ ์ด์ ์ ํจ์ ์ข ์ ๊ด๊ณ์์ ๋ชจ๋ ๊ฒฐ์ ์๊ฐ ํ๋ณดํค์ธ ์ํ๋ฅผ ๋งํ๋ค.
ํ๋ฒ | ๊ณผ๋ชฉ๋ช | ๊ต์๋ช |
202001 | C์ธ์ด | ์ฅ๊ธธ์ฐ |
202001 | ๋ฐ์ดํฐ๋ฒ ์ด์ค | ํ๊ธธ๋ |
202002 | ๋ฐ์ดํฐ๋ฒ ์ด์ค | ํ๊ธธ๋ |
ํ๋ฒ๊ณผ ๊ณผ๋ชฉ๋ช ์ด ๊ต์๋ช ์ ์ํฅ์ ์ฃผ๊ณ , ๊ต์๋ช ์ด ๊ณผ๋ชฉ๋ช ์ ์ํฅ์ ์ฃผ๋ ๊ด๊ณ๋ก ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์์ ๊ฒฝ์ฐ, ๊ต์๋ช ์ด ๊ณผ๋ชฉ๋ช ์ ์ํฅ์ ์ฃผ๊ณ ์๋๋ฐ, ๊ต์๋ช ๋ง์ผ๋ก๋ ์ ์ผ์ฑ์ ๋ง์กฑํ์ง ๋ชปํ๋ฏ๋ก ํ๋ณดํค๊ฐ ๋ ์ ์์ง๋ง ๊ฒฐ์ ์ ์ญํ ์ ํ๊ณ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ณด์ด์ค/์ฝ๋ ์ ๊ทํ์ ๋ง์กฑํ์ง ๋ชปํ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด {ํ๋ฒ, ๊ต์๋ช } ํ ์ด๋ธ๊ณผ {๊ณผ๋ชฉ๋ช , ๊ต์๋ช } ํ ์ด๋ธ ํํ๋ก ๋ถ๋ฆฌํด์ผ ํ๋ค.
ํ๋ฒ | ๊ต์๋ช |
202001 | ์ฅ๊ธธ์ฐ |
202001 | ํ๊ธธ๋ |
202002 | ํ๊ธธ๋ |
๊ณผ๋ชฉ๋ช | ๊ต์๋ช |
C์ธ์ด | ์ฅ๊ธธ์ฐ |
๋ฐ์ดํฐ๋ฒ ์ด์ค | ํ๊ธธ๋ |
์์ ๊ฐ์ด ์ ๊ทํ ๊ณผ์ ์ ๊ฑฐ์น๋ค๊ณ ํด์ ์ฑ๋ฅ์ด 100% ์ข์์ง๋ ๊ฒ์ ์๋๋ค.
ํ ์ด๋ธ์ ๋๋๊ฒ ๋๋ฉด ์ด๋ ํ ์ฟผ๋ฆฌ๋ ์กฐ์ธ์ ์ํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์คํ๋ ค ๋๋ ค์ง ์๋ ์๊ธฐ ๋๋ฌธ์ ์๋น์ค์ ๋ฐ๋ผ ์ ๊ทํ ๋๋ ๋น์ ๊ทํ๋ฅผ ์งํํด์ผ ํ๋ค.