Database #Anomaly

κ³½μ„œν˜„Β·2022λ…„ 11μ›” 1일
0

πŸ™„ μ •κ·œν™”λ₯Ό ν•΄μ•Όν•˜λŠ” μ΄μœ κ°€ λ­”κ°€μš”?

A. 잘λͺ»λœ ν…Œμ΄λΈ” μ„€κ³„λ‘œ 인해 μ΄μƒν˜„μƒ(Anomaly)이 λ°œμƒν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

1. μ‚½μž… 이상

자료λ₯Ό μ‚½μž…ν•  λ•Œ μ˜λ„ν•˜μ§€ μ•Šμ€ μžλ£ŒκΉŒμ§€ μ‚½μž…ν•΄μ•Όλ§Œ 자료λ₯Ό ν…Œμ΄λΈ”μ— μΆ”κ°€κ°€ κ°€λŠ₯ν•œ ν˜„μƒ

ex) κΈ°λ³Έν‚€κ°€ {Student ID, Course ID} 인 경우 -> Courseλ₯Ό μˆ˜κ°•ν•˜μ§€ μ•Šμ€ 학생은 Course IDκ°€ μ—†λŠ” ν˜„μƒμ΄ λ°œμƒν•œλ‹€. κ²°κ΅­ Course IDλ₯Ό Null둜 ν•  μˆ˜λ°–μ— μ—†λŠ”λ°, κΈ°λ³Έν‚€λŠ” Null이 될 수 μ—†μœΌλ―€λ‘œ, Table에 좔가될 수 μ—†μŒ!!

ꡳ이 μ‚½μž…ν•˜κΈ° μœ„ν•΄μ„œλŠ” 'λ―Έμˆ˜κ°•'κ³Ό 같은 Course IDλ₯Ό λ§Œλ“€μ–΄μ•Ό 함.

λΆˆν•„μš”ν•œ 데이터λ₯Ό 좔가해야지, μ‚½μž…ν•  수 μžˆλŠ” 상황 = Insertion Anomaly

2. κ°±μ‹  이상

μ€‘λ³΅λœ 데이터 쀑 μΌλΆ€λ§Œ μˆ˜μ •λ˜μ–΄ 데이터 λͺ¨μˆœμ΄ μΌμ–΄λ‚˜λŠ” ν˜„μƒ

ex) μ–΄λ–€ ν•™μƒμ˜ 전곡 (Department) 이 "μ»΄ν“¨ν„°μ—μ„œ μŒμ•…"으둜 λ°”λ€ŒλŠ” 경우.

λͺ¨λ“  Departmentλ₯Ό "μŒμ•…"으둜 λ°”κΎΈμ–΄μ•Ό 함. κ·ΈλŸ¬λ‚˜ 일뢀λ₯Ό κΉœλΉ‘ν•˜κ³  바꾸지 λͺ»ν•˜λŠ” 경우, μ œλŒ€λ‘œ νŒŒμ•… λͺ»ν•¨.

μΌλΆ€λ§Œ λ³€κ²½ν•˜μ—¬, 데이터가 뢈일치 ν•˜λŠ” λͺ¨μˆœμ˜ 문제 = Update Anomaly

3. μ‚­μ œ 이상

μ–΄λ–€ 정보λ₯Ό μ‚­μ œν•˜λ©΄, μ˜λ„ν•˜μ§€ μ•Šμ€ λ‹€λ₯Έ μ •λ³΄κΉŒμ§€ μ‚­μ œλ˜μ–΄λ²„λ¦¬λŠ” ν˜„μƒ

ex) λ§Œμ•½ μ–΄λ–€ 학생이 μˆ˜κ°•μ„ μ² νšŒν•˜λŠ” 경우, {Student ID, Course ID, Department, Course ID, Grade}의 정보 쀑

Student ID, Department 와 같은 학생에 λŒ€ν•œ 정보도 ν•¨κ»˜ μ‚­μ œλ¨.

νŠœν”Œ μ‚­μ œλ‘œ 인해 κΌ­ ν•„μš”ν•œ λ°μ΄ν„°κΉŒμ§€ ν•¨κ»˜ μ‚­μ œλ˜λŠ” 문제 = Deletion Anomaly

https://dev-coco.tistory.com/63

0개의 λŒ“κΈ€