Skip to content

Latest commit

Β 

History

History
101 lines (66 loc) Β· 5.23 KB

Normalization.md

File metadata and controls

101 lines (66 loc) Β· 5.23 KB

μ •κ·œν™”(Normailization)

κ°€μž₯ 큰 λͺ©ν‘œ λͺ©ν‘œλŠ” ν…Œμ΄λΈ” 간에 μ€‘λ³΅λœ 데이터λ₯Ό ν˜€μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
μ€‘λ³΅λœ 데이터λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŒμœΌλ‘œμ¨ 무결성(Integrity)λ₯Ό μœ μ§€ν•  수 있으며, DB의 μ €μž₯ μš©λŸ‰μ„ 쀄일 μˆ˜μžˆμŠ΅λ‹ˆλ‹€.

λͺ©μ 

  • λ°μ΄ν„°μ˜ 쀑볡을 μ—†μ• λ©΄μ„œ λΆˆν•„μš”ν•œ 데이터λ₯Ό μ΅œμ†Œν™”
  • 무결성을 지킀고, 이상 ν˜„μƒμ„ 방지
  • ν…Œμ΄λΈ”μ„ 논리적이고 μ§κ΄€μ μœΌλ‘œ ꡬ성
  • λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰가 ν™•μž₯에 μš©μ΄ν•΄μ§

단계

  1. 제 1μ •κ·œν™”
  2. 제 2μ •κ·œν™”
  3. 제 3μ •κ·œν™”
  4. BCNF μ •κ·œν™”

제 1 μ •κ·œν™”(1NF)

제 1 μ •κ·œν™”λŠ” ν…Œμ΄λΈ”μ˜ 컬럼이 μ›μžκ°’(Atomic Value, ν•˜λ‚˜μ˜ κ°’)을 갖도둝 ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

쑰건

  • μ–΄λ–€ λ¦΄λ ˆμ΄μ…˜μ— μ†ν•œ λͺ¨λ“  도메인이 μ›μžκ°’μœΌλ‘œ λ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • λͺ¨λ“  속성에 λ°˜λ³΅λ˜λŠ” 그룹이 λ‚˜νƒ€λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • κΈ°λ³Έν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΄€λ ¨ λ°μ΄ν„°μ˜ 각 집합을 κ³ μœ ν•˜κ²Œ 식별할 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

image

μœ„ ν…Œμ΄λΈ”μ—μ„œ μΆ”μ‹ μˆ˜μ™€ λ°•μ„Έλ¦¬λŠ” 취미의 κ°œμˆ˜κ°€ 1κ°œκ°€ μ•„λ‹ˆκΈ°μ— 제 1 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

μ•„λž˜μ™€ 같이 제 1 μ •κ·œν™”ν•˜μ—¬ λΆ„ν•΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

image

제 2 μ •κ·œν™”(2NF)

제 2 μ •κ·œν™”λŠ” 1NFλ₯Ό μ§„ν–‰ν•œ ν…Œμ΄λΈ”μ— λŒ€ν•΄ μ™„μ „ ν•¨μˆ˜ 쒅속을 λ§Œμ‘±ν•˜λ„λ‘ ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•˜λŠ” 것 μž…λ‹ˆλ‹€.

  • μ™„μ „ ν•¨μˆ˜ 쒅속 : κΈ°λ³Έν‚€μ˜ 뢀뢄집합이 κ²°μ •μžκ°€ λ˜μ–΄μ„  μ•ˆλœλ‹€λŠ” 것

μ˜ˆμ‹œ

image

μœ„ ν…Œμ΄λΈ”μ—μ„œ κΈ°λ³Έν‚€λŠ” (ν•™μƒλ²ˆν˜Έ, κ°•μ’Œμ΄λ¦„)으둜 λ³΅ν•©ν‚€μž…λ‹ˆλ‹€.
그리고 (ν•™μƒλ²ˆν˜Έ, κ°•μ’Œμ΄λ¦„)인 κΈ°λ³Έν‚€λŠ” 성적을 κ²°μ •ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
(ν•™μƒλ²ˆν˜Έ, κ°•μ’Œμ΄λ¦„) --> (성적)

그런데 μ—¬κΈ°μ„œ κ°•μ˜μ‹€μ΄λΌλŠ” μ»¬λŸΌμ€ κΈ°λ³Έν‚€μ˜ 뢀뢄집합인 κ°•μ’Œμ΄λ¦„μ— μ˜ν•΄ 결정될 수 μžˆμŠ΅λ‹ˆλ‹€. (κ°•μ’Œμ΄λ¦„) --> (κ°•μ˜μ‹€)

즉, κΈ°λ³Έν‚€(ν•™μƒλ²ˆν˜Έ, κ°•μ’Œμ΄λ¦„)의 뢀뢄킀인 (κ°•μ’Œμ΄λ¦„)이 κ²°μ •μžμ΄κΈ° λ•Œλ¬Έμ—
μœ„μ˜ ν…Œμ΄λΈ”μ˜ 경우 λ‹€μŒκ³Ό 같이 기쑴의 ν…Œμ΄λΈ”μ—μ„œ κ°•μ˜μ‹€μ„ λΆ„ν•΄ν•˜μ—¬ λ³„λ„μ˜ ν…Œμ΄λΈ”λ‘œ κ΄€λ¦¬ν•˜μ—¬ 제 2 μ •κ·œν˜•μ„ λ§Œμ‘±μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

image

제 3 μ •κ·œν™”(3NF)

2NFκ°€ μ§„ν–‰λœ ν…Œμ΄λΈ”μ—μ„œ 이행적 쒅속을 μ—†μ• κΈ° μœ„ν•΄ ν…Œμ΄λΈ”μ„ λΆ„λ¦¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

  • 이행적 쒅속 : A β†’ B, B β†’ Cλ©΄ A β†’ Cκ°€ μ„±λ¦½λ©λ‹ˆλ‹€.

쑰건

  • λ¦΄λ ˆμ΄μ…˜μ΄ 2NF에 λ§Œμ‘±ν•΄μ•Όν•©λ‹ˆλ‹€.
  • κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성듀은 기본킀에 μ˜μ‘΄ν•©λ‹ˆλ‹€.

μ˜ˆμ‹œ

image

기쑴의 ν…Œμ΄λΈ”μ—μ„œ 학생 λ²ˆν˜ΈλŠ” κ°•μ’Œμ΄λ¦„μ„ κ²°μ •ν•˜κ³  있고, κ°•μ’Œμ΄λ¦„μ€ μˆ˜κ°•λ£Œλ₯Ό κ²°μ •ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 이름 (ν•™μƒλ²ˆν˜Έ, κ°•μ’Œ 이름)ν…Œμ΄λΈ”κ³Ό (κ°•μ’Œ 이름, μˆ˜κ°•λ£Œ)ν…Œμ΄λΈ”λ‘œ λΆ„ν•΄ν•΄μ•Όν•©λ‹ˆλ‹€.

이행적 쒅속을 μ œκ±°ν•˜λŠ” 이유
501번 학생이 μˆ˜κ°•ν•˜λŠ” κ°•μ’Œκ°€ 슀포츠 κ²½μ˜ν•™μœΌλ‘œ λ³€κ²½λ˜μ—ˆλ‹€κ³  κ°€μ •ν•˜λ©΄,
이행적 쒅속이 μ‘΄μž¬ν•  λ•Œ 501번의 학생은 슀포츠 κ²½μ˜ν•™μ΄λΌλŠ” μˆ˜μ—…μ„ 20000μ›μ΄λΌλŠ” μˆ˜κ°•λ£Œλ‘œ λ“£κ²Œ λ©λ‹ˆλ‹€.
λ¬Όλ‘  κ°•μ’Œ 이름에 맞게 μˆ˜κ°•λ£Œλ₯Ό λ‹€μ‹œ λ³€κ²½ν•  수 μžˆμ§€λ§Œ, μ΄λŸ¬ν•œ λ²ˆκ±°λ‘œμ›€μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 제 3 μ •κ·œν™”λ₯Ό μ΄ν–‰ν•©λ‹ˆλ‹€.

즉, 학생 번호λ₯Ό 톡해 κ°•μ’Œ 이름을 μ°Έμ‘°ν•˜κ³ ,
κ°•μ’Œ μ΄λ¦„μœΌλ‘œ μˆ˜κ°•λ£Œλ₯Ό μ°Έμ‘°ν•˜λ„λ‘ ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•΄μ•Όν•©λ‹ˆλ‹€.

image

BCNF μ •κ·œν™”

3NFλ₯Ό μ§„ν–‰ν•œ ν…Œμ΄λΈ”μ— λŒ€ν•΄ λͺ¨λ“  κ²°μ •μžκ°€ 후보킀가 λ˜λ„λ‘ ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ˜ˆμ‹œ

image

νŠΉμˆ˜μˆ˜κ°• ν…Œμ΄λΈ”μ—μ„œ κΈ°λ³Έν‚€λŠ” (ν•™μƒλ²ˆν˜Έ, νŠΉκ°•μ΄λ¦„)μž…λ‹ˆλ‹€.
그리고 κΈ°λ³Έν‚€(ν•™μƒλ²ˆν˜Έ, νŠΉκ°•μ΄λ¦„)λŠ” ꡐ수λ₯Ό κ²°μ •ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
λ˜ν•œ, μ—¬κΈ°μ„œ κ΅μˆ˜λŠ” νŠΉκ°•μ΄λ¦„μ„ κ²°μ •ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ„œ λ¬Έμ œλŠ” κ΅μˆ˜κ°€ νŠΉκ°•μ΄λ¦„μ„ κ²°μ •ν•˜λŠ” κ²°μ •μžμ΄μ§€λ§Œ, 후보킀가 μ•„λ‹ˆλΌλŠ” μ μž…λ‹ˆλ‹€.
κ·Έλ ‡κΈ° λ•Œλ¬Έμ— BCNF μ •κ·œν™”λ₯Ό λ§Œμ‘±μ‹œν‚€κΈ° μœ„ν•΄μ„œ μœ„μ˜ ν…Œμ΄λΈ”μ„ λ‹€μŒκ³Ό 같이 νŠΉκ°•μ‹ μ²­ ν…Œμ΄λΈ”κ³Ό νŠΉκ°•κ΅μˆ˜ ν…Œμ΄λΈ”λ‘œ λΆ„ν•΄ν•΄μ•Όν•©λ‹ˆλ‹€.

image

Reference