μ •κ·œν™”(Normalization)

2020. 4. 27. 15:07Β·πŸ“ Computer Science/✏ Database
μ •κ·œν™”λ₯Ό κ±°μΉ˜μ§€ μ•ŠμœΌλ©΄ λ°μ΄ν„°λ² μ΄μŠ€ 내에 데이터듀이 λΆˆν•„μš”ν•˜κ²Œ 쀑볡, μ’…μ†λ˜μ–΄ 이상 ν˜„μƒμ΄ λ°œμƒν•œλ‹€.

 

1. 이상(Anomaly) ν˜„μƒ

  • μ‚½μž…(Insertion) 이상: μ˜λ„μ™€λŠ” 상관없이 μ›ν•˜μ§€ μ•Šμ€ 값듀도 ν•¨κ»˜ μ‚½μž…λ˜λŠ” ν˜„μƒ
  • μ‚­μ œ(Deletion) 이상: μ˜λ„μ™€λŠ” μƒκ΄€μ—†λŠ” 값듀도 ν•¨κ»˜ μ‚­μ œλ˜λŠ” 연쇄가 μΌμ–΄λ‚˜λŠ” ν˜„μƒ
  • κ°±μ‹ (Update) 이상: 일뢀 νŠœν”Œμ˜ μ •λ³΄λ§Œ κ°±μ‹ λ˜μ–΄ 정보에 λͺ¨μˆœμ΄ μƒκΈ°λŠ” ν˜„μƒ

 

2. μ •κ·œν™”(Normalization)

μ •κ·œν™”λž€ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 쀑볡을 μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•΄ 데이터λ₯Ό κ΅¬μ‘°ν™”ν•˜λŠ” μž‘μ—…μœΌλ‘œ 잘λͺ» μ„€κ³„λœ λ¦΄λ ˆμ΄μ…˜μ„ 더 μž‘μ€ μ†μ„±μœΌλ‘œ λΆ„ν•΄ν•˜μ—¬ λ°”λžŒμ§ν•œ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ λ§Œλ“€μ–΄ κ°€λŠ” 과정이닀.

  • ν•¨μˆ˜μ  쒅속성을 μ΄μš©ν•΄ νŒλ‹¨ν•œλ‹€.
  • 무손싀 쑰인을 보μž₯ν•œλ‹€. μ—¬κΈ°μ„œ 무손싀 μ‘°μΈμ΄λž€ μ‘°μΈν•˜λ©΄ μ›λž˜μ˜ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ 볡ꡬ할 수 μžˆμŒμ„ λ§ν•œλ‹€.
  • μŠ€ν‚€λ§ˆμ— λ³€ν™”κ°€ 생길 수 μžˆλ‹€.

 

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

ν•¨μˆ˜μ  μ’…μ†μ„±μ΄λž€ 데이터듀이 μ–΄λ–€ κΈ°μ€€ 값에 μ˜ν•΄ μ’…μ†λ˜λŠ” 것을 μ˜λ―Έν•œλ‹€. μ‹€μ„Έκ³„μ—μ„œ μ‘΄μž¬ν•˜λŠ” μ• νŠΈλ¦¬λ·°νŠΈλ“€ μ‚¬μ΄μ˜ μ œμ•½μ‘°κ±΄μœΌλ‘œλΆ€ν„° μœ λ„λ˜λ©° 각쒅 μΆ”λ‘  κ·œμΉ™μ— λ”°λΌμ„œ μ• νŠΈλ¦¬λ·°νŠΈλ“€ κ°„μ˜ ν•¨μˆ˜μ  쒅속성을 νŒλ‹¨ν•  수 μžˆλ‹€.

 

X와 Yλ₯Ό μž„μ˜μ˜ μ• νŠΈλ¦¬λ·°νŠΈ 집합이라고 ν•  λ•Œ X의 값이 Y의 값을 μœ μΌν•˜κ²Œ(unique) κ²°μ •ν•œλ‹€λ©΄ "XλŠ” Yλ₯Ό ν•¨μˆ˜μ μœΌλ‘œ κ²°μ •ν•œλ‹€"라고 ν•œλ‹€.

 

ν•¨μˆ˜μ  쒅속성

 

  • μ™„μ „ ν•¨μˆ˜μ  쒅속성: XY → Z일 λ•Œ, X → Z와 Y → Zκ°€ λͺ¨λ‘ μ„±λ¦½ν•˜μ§€ μ•ŠλŠ” 경우. 즉, μ–΄λ– ν•œ μ• νŠΈλ¦¬λ·°νŠΈλΌλ„ μ œκ±°ν•˜λ©΄ 더 이상 μ™„μ „ ν•¨μˆ˜μ  쒅속성이 μ„±λ¦½ν•˜μ§€ μ•ŠλŠ” 경우λ₯Ό λ§ν•œλ‹€.
  • λΆ€λΆ„ ν•¨μˆ˜μ  쒅속성: XY → Z일 λ•Œ, X → Z와 Y → Z 쀑 ν•˜λ‚˜λ§Œ μ„±λ¦½ν•˜λŠ” 경우
  • 이행 ν•¨μˆ˜μ  쒅속성: X→Y이고, Y→Z일 λ•Œ X→Zκ°€ μ„±λ¦½ν•˜λŠ” 경우

 

2) 제1 μ •κ·œν˜•(1NF)

μ• νŠΈλ¦¬λ·°νŠΈμ˜ λ„메인이 였직 μ›μž κ°’λ§Œμ„ ν¬ν•¨ν•˜κ³  νŠœν”Œμ˜ λͺ¨λ“  μ• νŠΈλ¦¬λ·°νŠΈκ°€ 도메인에 μ†ν•˜λŠ” ν•˜λ‚˜μ˜ 값을 κ°€μ Έμ•Ό ν•œλ‹€.

즉, 볡합 μ• νŠΈλ¦¬λ·°νŠΈ, 닀쀑 κ°’ μ• νŠΈλ¦¬λ·°νŠΈ, 쀑첩 λ¦΄λ ˆμ΄μ…˜ λ“± λΉ„ μ›μžμ μΈ μ• νŠΈλ¦¬λ·°νŠΈλ“€μ„ ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

3) 제2 μ •κ·œν˜•(2NF)

κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λͺ¨λ“  μ• νŠΈλ¦¬λ·°νŠΈκ°€ 기본킀에 λŒ€ν•΄ μ™„μ „ ν•¨μˆ˜μ  쒅속을 λ§Œμ‘±ν•˜λŠ” μ •κ·œν˜•μ΄λ‹€.

즉, λΆ€λΆ„ ν•¨μˆ˜μ  쒅속성을 μ œκ±°ν•œλ‹€.

 

4) 제3 μ •κ·œν˜•(3NF)

κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λͺ¨λ“  μ• νŠΈλ¦¬λ·°νŠΈκ°€ 기본킀에 λŒ€ν•΄ 이행적 쒅속성을 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” μ •κ·œν˜•μ΄λ‹€.

즉, 이행 ν•¨μˆ˜μ  쒅속성을 μ œκ±°ν•œλ‹€.

 

5) BCNF(Boyce-Codd)

κ²°μ •μžκ°€ λͺ¨λ‘ 후보 킀인 μ •κ·œν˜•μ΄λ‹€.

즉, κ²°μ •μžμ΄λ©΄μ„œ 후보 ν‚€κ°€ μ•„λ‹Œ 것을 μ œκ±°ν•œλ‹€.

 

3. λ°˜μ •κ·œν™”(De-normalization)

μ •κ·œν™”λŠ” λ¦΄λ ˆμ΄μ…˜ λΆ„ν•΄λ‘œ 인해 쑰인 연산이 λ§Žμ•„μ Έ μ§ˆμ˜μ— λŒ€ν•œ 응닡 μ‹œκ°„μ΄ 느렀질 수 μžˆλ‹€. μ΄λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ°˜μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•œλ‹€. λ°˜μ •κ·œν™”λŠ” μ‹œμŠ€ν…œμ˜ μ„±λŠ₯ ν–₯상, 개발 및 운영의 νŽΈμ˜μ„± 등을 μœ„ν•΄ μ •κ·œν™”λœ 데이터 λͺ¨λΈμ„ 톡합, 쀑볡, λΆ„λ¦¬ν•˜λŠ” κ³Όμ •μœΌλ‘œ μ˜λ„μ μœΌλ‘œ μ •κ·œν™” 원칙을 μœ„λ°°ν•˜λŠ” ν–‰μœ„μ΄λ‹€. ν•˜μ§€λ§Œ κ³Όλ„ν•œ λ°˜μ •κ·œν™”λŠ” 였히렀 μ„±λŠ₯을 μ €ν•˜μ‹œν‚¬ 수 μžˆλ‹€.

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Computer Science/✏ Database' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • SQL
  • νŠΈλžœμž­μ…˜(Transaction)
  • ν‚€(Key)와 무결성 μ œμ•½ 쑰건
  • 인덱슀(Index)
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
μ •κ·œν™”(Normalization)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”