[λ°μ΄ν„°λ² μ΄μŠ€] μ •κ·œν™”(Normalization) / μ΄μƒν˜„μƒ, ν•¨μˆ˜μ’…μ†μ„±, μ •κ·œν™”

πŸ§ͺ Computer Science/Database

**μ •κ·œν™”λ₯Ό ν•΄μ•Όν•˜λŠ” μ΄μœ λŠ” 잘λͺ»λœ ν…Œμ΄λΈ” μ„€κ³„λ‘œ 인해 Anomaly(이상 ν˜„μƒ)κ°€ λ‚˜νƒ€λ‚˜κΈ° λ•Œλ¬Έμ΄λ‹€.

μ΄μƒν˜„μƒ(Anomaly)

  1. μ‚­μ œ 이상: νŠœν”Œ μ‚­μ œ μ‹œ 같이 μ €μž₯된 λ‹€λ₯Έ μ •λ³΄κΉŒμ§€ μ—°μ‡„μ μœΌλ‘œ μ‚­μ œλ˜λŠ” ν˜„μƒ
  2. μ‚½μž… 이상: νŠœν”Œ μ‚½μž… μ‹œ νŠΉμ • 속성에 ν•΄λ‹Ήν•˜λŠ” 값이 μ—†μ–΄ NULL을 μž…λ ₯ν•΄μ•Όν•˜λŠ” ν˜„μƒ
  3. μˆ˜μ •(κ°±μ‹ ) 이상: νŠœν”Œ μˆ˜μ • μ‹œ μ€‘λ³΅λœ λ°μ΄ν„°μ˜ μΌλΆ€λ§Œ μˆ˜μ •λ˜μ–΄ μΌμ–΄λ‚˜λŠ” 데이터 뢈일치 ν˜„μƒ

μ΄μƒν˜„μƒμ€ μ„œλ‘œ κ³΅μœ ν•˜λŠ” λ°μ΄ν„°μž„μ—λ„ λΆˆκ΅¬ν•˜κ³  각자의 νŠœν”Œμ— λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— λ°œμƒν•œλ‹€. κ·ΈλŸ¬λ―€λ‘œ ν…Œμ΄λΈ”μ„ λΆ„λ¦¬ν•˜μ—¬ κ·Έ ν…Œμ΄λΈ”μ„ 톡해 κ°•μ˜ 제λͺ©μ΄λ‚˜ κ°•μ˜μ‹€μ„ μ°Έκ³ ν•˜κ²Œλ” ν•œλ‹€λ©΄ μ΄μƒν˜„μƒλ“€μ„ ν•΄κ²°ν•  수 μžˆλ‹€.



ν•¨μˆ˜ 쒅속성(Functional Dependency)

ν•¨μˆ˜ μ’…μ†μ„±μ΄λž€?

  • μ–΄λ–€ 속성 A의 값을 μ•Œλ©΄ λ‹€λ₯Έ 속성 B의 값이 μœ μΌν•˜κ²Œ μ •ν•΄μ§€λŠ” 관계λ₯Ό 쒅속성이라 함
  • A β†’ B둜 ν‘œκΈ°ν•˜λ©° Aλ₯Ό B의 κ²°μ •μžλΌκ³  함

μœ„ λ¦΄λ ˆμ΄μ…˜μ—μ„œ, ν•™μƒλ²ˆν˜Έλ₯Ό 보면 학생이름이 μ •ν•΄μ§€λŠ” κ²ƒμ²˜λŸΌ 속성 A의 값을 μ•Œ λ•Œ λ‹€λ₯Έ 속성 B의 값이 μœ μΌν•˜κ²Œ μ •ν•΄μ§€λŠ” μ˜μ‘΄κ΄€κ³„λ₯Ό 속성 BλŠ” 속성 A에 μ’…μ†ν•œλ‹€ λ˜λŠ” 속성 AλŠ” 속성 Bλ₯Ό κ²°μ •ν•œλ‹€λΌκ³  ν•œλ‹€. 이 λ•Œ, Aκ°€ Bλ₯Ό κ²°μ •ν•œλ‹€κ³  ν•˜μ—¬ Aλ₯Ό B의 κ²°μ •μžλΌκ³  ν•œλ‹€.


λ¦΄λ ˆμ΄μ…˜κ³Ό κΈ°λ³Έν‚€

  • 관계(Relationship)λž€ 개체 μ‚¬μ΄μ˜ 연관성을 λ‚˜νƒ€λ‚΄λŠ” κ°œλ…μ΄λ‹€.
  • 관계 νƒ€μž…(Relationship Type)μ΄λž€ 개체 νƒ€μž…κ³Ό 개체 νƒ€μž… κ°„μ˜ μ—°κ²° κ°€λŠ₯ν•œ 관계λ₯Ό μ •μ˜ν•œ 것이닀.
  • 관계 집합(Relationship Set)은 κ΄€κ³„λ‘œ μ—°κ²°λœ 집합을 μ˜λ―Έν•œλ‹€.

μ΄μƒν˜„μƒκ³Ό κ²°μ •μž

μ΄μƒν˜„μƒμ€ ν•œ 개의 λ¦΄λ ˆμ΄μ…˜μ— 두 개 μ΄μƒμ˜ 속성이 ν¬ν•¨λ˜μ–΄ 있고 κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 κ²°μ •μžμΌ λ•Œ λ°œμƒν•œλ‹€.

μœ„μ˜ ν•™μƒμˆ˜κ°•μ‹€μ  λ¦΄λ ˆμ΄μ…˜μ˜ 경우, κΈ°λ³Έν‚€λ₯Ό μ§€λ‹Œ 학생 정보(ν•™μƒλ²ˆν˜Έ, 학생이름, μ£Όμ†Œ, ν•™κ³Ό)와 κΈ°λ³Έν‚€κ°€ μ•„λ‹ˆμ§€λ§Œ κ²°μ •μžμ  μ„±μ§ˆμ„ μ§€λ‹Œ κ°•μ’Œ 정보(κ°•μ’Œμ΄λ¦„, κ°•μ˜μ‹€)κ°€ ν•œ λ¦΄λ ˆμ΄μ…˜μ— ν¬ν•¨λ˜μ–΄ μ΄μƒν˜„μƒμ΄ λ‚˜νƒ€λ‚œ 것이닀. κ·Έ 외에도 ν•™κ³Ό, 학생 번호, κ°•μ’Œ 이름은 κΈ°λ³Έν‚€κ°€ μ•„λ‹ˆλ©΄μ„œ κ²°μ •μžμ΄κΈ° λ•Œλ¬Έμ— μ΄μƒν˜„μƒμ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 총 4개의 λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ ν•™μƒμˆ˜κ°•μ„±μ  λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•˜λ©΄ λœλ‹€.



μ •κ·œν™”(Normalization)

  • μ •κ·œν™”: μ΄μƒν˜„μƒμ΄ λ°œμƒν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•˜μ—¬ μ΄μƒν˜„μƒμ„ μ—†μ• λŠ” κ³Όμ •
  • μ΄μƒν˜„μƒμ΄ μžˆλŠ” λ¦΄λ ˆμ΄μ…˜μ€ μ΄μƒν˜„μƒμ„ μΌμœΌν‚€λŠ” ν•¨μˆ˜ μ’…μ†μ„±μ˜ μœ ν˜•μ— 따라 등급을 ꡬ뢄 κ°€λŠ₯
  • λ¦΄λ ˆμ΄μ…˜μ€ μ •κ·œν˜• κ°œλ…μœΌλ‘œ κ΅¬λΆ„ν•˜λ©°, μ •κ·œν˜•μ΄ λ†’μ„μˆ˜λ‘ μ΄μƒν˜„μƒμ€ 쀄어든닀.

μ •κ·œν™”λž€ 즉, μ΄μƒν˜„μƒμ΄ μ‘΄μž¬ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•˜μ—¬ μ—¬λŸ¬ 개의 λ¦΄λ ˆμ΄μ…˜μ„ μƒμ„±ν•˜λŠ” 과정을 μ˜λ―Έν•œλ‹€. λ¦΄λ ˆμ΄μ…˜μ€ λΆ„ν•΄λ˜λŠ” 정도에 따라 μ •κ·œν˜• λ‹¨κ³„λ‘œ λ‚˜λˆ„μ–΄μ§€λ©° μ •κ·œν˜•μ΄ λ†’μ•„μ§ˆμˆ˜λ‘ μ΄μƒν˜„μƒμ€ 쀄어든닀.

제1 μ •κ·œν˜•

  • λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  속성 값이 μ›μžκ°’μ„ κ°–λŠ” κ²½μš°μ΄λ‹€.
  • 즉, λΉ„μ›μžμ μΈ 속성듀을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” λ¦΄λ ˆμ΄μ…˜ ν˜•νƒœλ₯Ό λ§ν•œλ‹€.


제2 μ •κ·œν˜•

  • λ¦΄λ ˆμ΄μ…˜μ΄ 제1 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ³ , κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 기본킀에 μ™„μ „ ν•¨μˆ˜ 쒅속일 λ•Œλ₯Ό μ˜λ―Έν•œλ‹€.
  • 즉, ν‚€κ°€ μ•„λ‹Œ 열듀이 각각 후보킀에 λŒ€ν•΄ κ²°μ •λ˜λŠ” λ¦΄λ ˆμ΄μ…˜ ν˜•νƒœλ₯Ό λ§ν•œλ‹€.


제3 μ •κ·œν˜•

  • λ¦΄λ ˆμ΄μ…˜ R이 제2 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ³  κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 기본킀에 비이행정(Non_Transitive)으둜 쒅속할 λ•Œ(직접 쒅속)λ₯Ό μ˜λ―Έν•œλ‹€.
  • 이행적 μ’…μ†μ΄λž€, Aβ†’B, Bβ†’Cκ°€ 성립할 λ•Œ, Aβ†’Cκ°€ μ„±λ¦½λ˜λŠ” ν•¨μˆ˜ 쒅속성을 μ˜λ―Έν•œλ‹€.


BCNF μ •κ·œν˜•

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

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


λŒ€λΆ€λΆ„μ˜ λ¦΄λ ˆμ΄μ…˜μ—μ„œλŠ” BCNFκΉŒμ§€ μ •κ·œν™”ν•˜λ©΄ μ‹€μ œμ μΈ μ΄μƒν˜„μƒμ΄ 없어지기 λ•Œλ¬Έμ— BCNFκΉŒμ§€ μ •κ·œν™”λ₯Ό μ§„ν–‰ν•œλ‹€.


μ •κ·œν˜•μ˜ μž₯단점

  • μž₯점
    • μ΄μƒν˜„μƒλ“€μ΄ λ°œμƒν•˜λŠ” λ¬Έμ œμ μ„ ν•΄κ²°ν•  수 μžˆλ‹€.
    • μ •κ·œν™”λœ ν…Œμ΄λΈ”λ“€κ³Ό ν…Œμ΄λΈ”λ“€ κ°„μ˜ 관계듀을 μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•  수 μžˆλ‹€.
  • 단점
    • λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ μ—°μ‚°(JOIN)이 λ§Žμ•„μ§„λ‹€.
    • 이둜 인해, μ§ˆμ˜μ— λŒ€ν•œ μ‘λ‹΅μ‹œκ°„μ΄ 느렀질 수 μžˆλŠ” κ²½μš°κ°€ λ°œμƒν•  μˆ˜λ„ μžˆλ‹€.

λ°˜μ •κ·œν™”(De-normalization, λΉ„μ •κ·œν™”)

  • μ •κ·œν™”λœ μ—”ν‹°ν‹°, 속성, 관계λ₯Ό μ‹œμŠ€ν…œμ˜ μ„±λŠ₯ ν–₯상 및 개발과 운영의 λ‹¨μˆœν™”λ₯Ό μœ„ν•΄ 쀑볡 톡합, 뢄리 등을 μˆ˜ν–‰ν•˜λŠ” 데이터 λͺ¨λΈλ§ 기법 쀑 ν•˜λ‚˜μ΄λ‹€. λ””μŠ€ν¬ I/OλŸ‰μ΄ λ§Žμ•„μ„œ 쑰회 μ‹œ μ„±λŠ₯이 μ €ν•˜λ˜κ±°λ‚˜, ν…Œμ΄λΈ”λΌλ¦¬μ˜ κ²½λ‘œκ°€ λ„ˆλ¬΄ λ©€μ–΄ 쑰인으둜 μΈν•œ μ„±λŠ₯ μ €ν•˜κ°€ μ˜ˆμƒλ˜κ±°λ‚˜, μ»¬λŸΌμ„ κ³„μ‚°ν•˜μ—¬ μ‘°νšŒν•  λ•Œ μ„±λŠ₯이 μ €ν•˜λ  것이 μ˜ˆμƒλ˜λŠ” 경우 λ°˜μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•œλ‹€. 일반적으둜 μ‘°νšŒμ— λŒ€ν•œ 처리 μ„±λŠ₯이 μ€‘μš”ν•˜λ‹€κ³  νŒλ‹¨λ  λ•Œ λΆ€λΆ„μ μœΌλ‘œ λ°˜μ •κ·œν™”λ₯Ό κ³ λ €ν•˜κ²Œ λœλ‹€.
  • λ°˜μ •κ·œν™”μ˜ λŒ€μƒ
    • 자주 μ‚¬μš©λ˜λŠ” ν…Œμ΄λΈ”μ— μ•‘μ„ΈμŠ€ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μˆ˜κ°€ κ°€μž₯ 많고, 항상 μΌμ •ν•œ λ²”μœ„λ§Œμ„ μ‘°νšŒν•˜λŠ” 경우
    • ν…Œμ΄λΈ”μ— λŒ€λŸ‰ 데이터가 있고 λŒ€λŸ‰μ˜ λ²”μœ„λ₯Ό 자주 μ²˜λ¦¬ν•˜λŠ” 경우, μ„±λŠ₯ 상 μ΄μŠˆκ°€ μžˆμ„ 경우
    • ν…Œμ΄λΈ”μ— μ§€λ‚˜μΉ˜κ²Œ 쑰인을 많이 μ‚¬μš©ν•˜κ²Œ λ˜μ–΄ 데이터λ₯Ό μ‘°νšŒν•˜λŠ” 것이 기술적으둜 μ–΄λ €μšΈ 경우
  • λ°˜μ •κ·œν™”λ₯Ό κ³Όλ„ν•˜κ²Œ μ μš©ν•˜λ©΄ λ°μ΄ν„°μ˜ 무결성이 깨질 수 있고, μž…λ ₯/μˆ˜μ •/μ‚­μ œμ˜ μ§ˆμ˜λ¬Έμ— λŒ€ν•œ μ‘λ‹΅μ‹œκ°„μ΄ λŠ¦μ–΄μ§ˆ 수 μžˆλ‹€.