# Anomaly
μ κ·νλ₯Ό ν΄μΌνλ μ΄μ λ μλͺ»λ ν μ΄λΈ μ€κ³λ‘ μΈν΄ Anomaly (μ΄μ νμ)κ° λνλκΈ° λλ¬Έμ΄λ€.
μ΄ νμ΄μ§μμλ Anomalyκ° λ¬΄μμΈμ§ μ΄ν΄λ³Έλ€.
μ) {Student ID, Course ID, Department, Course ID, Grade}
# μ½μ μ΄μ (Insertion Anomaly)
κΈ°λ³Έν€κ° {Student ID, Course ID} μΈ κ²½μ° -> Courseλ₯Ό μκ°νμ§ μμ νμμ Course IDκ° μλ νμμ΄ λ°μν¨. κ²°κ΅ Course IDλ₯Ό Nullλ‘ ν μλ°μ μλλ°, κΈ°λ³Έν€λ Nullμ΄ λ μ μμΌλ―λ‘, Tableμ μΆκ°λ μ μμ.
κ΅³μ΄ μ½μ νκΈ° μν΄μλ 'λ―Έμκ°'κ³Ό κ°μ Course IDλ₯Ό λ§λ€μ΄μΌ ν¨.
λΆνμν λ°μ΄ν°λ₯Ό μΆκ°ν΄μΌμ§, μ½μ ν μ μλ μν© = Insertion Anomaly
# κ°±μ μ΄μ (Update Anomaly)
λ§μ½ μ΄λ€ νμμ μ 곡 (Department) μ΄ "μ»΄ν¨ν°μμ μμ "μΌλ‘ λ°λλ κ²½μ°.
λͺ¨λ Departmentλ₯Ό "μμ "μΌλ‘ λ°κΎΈμ΄μΌ ν¨. κ·Έλ¬λ μΌλΆλ₯Ό κΉλΉ‘νκ³ λ°κΎΈμ§ λͺ»νλ κ²½μ°, μ λλ‘ νμ λͺ»ν¨.
μΌλΆλ§ λ³κ²½νμ¬, λ°μ΄ν°κ° λΆμΌμΉ νλ λͺ¨μμ λ¬Έμ = Update Anomaly
# μμ μ΄μ (Deletion Anomaly)
λ§μ½ μ΄λ€ νμμ΄ μκ°μ μ² ννλ κ²½μ°, {Student ID, Course ID, Department, Course ID, Grade}μ μ 보 μ€
Student ID, Department μ κ°μ νμμ λν μ 보λ ν¨κ» μμ λ¨.
νν μμ λ‘ μΈν΄ κΌ νμν λ°μ΄ν°κΉμ§ ν¨κ» μμ λλ λ¬Έμ = Deletion Anomaly
β - SQL vs NOSQL - μΈλ±μ€(Index) β