[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์ด์ ํ์(Anomaly)
์ด์ ํ์(Anomaly)
Anomaly๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์์ ๋ฐ์ํ๊ฒ ๋๋ ์ด์ ํ์์ ์๋ฏธํฉ๋๋ค. Anomaly๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ๋ฉด ๊ทธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ด ๋ณด์ฅ๋์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ด์ฃ . Anomaly์ ์ข ๋ฅ์ ๊ทธ ์ํ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Deletion Anomaly (์ญ์ ์ด์)
์ญ์ ์ด์์ ํ ์ด๋ธ์์ ์ด๋ค ๊ฐ์ ์ญ์ ํ๊ธฐ ์ํด ํํ์ ์ญ์ ํ๊ฒ ๋๋ฉด ํด๋น ํํ ์์ ์๋ ๋ชจ๋ ์ ๋ณด๊ฐ ํจ๊ป ์ญ์ ๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋๋ค.
student_id | student_name | department | course_id | grade |
1 | ์ฌํ | ์ ์ | 1 | A+ |
1 | ์ฌํ | ์ ์ | 2 | A+ |
1 | ์ฌํ | ์ ์ | 3 | A+ |
2 | ์ค์ด | ์์ฌ | 3 | A+ |
์ค์ด๊ฐ course_id ๊ฐ 3์ธ ์์ ์ ์ฒ ํํ๋ค๊ณ ํฉ์๋ค. ๊ทน๋จ์ ์ด์ง๋ง ์ ํ ์ด๋ธ์์๋ ์ค์ด๊ฐ ๋ค์ ๊ณผ๋ชฉ์ด 3๋ฒ ๊ณผ๋ชฉ๋ฐ์ ์์ผ๋ฏ๋ก, ์๋ํ ๊ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ ์ค์ด์ ์ ๋ณด๊ฐ ํต์งธ๋ก ์ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ค์ด๊ฐ 3๋ฒ ๊ณผ๋ชฉ์ ๋ฃ์ง ์์๋ค๊ณ ๊ธฐ๋กํ๊ณ ์ถ์ ๋ฟ์ธ๋ฐ, ์ค์ด๋ผ๋ ํ์์ด ๋ ์ด์ ์กด์ฌํ์ง ์๋ ๊ฒ์ฒ๋ผ ์ฌ๋ผ์ ธ ๋ฒ๋ ธ์ต๋๋ค. ์ด๋ฐ ํ์์ด ์ญ์ ์ด์์ด๋ผ๊ณ ํฉ๋๋ค.
Insertion Anomaly (์ฝ์ ์ด์)
์ฝ์ ์ด์์ ํ ์ด๋ธ์ ์๋ก์ด tuple์ ์ฝ์ ํ ๋, ํน์ ์์ฑ์ ๊ฐ์ด ์กด์ฌํ์ง ์์ ๋ถํ์ํ๊ฒ null ๊ฐ์ ์ฝ์ ํ๋ฉด์ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋๋ค.
student_id | student_name | department | course_id | grade |
1 | ์ฌํ | ์ ์ | 1 | A+ |
1 | ์ฌํ | ์ ์ | 2 | A+ |
1 | ์ฌํ | ์ ์ | 3 | A+ |
2 | ์ค์ด | ์์ฌ | 3 | A+ |
3 | ํ๊ธฐ | null | null | null |
์ญ์ ์ด์๊ณผ ๋๊ฐ์ ํ์ ์๋ก์ด ํ์์ธ "ํ๊ธฐ"๋ฅผ ์ถ๊ฐํ๊ณ ์ถ๋ค๊ณ ํด๋ด ์๋ค. ํ๊ธฐ๋ ์ด์ ๋ง ์ ํํ๊ธฐ ๋๋ฌธ์, id์ ์ด๋ฆ๋ง ๋ฃ์ ์ ์๊ณ , ๋ค๋ฅธ ๋ชจ๋ ์ ๋ณด๋ ์ ์ ์๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ null ๊ฐ์ ํจ๊ป ์ฝ์ ํด์ผ ํฉ๋๋ค.
Update Anomaly (๊ฐฑ์ ์ด์)
๊ฐฑ์ ์ด์์ ์ด๋ค ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธํ ๋, ๊ทธ์ ๋์๋๋ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ชจ๋ ํจ๊ป ์ ๋ฐ์ดํธํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋๋ค.
student_id | student_name | department | course_id | grade |
1 | ์ฌํ | ์ ์ ? | 1 | A+ |
1 | ์ฌํ | ์์ฌ ? | 2 | A+ |
1 | ์ฌํ | ์ ์ ? | 3 | A+ |
2 | ์ค์ด | ์์ฌ | 3 | A+ |
3 | ํ๊ธฐ | null | null | null |
์ฌํ์ด๊ฐ ์์ฌ๋ก ์ ๊ณต์ ๋ณ๊ฒฝํ๋ค๊ณ ํด๋ด ์๋ค. ๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ์ด ๊ณผ์ ์์ course_id 2์ ๋ํ ์ ๋ณด๋ง ์ ๋ฐ์ดํธํ๋ฉด์ ๋ฐ์ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง ๋ณด์์ ๋ ์ฌํ์ด๋ ์ด๋ค ์ ๊ณต ๊ฐ์ผ๋ก ๊ฐ์ง๊ณ ์๋ค๊ณ ํด์ผ ํ ๊น์? ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ชจ๋ "์ฌํ"์ด๋ผ๋ ๊ฐ์ ํฌํจํ๋ ํํ์ ์ฐพ์ ์ ๋ฐ์ดํธํ๋ค๊ณ ํด๋ด ์๋ค. ์ ํ ์ด๋ธ์์๋ ํํ์ด ์ธ ๊ฐ๋ฟ์ด๋ ์ฌ์ด ์์ ์ด๊ฒ ์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํฐ ๊ฒฝ์ฐ์๋ ์์ฒญ๋ ์์๊ณผ ์๊ฐ์ ๋ญ๋น๋ฉ๋๋ค. ์ด๋ฐ ์ด์ ํ์์ ๊ฐฑ์ ์ด์์ด๋ผ๊ณ ํฉ๋๋ค.
ํจ์์ ์ข ์(Functional Dependency)
Functional Dependency๋ ํ๊ธ๋ก ํจ์์ ์ข ์์ด๋ผ๊ณ ํฉ๋๋ค. ์ด๋ค X๊ฐ Y๋ฅผ ํจ์์ ์ผ๋ก ๊ฒฐ์ ํ ๋, ์ฐ๋ฆฌ๋ X๋ฅผ ๊ฒฐ์ ์, Y๋ฅผ ์ข ์์์ข ์์๋ผ๊ณ ํ ์ ์๊ณ , ์ํ์ ํ๊ธฐ๋ก X -> Y๋ก ๋ํ๋ผ ์ ์์ต๋๋ค. ์ํ์ ์ธ ๊ฐ๋ ์ผ๋ก๋ ์กฐ๊ธ ํท๊ฐ๋ฆฌ๋ ๋๋น ํ ์ด๋ธ๋ก ํ์ธํด๋ด ์๋ค.
student_id | student_name | department | course_id | grade |
1 | ์ฌํ | ์ ์ ? | 1 | A+ |
1 | ์ฌํ | ์์ฌ ? | 2 | A+ |
1 | ์ฌํ | ์ ์ ? | 3 | A+ |
2 | ์ค์ด | ์์ฌ | 3 | A+ |
์์์ ์ฌ์ฉํ๋ ํ ์ด๋ธ์ ๊ทธ๋๋ก ๊ฐ์ ธ์์ต๋๋ค. ์ด๋ค ์์ฑ์ ์งํฉ X๊ฐ ํน์ ํ tuple์ ์๋ณํ๊ฒ ํ๋ค๋ฉด, ํจ์์ ์ข ์์ฑ ๊ด๊ณ์ ์๋ค๊ณ ํ ์ ์์ต๋๋ค. ์ด ํ ์ด๋ธ์์๋ ์ฐ๋ฆฌ๊ฐ student_name, course_id ๋ง ์๊ณ ์๋ค๋ฉด, ๋ค๋ฅธ ๋๋จธ์ง ์ ๋ณด๋ค์ ํน์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ฒ์ ์๋ฉด ํ์์ ์ด๋ฆ๋ ํน์ ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ ํ ์ด๋ธ์ ๋ค์๊ณผ ๊ฐ์ ๊ด๊ณ๋ค๋ก ํํํ ์ ์์ต๋๋ค.
- {student_id, course_id} -> department
- {student_id, course_id} -> student_name
- {student_id, course_id} -> grade
- {student_id} -> student_name
์ด๋ ๊ฒ ํจ์์ ์ข ์์ฑ์ ํ ํ ์ด๋ธ ์์์๋ ์ฌ๋ฌ ๊ฐ ๋ฐ๊ฒฌ๋ ์ ์์ต๋๋ค.
๋ถ๋ถ์ ํจ์์ ์ข ์(Partial Functional Dependency)
๋ถ๋ถ ํจ์์ ์ข ์์ ํจ์์ ์ข ์์ฑ์ ๋ง๋๋ ์์ฑ์ ์งํฉ ์ค ์ผ๋ถ๊ฐ ํจ์์ ์ข ์์ฑ์ ๊ฐ์ง๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์์์ ์ฌ์ฉํ ์์๋ฅผ ๋ณด๋ฉด student_name ์ ๋ ์์ฑ์ ์งํฉ์ธ {student_id, course_id}์ ์ข ์๋์ง๋ง ๋์์, ํด๋น ์งํฉ์ ๋ถ๋ถ์งํฉ์ธ {student_id}์ ๋ํด์๋ ์ข ์๋๋ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋๋ค. ์ฆ, ์์์ ๋์ดํ ํจ์์ ์ข ์์ฑ ์ค 2๋ฒ๊ณผ 4๋ฒ์ ๊ฒฝ์ฐ๊ฐ ๋์์ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ๊ฒฐ์ ์์ ์ผ๋ถ์๋ ์ข ์์๊ฐ ๋๋ ๊ด๊ณ๋ฅผ ๋ถ๋ถ์ ํจ์์ ์ข ์์ด๋ผ๊ณ ํฉ๋๋ค.
'๐ฎ ์จ-์์ค > ๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ํธ๋์ญ์ (Transaction) (0) | 2021.09.05 |
---|---|
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์กฐ์ธ์ฐ์ฐ(Join Operation) (0) | 2021.09.05 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ํค(Keys) (0) | 2021.09.05 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์ ๊ทํ(Normalization) (0) | 2021.09.05 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote