μ΄μ νμ(anomaly)
ν
μ΄λΈλ΄μ λ°μ΄ν° μ€λ³΅μ±μ μν΄μ λ°μλλ λ°μ΄ν° λΆμΌμΉ νμ.
= μ νΈλ¦¬λ·°νΈλ€ κ°μ μ‘΄μ¬νλ μ¬λ¬ μ’
μκ΄κ³λ₯Ό νλμ 릴λ μ΄μ
μ νννκΈ° λλ¬Έμ λνλλ λ°μ΄ν° λΆμΌμΉ νμ
κ°±μ μ΄μ, μ½μ μ΄μ, μμ μ΄μμΌλ‘ ꡬμ±λλ€.
- κ°±μ μ΄μ (Modification Anomaly) : λ°λ³΅λ λ°μ΄ν° μ€μ μΌλΆλ₯Ό κ°±μ ν μ λ°μ΄ν°μ λΆμΌμΉκ° λ°μνλ€.
- μ½μ μ΄μ (Insertion Anomaly) : λΆνμν μ 보λ₯Ό ν¨κ» μ μ₯νμ§ μκ³ μλ μ΄λ€ μ 보λ₯Ό μ μ₯νλ κ²μ΄ λΆκ°λ₯νλ€.
- μμ μ΄μ (Deletion Anomaly) : νμν μ 보λ₯Ό ν¨κ» μμ νμ§ μκ³ μλ μ΄λ€ μ 보λ₯Ό μμ νλ κ²μ΄ λΆκ°λ₯νλ€.
μ΄μ νμμ μ’ μκ΄κ³λ₯Ό λΆμνμ¬ μ¬λ¬ κ°μ 릴λ μ΄μ μΌλ‘ λΆν΄νλ μ κ·νλ₯Ό ν΅ν΄ λ°©μ§ν μ μλ€.
μ κ·ν
ν μ΄λΈ κ°μ μ€λ³΅λ λ°μ΄ν°λ₯Ό νμ©νμ§ μλλ€λ κ²μ΄λ€. μ€λ³΅λ λ°μ΄ν°λ₯Ό νμ©νμ§ μμμΌλ‘μ¨ λ¬΄κ²°μ±μ μ μ§ν μ μμΌλ©° DB μ μ₯ μ©λμ μ€μΌ μ μλ€.
μ κ·ν λ¨κ³μ λ°λΌ λΆν΄λλ λ°©λ²μ΄ λ€λ₯΄λ€.
μ 1 μ κ·ν(1NF)
- ν μ΄λΈμ 컬λΌμ΄ μμκ°(atomic value)μ κ°λλ‘ ν μ΄λΈμ λΆν΄νλ κ²
- κΈ°λ³Έ ν€μ λΆλΆ ν¨μ μ’
μλ μ νΈλ¦¬λ·°νΈκ° μ‘΄μ¬
- λΆλΆ ν¨μ μ’
μ : μ΄λ€ μμ± Yκ° λ€λ₯Έ λ³΅ν© μμ± Xμ λΆλΆμ§ν©μ μ’
μνλ κ΄κ³
- ex) (νμ λ²νΈ, κ°μ’ μ΄λ¦) → κ°μμ€, κ°μ’ μ΄λ¦ → κ°μμ€
- κΈ°λ³Έν€μΈ (νμ λ²νΈ, κ°μ’ μ΄λ¦)μΌλ‘ κ°μμ€μ κ²°μ νλλ°, λ³΅ν© μμ±μΈ κΈ°λ³Έν€μ λΆλΆ μ§ν©μΈ κ°μ’ μ΄λ¦μ μν΄ κ°μμ€ μ»¬λΌμ΄ κ²°μ λ μ μλ€.
- λΆλΆ ν¨μ μ’ μμ μ κ±°ν κ²μ΄ 2NF
- λΆλΆ ν¨μ μ’
μ : μ΄λ€ μμ± Yκ° λ€λ₯Έ λ³΅ν© μμ± Xμ λΆλΆμ§ν©μ μ’
μνλ κ΄κ³
μ 2 μ κ·ν(2NF)
- 1NFμ΄κ³
- ν€μ μνμ§ μλ λͺ¨λ μ νΈλ¦¬λ·°νΈλ€μ΄ κΈ°λ³Έ ν€μ μμ ν¨μ μ’
μμ λ§μ‘±νλλ‘ ν
μ΄λΈμ λΆν΄νλ κ²
- μμ ν¨μ μ’ μ : κΈ°λ³Έν€μ λΆλΆμ§ν©μ΄ κ²°μ μκ° λμ΄μ μλλ€.
- A → B, B → CλΌλ©΄, A → C : μ νΈλ¦¬λ·°νΈ Cλ μ νΈλ¦¬λ·°νΈ Aμ μ΄νμ ν¨μ μ’
μ
- μ΄νμ ν¨μ μ’ μ : A → B μ΄κ³ B → C μΌ λ, A → C λ₯Ό λ§μ‘±νλ κ΄κ³
- μ΄νμ ν¨μ μ’ μμ μ κ±°ν κ²μ΄ 3NF
μ 3 μ κ·ν(3NF)
- 2NFμ΄κ³
- ν보 ν€μ μνμ§ μλ λͺ¨λ μ νΈλ¦¬λ·°νΈλ€μ΄ ν보 ν€μ μ΄νμ ν¨μ μ’ μλμ§ μλλ‘ ν μ΄λΈμ λΆν΄νλ κ²
보μ΄μ€/μ½λ μ κ·ν(BCNF = κ°ν 3NF)
- μ 3 μ κ·νλ₯Ό μ§νν ν
μ΄λΈμ λν΄ λͺ¨λ κ²°μ μκ° ν보ν€κ° λλλ‘ ν
μ΄λΈμ λΆν΄νλ κ²
- νλ³΄ν€ : μνΌν€ μ€ λ μ΄μ μ€μΌ μ μλ ννλ₯Ό κ°μ§ κ².
- μ΅μμ±μ λ§μ‘±ν¨
- κΈ°λ³Έν€λ‘ μ μ λ μ μλ ν보
- μνΌν€ : ν μ΄λΈμ νμ κ³ μ νκ² μλ³ν μ μλ μμ± λλ μμ±μ μ§ν©
- νλ³΄ν€ : μνΌν€ μ€ λ μ΄μ μ€μΌ μ μλ ννλ₯Ό κ°μ§ κ².
μ 4 μ κ·ν(4NF)
- 릴λ μ΄μ μμ λ€μΉ μ’ μλμ§ μλλ‘ ν μ΄λΈμ λΆν΄νλ κ²
μ 5 μ κ·ν(5NF)
- 릴λ μ΄μ μ μ‘΄μ¬νλ μ‘°μΈ μ’ μμ΄ ν보 ν€λ₯Ό ν΅ν΄μλ§ μ±λ¦½μ΄ λλλ‘νλ μ κ·ν
μ κ·νμ λ¨μ
- ν
μ΄λΈ μκ° λ§μμ§μλ‘ μ‘°κ±΄κ²°ν©, μ¦ joinμ λΆλ΄μΌλ‘μΈν΄ μκ°μ΄ μ€λκ±Έλ¦Ό
- → μμ κ·ν(λΉμ κ·ν λλ λ°μ κ·ν): μ κ·νλ 릴λ μ΄μ μ 물리μ λ°μ΄ν° λͺ¨λΈλ§ κ³Όμ μμ μ±λ₯μ ν₯μμν€κΈ° μν΄ μ€λ³΅μ νμ©νκ³ λΌλ λ€μ ν΅ν©νκ±°λ λΆν νμ¬ κ΅¬μ‘°λ₯Ό μ¬μ‘°μ νλ κ²
- 'μ κ·ν & ν μ΄λΈ μ μ΅μ ν' λΌλ λ λ§λ¦¬ ν λΌλ₯Ό νκΊΌλ²μ μ‘κΈ°λ μ΄λ €μ
- 4, 5,6NFλ ν μ΄λΈ μκ° λ무 λ§μμ§λ―λ‘ μ€λ¬΄μμ νμ©ν κ°μΉκ° κ°μ₯ λμ κ²μ 3NF, BCNFλΌλ κ²°λ‘ μ λλ¬ν¨
μ°Έκ³
'πCS > DB' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[DB] μΊμ, Redis (0) | 2021.04.18 |
---|---|
[DB] Connection Pool (0) | 2021.04.18 |
[DB] N + 1 λ¬Έμ (0) | 2021.04.11 |
[DB] Index (1) | 2021.04.04 |
[SQL] λ€μ€μ λ ¬ ORDER BY (1) | 2020.01.09 |
λκΈ