μ κ·νκ° λ¬΄μμΈκ°μ?μ κ·νλ₯Ό νμ§ μμ κ²½μ°, λ°μν μ μλ μ΄μνμμ λν΄ μ€λͺ ν΄ μ£ΌμΈμ.
β’ κ° μ κ·νμ λν΄, κ·Έ μ κ·νκ° μ§νλκΈ° μ /νμ ν
μ΄λΈμ λ³νμ λν΄ μ€λͺ
ν΄ μ£ΌμΈμ.
β’ μ κ·νκ° λ¬΄μ‘°κ±΄ μ’μκ°μ? κ·Έλ μ§ μλ€λ©΄, μ΄λ€ μν©μμ μμ κ·νλ₯Ό νλκ² μ’μμ§ μ€λͺ
ν΄ μ£ΌμΈμ.
μμ μ΄μ(deletion anomly) : ν¬ν μμ μ κ°μ΄ μ μ₯λ λ€λ₯Έ μ 보κΉμ§ μ°μμ μΌλ‘ μμ λλ νμ
β μ°μμμ (triggered deletion) λ¬Έμ λ°μ
μ½μ
μ΄μ(insertion anomly) : ν¬ν μ½μ
μ νΉμ μμ±μ ν΄λΉνλ κ°μ΄ μμ΄ NULL κ°μ μ
λ ₯ν΄μΌ νλ νμ
β NULL κ° λ¬Έμ λ°μ
μμ μ΄μ(update anomly) : ν¬ν μμ μ μ€λ³΅λ λ°μ΄ν°μ μΌλΆλ§ μμ λμ΄ λ°μ΄ν°μ λΆμΌμΉ λ¬Έμ κ° μΌμ΄λλ νμ
β λΆμΌμΉ(inconsistency) λ¬Έμ λ°μ
μ κ·νλ μν°ν°, μμ±, κ΄κ³μ λν΄ μμ€ν μ μ±λ₯ν₯μκ³Ό κ°λ°κ³Ό μ΄μμ λ¨μνλ₯Ό μν΄ μ€λ³΅, ν΅ν©, λΆλ¦¬ λ±μ μννλ λ°μ΄ν° λͺ¨λΈλ§μ κΈ°λ²
μ¦, μ±λ₯ ν₯μμ μν΄ μ κ·νλ λ°μ΄ν° λͺ¨λΈμμ μ€λ³΅, ν΅ν©, λΆλ¦¬ λ±μ μννλ λͺ¨λ κ³Όμ μ μλ―Ένλ€. λ°μ κ·νλ₯Ό μ μ©νλ©΄ λ°μ΄ν° 무결μ±μ΄ κΉ¨μ§ μ μλ μνμ΄ μλ€.
μ κ·νλ λ°μ΄ν°λ² μ΄μ€μμ μ±λ₯μ κ°μ νκΈ° μν΄ μ¬μ©λλ μ λ΅
λ°μ΄ν°λ₯Ό μ‘°νν λ μ‘°μΈμΌλ‘ μΈν μ±λ₯μ νκ° μμλ λ μ±λ₯μ΄ μ νλ κ²μ΄ μμλλ κ²½μ° μννλ€.
μμ κ·νλ λ°μ΄ν°λ² μ΄μ€μ λΉμ©μ μ΅μννκΈ° μν΄ μ€λ³΅μ νμ©νλ©° Entityλ₯Ό λ€μ ν΅ν©νκ±°λ λΆν νμ¬ μ κ·ν κ³Όμ μ ν΅ν΄ λμΆλ DB ꡬ쑰λ₯Ό μ¬μ‘°μ νλ κ³Όμ μ΄λ€.
Joinμ΄ λ무 λ§μμ§λ DB μ€κ³μ 쿼리λ μμ²μ μ²λ¦¬νλ μκ°μ μ¦κ°μν€λ λ¬Έμ κ° μκΈ° λλ¬Έμ λͺ¨λ μ£Όμ Entityλ₯Ό λΆλ¦¬νλ κ²μ΄ μ’μ κ²μ΄ μλλΌ DBμ μ λ°μ μΈ μ±λ₯μ ν₯μμν¬ μ μλ ꡬ쑰ν κ³Όμ μ κ±°μΉλ κ²μ΄ νμνλ€.
λͺ¨λ μμ± κ°μ΄ μμκ°μ κ°μ§ λ
κ³ κ°μ·¨λ―Έλ€(μ΄λ¦, μ·¨λ―Έλ€) 릴λ μ΄μ μ κ³ κ°μ·¨λ―Έ(μ΄λ¦, μ·¨λ―Έ) 릴λ μ΄μ μΌλ‘ λ°κΎΈμ΄ μ μ₯νλ©΄ μ 1μ κ·νμ λ§μ‘±ν¨
μ 1μ κ·νμ΄κ³ κΈ°λ³Έν€κ° μλ μμ±μ΄ κΈ°λ³Έν€μ μμ ν¨μ μ’ μμΌ λ
μμ ν¨μ μ’ μ?
λ°μ΄ν°λ² μ΄μ€μ κ°μμ€μ΄ 곡νκ΄ 210μΌλ‘ λ³κ²½λμλ€κ³ νμ.
κ·ΈλΌ λͺ¨λ λ°μ΄ν°λ² μ΄μ€μ κ°μμ€μ μ°Ύμ λ³κ²½ν΄μ£Όμ΄μΌ νλλ° λ§μ½ λ°μ΄ν°κ° μμ² λ§μ λλ λ¬Έμ κ° λ°μνκ² μ§ μμκ°?!
μ½κ² νμ¬ ν μ΄λΈ μ£Όμ μ λ³ μκ΄μ΄ μλ 컬λΌμ λ€λ₯Έ ν μ΄λΈλ‘ λΉΌλ μμ μ΄λΌκ³ μκ°νμ!
μ 2μ κ·νμ΄κ³ κΈ°λ³Έν€κ° μλ μμ±μ΄ κΈ°λ³Έν€μ λΉμ΄νμ (non-transitive)μΌλ‘ μ’ μν λ(μ§μ μ’ μ)
μ΄νμ μ’ μ
μ΄λ₯Ό ν΄κ²°νλ €λ©΄ μ΄λ° μμΌλ‘ (νμ λ²νΈ, κ°μ’μ΄λ¦) ν μ΄λΈκ³Ό (κ°μ’ μ΄λ¦, μκ°λ£) ν μ΄λΈλ‘ λΆν΄νλ©΄ λλ€.
π μ μ΄νμ μ’ μμ μ κ±°ν΄μΌ ν κΉ?
μλ₯Όλ€μ΄μ νμ λ²νΈκ° 501μΈ νμμ λ°μ΄ν° λ² μ΄μ€ κ°μ’λ₯Ό μκ°ν κ²μ΄κ³ μκ°λ£λ‘ 2λ§μμ μ§λΆν κ²μ΄λ€.
μ΄ λ μ΄νμ μ’
μμ΄ ν
μ΄λΈμ μ‘΄μ¬νλ€λ©΄ 501 νμμ΄ μκ°ν κ°μ’λ₯Ό μ€ν¬μΈ κ²½μνμΌλ‘
λ³κ²½νλ€λ©΄ μλ μ€ν¬μΈ κ²½μνμ λ§ μ€μ²μμΈλ°, 2λ§μμ μκ°νκ² λλ μ€λ₯κ° λ°μνλ€.
λ¬Όλ‘ μκ°λ£ 컬λΌλ κ°μ΄ λ³κ²½ν΄μ€ μλ μμ§λ§ μ΄λ κ² λλ©΄ λ²κ±°λ‘λ€.
ν¨μ μ’ μμ± X β Yκ° μ±λ¦½ν λ λͺ¨λ κ²°μ μ Xκ° ν보ν€μ΄λ©΄ BCNF μ κ·νμ΄λΌκ³ ν¨
νΉκ°μκ° λ¦΄λ μ΄μ μμ μ΄μνμμ μΌμΌν€λ (κ΅μ, νΉκ°μ΄λ¦)μ λΆν΄ν¨
κ·ΈλκΉ μ¬μ΄ λ§λ‘ μ 리νμλ©΄
μ κ·νλ ν μ΄λΈμ λΆλ¦¬ν΄μ μ΄μ νμμ μμ λ κ±°λΌκ³ λ ν μ μκ³ μ€λ³΅μ μμ λ κ±°λΌκ³ λ ν μ μλ 건λ°
μ 1 μ κ·νλ λͺ¨λ 컬λΌμ΄ νλμ κ°λ§ κ°κ² νλ κ²
μ 2 μ κ·νλ κ±°κΈ°λ€κ° νλ¬μ€λ‘ κΈ°λ³Έν€μ λΆλΆ μ§ν©μ΄ κ²°μ μκ° λλ©΄ μλλ€λ κ²
μ 3 μ κ·νλ νλ¬μ€λ‘ a->b b->cμΌλ a->cλ λ§μ‘±νλ©΄ μ λλ€λ κ²
BCNF μ κ·νλ νλ¬μ€λ‘ κ²°μ μμΈλ° ν보ν€κ° μλκ² μμΌλ©΄ μ λλ€λ κ²
μ°Έκ³
https://code-lab1.tistory.com/48
https://youtu.be/Y1FbowQRcmI