λ°°κ²½μ§μ : ν¨μ μ’ μ
λ ννμ Xκ°μ΄ κ°λ€λ©΄ Yκ°λ κ°μ κ²½μ°κ° μλ€. μ¦ X κ°μ λ°λΌμ Yμ κ°μ΄ κ²°μ λλ κ²μΈλ°, Xμ Yλ₯Όμ ν¨μ μ’ μ κ΄κ³λΌκ³ νλ€.
κ΄μ μ λ°λΌμ Xκ° Yλ₯Ό ν¨μμ μΌλ‘ κ²°μ νλ€. λΌκ³ ν μλ μκ³ Yκ° Xμ ν¨μμ μΌλ‘ μμ‘΄νλ€. λΌκ³ ννν μλ μλ€.
μ΄λ¬ν κ΄κ³λ₯Ό ν¨μ μ’ μ νΉμ Funtional Dependency(FD)λΌκ³ νλ€.
μλ₯Ό λ€μ΄ μλ ν μ΄λΈμμλ νμμ΄λ¦κ³Ό νλ‘κ·Έλ¨μ΄ primary keyμ΄λ©° μ΄λ κ°κ²©μ κ²°μ νλ€.
(νμ λ²νΈκ° μ’ λ μμ°μ€λ½μ§λ§ μ€λͺ μ μν΄ λ€λ₯Έ ν€λ₯Ό μμλ‘ λ λ€.)
μ΄ λμ FD κ΄κ³λΌκ³ ν μ μμΌλ©° κΈ°νΈλ‘λ {νμμ΄λ¦,νλ‘κ·Έλ¨} -> κ°κ²© μΌλ‘ νμνλ€.
νμλ²νΈ | νμμ΄λ¦ | νλ‘κ·Έλ¨ | κ°κ²© |
101 | λ―Όμ | ν λμ€ | 5000 |
102 | μ² μ | λꡬ | 7000 |
103 | μν¬ | μΆκ΅¬ | 4000 |
103 | μν¬ | λꡬ | 7000 |
μ¬κΈ°μ μ£Όμν μ μ FDλ₯Ό νμ ν λλ μ€ν€λ§μ μλ―Έλ₯Ό λ³΄κ³ νμ ν΄μΌνλ©° ν μ΄λΈμ λ°μ΄ν°λ€μ λ³΄κ³ μΆλ‘ ν΄μλ μλλ€.
μλνλ©΄ νμ μ΄λ¦κ³Ό κ°κ²© λ°μ΄ν°κ° FDμ²λΌ 보μΈλ€κ³ μκ°ν΄λ λλͺ μ΄μΈμ΄λΌλ λ³μκ° μμ μ μκ³ μ¬λ¬ μμΈ μν©λ€μ΄ μκΈ° λλ¬Έμ΄λ€.
μ΄λ κ² κ΅¬μΆνλ €λ λ°μ΄ν°λ² μ΄μ€μ μμ±(μ νΈλ¦¬λ·°νΈ)κ° κ΄κ³μ μΌλ‘ μ΄λ€ μλ―Έλ₯Ό μ§λμ§μ λ°λΌμ FDλ€μ΄ λ¬λΌμ§λ€.
λ°λΌμ λ°μ΄ν°(or state)λ§ λ³΄κ³ νλ¨νκΈ°λ³΄λ¨ μ€ν€λ§λ₯Ό λ³΄κ³ μλ―Έμ μΌλ‘ μ‘΄μ¬νλ μ§ νμ ν΄μΌνλ€.
λ νκ°μ§ μ€μν μ μ FDλ μκ΄κ³κ° μ±λ¦½νμ§ μλλ€λ κ²μ΄λ€.
X -> Y κ΄κ³λΌκ³ ν΄μ Y->Xκ° μ±λ¦½νμ§λ μλλ€. μλ₯Ό λ€μ΄λ³΄λ©΄ νλ‘κ·Έλ¨μ΄ κ°κ²©μ κ²°μ μ§λ λ€κ³ ν΄μ κ°κ²©μ΄ νλ‘κ·Έλ¨μ κ²°μ νλ κ²μ μλλ€!
{νλ‘κ·Έλ¨} -> κ°κ²© (O)
{κ°κ²©} -> νλ‘κ·Έλ¨ (X)
*{}-> Y λ "Yμ μΈμ λ νλμ κ°λ§μ κ°μ§λ€"λ μλ―Έμ΄λ€.
Trivial Funtional Dependcy
X -> Yμ κ΄κ³μμ Yκ° Xμ λΆλΆ μ§ν©μ΄λΌλ©΄ μ΄ κ΄κ³λ₯Ό Trivial Funtional DependcyλΌκ³ νλ€.
μλ₯Ό λ€μ΄, {a,b,c} -> {c} κ°μ΄ cκ° a,b,cμ λΆλΆμ§ν©μΈ κ²½μ°κ° μλ€.
λ°λμ κ²½μ°λ‘λ λΉμ°ν non-Trivial Funtional Dependcy (μμ μκ²ΉμΉλ©΄ completely-non) κ°μ κ΄κ³κ° μλ€.
Partial Functional Dependency
X->Yμ κ΄κ³μμ Xμ λΆλΆμ§ν©(μ 체λ₯Ό μ μΈν)λ§μΌλ‘ Yλ₯Ό κ²°μ μ§μ μ μλ€λ©΄ μ΄λ₯Ό Partial Functional DependencyλΌκ³ νλ€.
μλ₯Ό λ€μ΄, {a,b,c} -> {c} μμ {a} -> {c}κ° μ±λ¦½νλ κ²½μ°κ° μλ€. λ°λμ κ²½μ°λ Full Funtional Dependcyκ° μλ€.
DB μ κ·νλ
λ°μ΄ν° μ€λ³΅κ³Ό insertion , update , deletion anomalyλ₯Ό μ΅μννκΈ° μν΄ ν¨μμ μ’ μμ±μ μ΄μ©ν΄μ relational DBλ₯Ό ꡬμ±νλ κ³Όμ μ΄λ€.
μ½μ μ΄μ : μλ£λ₯Ό μ½μ ν λ μλμΉ μμ μλ£κΉμ§ μ½μ ν΄μΌνλ€. (ex. null)
κ°±μ μ΄μ : μ€λ³΅λ λ°μ΄ν° μ€ μΌλΆλ§ μμ λμ΄ λͺ¨μμ΄ λ°μνλ κ²μ΄λ€.
μμ μ΄μ : μ΄λ€ μ 보λ₯Ό μμ νλ©΄ μλμΉ μμ λ€λ₯Έ μ 보κΉμ§ μμ λλ€.
μ κ·νλ₯Ό μ§ννκ² λλ©΄ λ°μ΄ν° μμ μμ μ¬λ¬ μ΄μ νμλ€μ μ€μΌ μ μκ³ , νμ₯μ μ©μ΄νμ¬ λ°μ΄ν° κ΅¬μ‘°κ° λ³κ²½λμ΄λ μ΄ν리μΌμ΄μ μ μ΅μνμ μν₯λ§μ λ―ΈμΉλ€.
μ κ·νμλ λͺ λ¨κ³μ nf(normal forms)κ° μλλ° μ²μ λ¨κ³λΆν° μμ°¨μ μΌλ‘ μ§ννλ©° μ λ¨κ³λ₯Ό λ§μ‘±ν΄μΌ λ€μ λ¨κ³λ₯Ό μ§νν μ μλ€.
λ³΄ν΅ μ€λ¬΄μμ 3nfκΉμ§ νλ©΄ μ κ·νλμλ€λΌκ³ λ§νλ€.
μ 1 μ κ·ν(1NF)
λͺ¨λ attributeμ valueλ λ μ΄μ λλ μ§ μ μλ κ°μ΄μ΄μΌνλ€. -> μ¬λ¬ κ°μ κ°μ§κ³ μμΌλ©΄ μλλ€.
νμλ²νΈ | νμμ΄λ¦ | νλ‘κ·Έλ¨ |
101 | λ―Όμ | ν λμ€ |
102 | μ² μ | λꡬ |
103 | μν¬ | μΆκ΅¬,λꡬ |
(μμ μ°Έκ³ : μ½λ©μ ν)
μν¬μ ν΄λΉνλ νλ‘κ·Έλ¨ λ°μ΄ν°κ° λ κ°λ₯Ό κ°μ§κ³ μμΌλ―λ‘ μ΄λ μ 1 μ κ·νμ μλ°νλ€.
μ 2 μ κ·ν(2NF)
λͺ¨λ non-prime attributeλ λͺ¨λ keyμ λν΄ full funtional dependentν΄μΌνλ€.
(νμ¬ ν μ΄λΈκ³Ό μκ΄μλ 컬λΌλ€μ λΆλ¦¬νλ€.)
μ 1 μ κ·νμ μ μ©νμμΌλ©΄ μ΄μ μ 2 μ κ·νμ μ§νν μ°¨λ‘μ΄λ€.
νμ¬ ν μ΄λΈμμλ νμ μ 보μ νλ‘κ·Έλ¨ μ λ³΄κ° νΌμ¬ν΄μλ€. μ΄λ° ν μ΄λΈ ꡬ쑰λ λ°μ΄ν°λ₯Ό λ³κ²½ν΄μΌν μμ λ§€μ° λ²κ±°λ‘μΈ μ μλ€.
νμλ²νΈ | νμμ΄λ¦ | νλ‘κ·Έλ¨ | κ°κ²© |
101 | λ―Όμ | ν λμ€ | 5000 |
102 | μ² μ | λꡬ | 7000 |
103 | μν¬ | μΆκ΅¬ | 4000 |
103 | μν¬ | λꡬ | 7000 |
(μμ μ°Έκ³ : μ½λ©μ ν)
μμμμλ κ°κ²© 컬λΌμ΄ νλ‘κ·Έλ¨μ partial funtional dependentνλ€.
{νμμ΄λ¦,νλ‘κ·Έλ¨} -> κ°κ²©
{νλ‘κ·Έλ¨} -> κ°κ²©
primary keyκ° νμλ²νΈ,νλ‘κ·Έλ¨μ΄μ§λ§ κ°κ²©μ νλ‘κ·Έλ¨ νλλ§μΌλ‘ κ²°μ λ μ μλ€. -> νμ¬ ν μ΄λΈμ μκ΄ μλ λ°μ΄ν°κ° λ€μ΄κ° κ²μ΄λ€!
μ΄ μν©μμ κ°κ²©μ΄ λ³κ²½λ¨μ λλ©΄ 컬λΌμ μΌμΌμ΄ μμ ν΄μ£Όμ΄μΌ νκΈ° λλ¬Έμ λ§€μ° λΉν¨μ¨μ μ΄λ€. λ°λΌμ λ€μκ³Ό κ°μ΄ λΆλ¦¬ν μ μλ€.
νλ‘κ·Έλ¨ | κ°κ²© |
ν λμ€ | 5000 |
λꡬ | 7000 |
μΆκ΅¬ | 4000 |
μ΄μ κ°κ²©μ νλ‘κ·Έλ¨μ full functional dependencyνλ©° νλ‘κ·Έλ¨ ν μ΄λΈμ μ°κ΄μλ 컬λΌλ€λ§ λ€μ΄κ° μλ€.
λ§μ½ κ°κ²©μ΄ μμ λλ€κ³ νλλΌλ μ΄ ν μ΄λΈμ κ°λ§ μμ νλ©΄ λκΈ° λλ¬Έμ ν¨μ¨μ μ΄λΌκ³ ν μ μλ€.
μ 3 μ κ·ν (3NF)
λͺ¨λ non-prime attribute(ν€λ₯Ό μ μΈν)λ μ΄λ€ keyμλ transitive FD(μ΄νμ ν¨μ μ’ μ) νλ©΄ μλλ€.
transitive FD(μ΄νμ ν¨μ μ’ μ) μ΄λ, X -> Y μ΄κ³ Y -> Zμ΄λ©΄ X -> Z μΈ κ²½μ°μ΄λ€.
νλ‘κ·Έλ¨ | κ°κ²© | κ°μ¬ | μ νλ²νΈ |
ν λμ€ | 5000 | νμμ | 010-xxxx |
λꡬ | 7000 | μ΄μ§μ | 010-xxxx |
μΆκ΅¬ | 4000 | μ΄λͺ ν | 010-xxxx |
μ΄ κ²½μ°μλ νλ‘κ·Έλ¨μ ν΅ν΄ κ°μ¬κ° κ²°μ λλλ° λμμ κ°μ¬κ° μ νλ²νΈ λν κ²°μ ν μ μλ€.
νλ‘κ·Έλ¨ -> κ°μ¬
κ°μ¬ -> μ νλ²νΈ
=> νλ‘κ·Έλ¨ -> μ νλ²νΈ κ°μ μ΄νμ ν¨μ μ’ μμ΄ λ°μνλ€.
λ€μκ³Ό κ°μ λ¬Έμ κ° λ°μν μ μλ€. μλ₯Ό λ€μ΄ κ°μ¬κ° μ¬λ¬ κ°μ κ³Όλͺ©μ λ΄λΉνλ€κ³ κ°μ νμμ λ μ€λ³΅λ κ°μ¬λ μ¬λ¬ κ°μΌ κ²μ΄λ€.
νλ‘κ·Έλ¨ | κ°κ²© | κ°μ¬ | μ νλ²νΈ |
ν λμ€ | 5000 | νμμ | 010-xxxx |
ν λμ€ μ λ¬Έ | 3000 | νμμ | 010-xxxx |
λꡬ | 7000 | μ΄μ§μ | 010-xxxx |
μΆκ΅¬ | 4000 | μ΄λͺ ν | 010-xxxx |
κ·Έλ λ€λ©΄ λ§μ½ ν΄λΉ κ°μ¬κ° μ νλ²νΈλ₯Ό λ³κ²½νμμ κ²½μ° μΌμΌμ΄ λ³κ²½ν΄μ£Όμ΄μΌ νλ©° μ΄λ κ°±μ μ΄μμ΄ λ°μν μ μλ€.
λ°λΌμ λ€μκ³Ό κ°μ΄ ν΄λΉ 컬λΌμ λΆλ¦¬ν΄μ€μΌλ‘μ¨ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
κ°μ¬ | μ νλ²νΈ |
νμμ | 010-xxxx |
μ΄μ§μ | 010-xxxx |
μ΄λͺ ν | 010-xxxx |
λ³΄ν΅ μ¬κΈ°κΉμ§ μ€λ©΄ μ κ·ν λμλ€κ³ λ§ν μ μμ§λ§ BCNFκΉμ§λ§ λ μμλ³΄λ €κ³ νλ€.
BCNF
λͺ¨λ μ ν¨ν non-trivial FD X -> Y λ Xκ° μνΌν€μ¬μΌνλ€.
λ§μ½ ν μ΄λΈμ κ°μμ€ μ 보κΉμ§ μΆκ°λμλ€κ³ κ°μ ν΄λ³΄μ
νλ‘κ·Έλ¨ | κ°κ²© | κ°μ¬ | κ°μμ€ |
ν λμ€ | 5000 | νμμ | 207νΈ |
ν λμ€ μ λ¬Έ | 3000 | νμμ | 207νΈ |
λꡬ | 7000 | μ΄μ§μ | 211νΈ |
μΆκ΅¬ | 4000 | μ΄λͺ ν | 213νΈ |
μ΄μ κ°μμ€μ ν΅ν΄ ν΄λΉ κ°μ¬μ μ 보λ₯Ό μ μ μλ€. νμ§λ§ κ΅³μ΄ μ€λ³΅λ κ°μ¬μ λ°μ΄ν°λ€μ κ°μ§κ³ μμ΄μΌν κΉ? λΌλ μλ¬Έμ΄ λλλ° μ΄μ κ΄λ ¨λ κ°λ μ΄ BCNFμ΄λ€.
ν μ΄λΈμ 보면 κ°μμ€μ ν΅ν΄ νμ¬ μ΄λ€ κ°μ¬κ° λ°°μ λμλ μ§ μ μ μμΌλ―λ‘ κ°μμ€ -> κ°μ¬λ non-trivial FD λΌκ³ ν μ μλ€.
νμ§λ§ κ°μμ€μ μνΌν€κ° μλλ―λ‘ BCNFλ₯Ό μλ°νλ€.
κ°μμ€ | κ°μ¬ |
207νΈ | νμμ |
2011νΈ | μ΄μ§μ |
213νΈ | μ΄λͺ ν |
ν μ΄λΈμ λΆλ¦¬ν κ²°κ³Ό κ°μμ€μ μνΌν€κ° λμκ³ λ μ΄μ μλ ν μ΄λΈμ μ€λ³΅λ κ°μ¬ λ°μ΄ν°λ₯Ό λ£μ§ μμλ λλ€.
μ΄λ κ² ν΄λλ©΄ BCNFλ₯Ό μ§ν€λ©΄μ μ€λ³΅λ λ°μ΄ν°λ€μ μ΅μν ν μ μλ€.
'Computer Science > λ°μ΄ν°λ² μ΄μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°μ΄ν°λ² μ΄μ€ μΈλ±μ€λ (μΈλ±μ€μ κ°λ κ³Ό μ’ λ₯) (1) | 2024.01.15 |
---|