728x90

πŸ“μ •κ·œν™”(Normalization)

μ •κ·œν™”λŠ” ν…Œμ΄λΈ” 간에 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” λͺ©ν‘œλ₯Ό κ°€μ§€κ³  μžˆλ‹€. μ€‘λ³΅λœ 데이터λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œμ¨ 무결성을 μœ μ§€ν•  수 있고, 데이터 베이슀 μš©λŸ‰ λ˜ν•œ μ€„μΌμˆ˜ μžˆλ‹€.

ν…Œμ΄λΈ”μ΄ μ–΄λ–»κ²Œ λΆ„λ¦¬λ˜λŠ”μ§€μ— 따라 μ •κ·œν˜• 단계가 달라진닀.

πŸ“μ œ 1 μ •κ·œν˜•

  • 제 1 μ •κ·œν˜•μ€ λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  속성 값이 μ›μžκ°’μ„ κ°€μ§€λŠ” κ²½μš°μ΄λ‹€.
  • μ•„λž˜ 그림처럼 μΆ”μ‹ μˆ˜ μ„ μˆ˜μ˜ μ·¨λ―Έκ°€ (μ˜ν™”,μŒμ•…)으둜 μ›μžκ°’μ΄ μ•„λ‹ˆλ‹€.속성 값이 μ›μž 값이 아닐 경우 μ›μž 값을 갖도둝 λ³€ν™˜ ν•΄μ£Όμ–΄μ•Όν•œλ‹€.
  • 고객취미듀(이름,μ·¨λ―Έλ“€) λ¦΄λ ˆμ΄μ…˜μ„ 고객취미(이름,μ·¨λ―Έ)λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ λ°”κΎΈμ–΄ μ €μž₯ν•˜λ©΄ 제 1 μ •κ·œν˜•μ— λ§Œμ‘±ν•œλ‹€.

πŸ“μ œ 2 μ •κ·œν˜• 

  • 제 2 μ •κ·œν˜•μ€ λ¦΄λ ˆμ΄μ…˜μ΄ 제 1 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ³ , κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 킀본킀에 μ™„μ „ ν•¨μˆ˜ 쒅속일 λ•Œλ₯Ό μ˜λ―Έν•œλ‹€.
  • μ™„μ „ ν•¨μˆ˜ 쒅속은 A와 Bκ°€ λ¦΄λ ˆμ΄μ…˜ R속성이고 A -> B 쒅속성이 성립할 λ•Œ,Bκ°€ A의 속성 전체에 ν•¨μˆ˜ μ’…μ†ν•˜κ³  λΆ€λΆ„ μ§‘ν•© 속성에 ν•¨μˆ˜ μ’…μ†ν•˜μ§€ μ•Šμ„ 경우 μ™„μ „ ν•¨μˆ˜ 쒅속이닀.
  • 반면 A->B μ’…μ†μ„±μ—μ„œ A의 속성 일뢀λ₯Ό μ œκ±°ν•΄λ„ 쒅속성이 μ—¬μ „νžˆ μ„±λ¦½ν•˜λŠ” 경우 λΆˆμ™„μ „ ν•¨μˆ˜ 쒅속이닀. 예λ₯Ό λ“€μ–΄(A1,A2) -> B μ’…μ†μ„±μ—μ„œ A2λ₯Ό μ œκ±°ν–ˆλŠ”λ°λ„ A1 -> B κ°€ μ—¬μ „νžˆ μ„±λ¦½ν•œλ‹€λ©΄ λΆˆμ™„μ „ ν•¨μˆ˜ 쒅속이닀.

μœ„ μ‚¬μ§„μ—μ„œ (ν•™μƒλ²ˆν˜Έ,κ°•μ’Œμ΄λ¦„)의 볡합킀λ₯Ό κ°€μ§€κ³  가정을 ν•˜λ©΄ (ν•™μƒλ²ˆν˜Έ,κ°•μ’Œμ΄λ¦„)이 λͺ¨μ—¬μ„œ μ„±μ μ΄λΌλŠ” 값을 κ²°μ •ν•˜μ§€λ§Œ, κ°•μ˜μ‹€μ˜ 경우 κ°•μ’Œμ΄λ¦„μ΄ 없어도 κ°•μ˜μ‹€μ„ κ²°μ •ν•  수 μžˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ μ΄λŸ¬ν•œ 관계λ₯Ό λΆ€λΆ„ ν•¨μˆ˜ 쒅속이라고 ν•˜κ³  제2μ •κ·œν˜•μ€ μ™„μ „ ν•¨μˆ˜ 쒅속을 만쑱 μ‹œμΌœμ•Ό ν•˜λ―€λ‘œ κ°•μ’Œμ΄λ¦„κ³Ό κ°•μ˜μ‹€μ„ λΆ„λ¦¬ν•˜λ©΄ 제 2 μ •κ·œν˜•μ΄ μ„±λ¦½λœλ‹€.

 

πŸ“μ œ 3 μ •κ·œν˜•

  • 제 3 μ •κ·œν˜•μ€ λ¦΄λ ˆμ΄μ…˜ R이 제 2 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ³  κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 기본킀에 λΉ„μ΄ν–‰μ μœΌλ‘œ 쒅속할 λ•Œλ₯Ό μ˜λ―Έν•œλ‹€.
  • 이행적 μ’…μ†μ΄λž€ A->B,B->C κ°€ 성립할 λ•Œ  A->Cκ°€ μ„±λ¦½λ˜λŠ” ν•¨μˆ˜μ˜ 쒅속성을 μ˜λ―Έν•œλ‹€.

μ•„λž˜ 그림을 보면 ν•™μƒλ²ˆν˜Έμ˜ κ°•μ’Œμ΄λ¦„μ΄ λ³€κ²½λ˜λ©΄ μˆ˜κ°•λ£Œλ„ λ³€κ²½λ˜μ–΄μ•Ό ν•œλ‹€.속성듀을 λ…λ¦½μ μœΌλ‘œ λ§Œλ“œλŠ” 것이 μ•„λ‹ˆλΌ 학생 번호둜 학생이 μˆ˜κ°•ν•˜λŠ” κ°•μ’Œμ΄λ¦„μ„ 찾게 ν•˜κ³  κ·Έ ν•™μƒλ²ˆν˜Έκ°€ μ°Έμ‘°ν•˜λŠ” κ°•μ’Œμ΄λ¦„μ„ μ°Έμ‘°ν•˜μ—¬ μˆ˜κ°•λ£Œλ₯Ό μ°Ύκ²Œν•˜μ—¬ 학생 번호둜 μˆ˜κ°•λ£Œλ₯Ό μ°Έμ‘°ν•  수 있게 λ§Œλ“€λ©΄ 제 3 μ •κ·œν˜•μ΄ μ„±λ¦½λœλ‹€.

πŸ“BCNF  μ •κ·œν˜•

  • BCNF μ •κ·œν˜•μ€ λ¦΄λ ˆμ΄μ…˜ Rμ—μ„œ ν•¨μˆ˜ 쒅속성 X-> Yκ°€ 성립할 λ•Œ λͺ¨λ“  κ²°μ •μž Xκ°€ 후보킀인 μ •κ·œν˜•μ΄λ‹€.

κ·Έλ¦Όμ—μ„œ κΈ°λ³Έν‚€λŠ”(ν•™μƒλ²ˆν˜Έ, νŠΉκ°•μ΄λ¦„) 이고 κ΅μˆ˜λŠ” (ν•™μƒλ²ˆν˜Έ, νŠΉκ°•μ΄λ¦„)에 μ™„μ „ν•˜κ²Œ ν•¨μˆ˜μ μœΌλ‘œ μ’…μ†ν•˜κ³  있고 ꡐ수 μ—­μ‹œλ„ νŠΉκ°• 이름을 κ²°μ •ν•˜λ©° κ²°μ •μžμ˜ 역할을 ν•˜κ³  μžˆλ‹€. λ‹€μŒμ€ λͺ¨λ“  κ²°μ •μž Xκ°€ 후보킀인지λ₯Ό 확인해야 ν•©λ‹ˆλ‹€. (ν•™μƒλ²ˆν˜Έ, νŠΉκ°•μ΄λ¦„)은 κΈ°λ³Έν‚€μ΄λ―€λ‘œ λ‹Ήμ—°νžˆ κ²°μ •μžμ΄λ©° 후보킀이닀. ν•˜μ§€λ§Œ κ΅μˆ˜λŠ” κ²°μ •μžμ΄λ©΄μ„œ 후보킀가 μ•„λ‹ˆλ―€λ‘œ μ•„λž˜μ˜ μ™Όμͺ½ ν…Œμ΄λΈ”μ€ BCNFμ •κ·œν˜•μ΄ μ•„λ‹™λ‹ˆλ‹€. BCNFμ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κΈ° μœ„ν•΄μ„œ μ™Όμͺ½μ˜ ν…Œμ΄λΈ”μ„ 였λ₯Έμͺ½κ³Ό 같이 뢄리해야 ν•œλ‹€.

 

πŸ“λ¬΄μ†μ‹€ λΆ„ν•΄(Loseless-join decomposition)

μ΄μƒν˜„μƒμ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•΄μ•Ό ν•œλ‹€. ν•˜μ§€λ§Œ λ¦΄λ ˆμ΄μ…˜ R을 λΆ„ν•΄ν•  λ•Œ λΆ„ν•΄ ν›„μ˜ 결과와 λ‹¬λΌμ§€λ§Œ λ¬Έμ œκ°€ λ°œμƒν•˜λ―€λ‘œ μš°λ¦¬λŠ” 손싀 없이 λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ ν•΄μ•Όν•œλ‹€. λ¦΄λ ˆμ΄μ…˜ R을 R1κ³Ό R2둜 λΆ„ν•΄ν•  λ•Œ , R1> <R2을 λ§Œμ‘±ν•˜λŠ” 경우 λ¬΄μ†μ‹€λΆ„ν•΄λΌκ³ ν•œλ‹€.

 

 


REFERENCE

-MYSQL둜 λ°°μš°λŠ” 데이터 베이슀 개둠과 μ‹€μŠ΅ 

728x90