자격증/SQLD

[SQLD] 1-2-1 μ •κ·œν™”μ™€ μ„±λŠ₯

NaNaRinπŸ™ƒ 2021. 2. 7. 15:41

데이터 λͺ¨λΈλ§μ˜ 이해  -  2μž₯ λ°μ΄ν„° λͺ¨λΈκ³Ό μ„±λŠ₯ - 1절 μ •κ·œν™”와 μ„±λŠ₯


1. μ •κ·œν™” Normalization

  - λ°μ΄ν„°μ˜ 일관성, μ΅œμ†Œν•œμ˜ 데이터 쀑볡, μ΅œλŒ€ν•œμ˜ 데이터 μœ μ—°μ„±μ„ μœ„ν•œ 방법 

  - 데이터λ₯Ό λΆ„ν•΄ν•˜λŠ” κ³Όμ •

  - 데이터 쀑볡을 μ œκ±°ν•˜κ³  데이터 λͺ¨λΈμ˜ 독립성을 ν™•λ³΄ν•˜κΈ° μœ„ν•œ 방법

  - μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•˜λ©΄ λΉ„μ¦ˆλ‹ˆμŠ€μ— λ³€ν™”κ°€ λ°œμƒν•˜μ—¬λ„ 데이터 λͺ¨λΈμ˜ 변경을 μ΅œμ†Œν™” ν•  수 μžˆλ‹€

  - μ΄μƒν˜„μƒμ΄ 생기지 μ•Šλ„λ‘ ν•΄μ•Ό ν•œλ‹€

 

2. μ΄μƒν˜„μƒ Anomaly

  - κ°±μ‹  이상 Modification Anomaly : ν…Œμ΄λΈ”μ˜ 속성 값을 κ°±μ‹ ν•  λ•Œ 일뢀 νŠœν”Œμ˜ κ°’λ§Œ κ°±μ‹ λ˜μ–΄ 정보에 λΆˆμΌμΉ˜μ„±μ΄ μƒκΈ°λŠ” ν˜„μƒ

  - μ‚½μž… 이상 Insertion Anomaly : ν…Œμ΄λΈ”μ— 데이터λ₯Ό μ‚½μž…ν•  λ•Œ μ˜λ„μ™€λŠ” 상관없이 μ›ν•˜μ§€ μ•Šμ€ κ°’λ“€λ‘œ 인해 μ‚½μž…ν•  수 μ—†κ²Œ λ˜λŠ” ν˜„μƒ

  - μ‚­μ œ 이상 Deletion Anomaly : ν…Œμ΄λΈ”μ—μ„œ ν•œ νŠœν”Œμ„ μ‚­μ œν•  λ•Œ μ˜λ„μ™€λŠ” μƒκ΄€μ—†λŠ” 값듀도 ν•¨κ»˜ μ‚­μ œλ˜λŠ” 연쇄 μ‚­μ œκ°€ λ°œμƒν•˜λŠ” ν˜„μƒ

 

3. ν•¨μˆ˜μ  쒅속성 Functional Dependency

  - ν•¨μˆ˜μ  쒅속성 : X -> Y이면 YλŠ” X에 ν•¨μˆ˜μ μœΌλ‘œ μ’…μ†λœλ‹€κ³  ν•œλ‹€. Xκ°€ λ³€κ²½λ˜λ©΄ Y도 λ³€κ²½λ˜λŠ” 것. X : κ²°μ •μž, Y : μ’…μ†μž

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

     - μ’…μ†μžκ°€ κΈ°λ³Έν‚€μ—λ§Œ μ’…μ†λ˜λ©°, κΈ°λ³Έν‚€κ°€ μ—¬λŸ¬ μ†μ„±μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμ„ 경우 κΈ°λ³Έν‚€μ˜ λͺ¨λ“  속성이 ν¬ν•¨λœ 뢀뢄집합에 μ’…μ†λ˜λŠ” 경우

  (2) λΆ€λΆ„ ν•¨μˆ˜μ  쒅속성 Partial Functional Dependency

     - μ’…μ†μžκ°€ κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ λ‹€λ₯Έ 속성에 μ’…μ†λ˜κ±°λ‚˜, κΈ°λ³Έν‚€κ°€ μ—¬λŸ¬ μ†μ„±μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμ„ 경우 κΈ°λ³Έν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성 쀑 일뢀에 μ’…μ†λ˜λŠ” 경우

  (3) 이행적 ν•¨μˆ˜ 쒅속성 Transitive Functional Dependency

     - κΈ°λ³Έν‚€λ₯Ό μ œμ™Έν•œ 칼럼 간에 쒅속성이 λ°œμƒν•˜λŠ” 경우

     - X, Y, Z 세가지 속성이 μžˆμ„ λ•Œ X -> Y, Y -> Z 쒅속 관계일 경우, X -> Z일 λ•Œ

  - μ™Όμͺ½ 예 :

     - κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 이름이 κΈ°λ³Έν‚€μ˜ νšŒμ› ID에 μ’…μ†λ˜μ–΄ μžˆμœΌλ―€λ‘œ λΆ€λΆ„ ν•¨μˆ˜ 쒅속성이 λ°œμƒν•œλ‹€

     - κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 관리점 μ½”λ“œκ°€ κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 관리점에 μ’…μ†λ˜μ–΄ μžˆμœΌλ―€λ‘œ 이행 ν•¨μˆ˜ 쒅속성이 λ°œμƒν•œλ‹€

  - 였λ₯Έμͺ½ 예 : λΆ€λΆ„ ν•¨μˆ˜ 쒅속성과 이행 ν•¨μˆ˜ 쒅속성을 μ œκ±°ν•œ ν›„

 

4. μ •κ·œν™” 절차

  (1) 제1μ •κ·œν™” : μ†μ„±μ˜ μ›μžμ„± 확보, κΈ°λ³Έν‚€ μ„€μ •

  (2) 제2μ •κ·œν™” : κΈ°λ³Έν‚€κ°€ 2개 μ΄μƒμ˜ μ†μ„±μœΌλ‘œ 이루어진 경우, λΆ€λΆ„ ν•¨μˆ˜ 쒅속성 제거

  (3) 제3μ •κ·œν™” : κΈ°λ³Έν‚€λ₯Ό μ œμ™Έν•œ 칼럼 간에 쒅속성 제거. =이행 ν•¨μˆ˜ 쒅속성 제거

  (4) BCNF : κΈ°λ³Έν‚€λ₯Ό μ œμ™Έν•˜κ³  후보킀가 μžˆλŠ” 경우, 후보킀가 κΈ°λ³Έν‚€λ₯Ό μ’…μ†μ‹œν‚€λ©΄ λΆ„ν•΄

  (5) 제4μ •κ·œν™” : μ—¬λŸ¬ μΉΌλŸΌλ“€μ΄ ν•˜λ‚˜μ˜ μΉΌλŸΌμ„ μ’…μ†μ‹œν‚€λŠ” 경우 λΆ„ν•΄ν•˜μ—¬ 닀쀑값 쒅속성 제거

  (6) 제5μ •κ·œν™” : 쑰인에 μ˜ν•΄ 쒅속성이 λ°œμƒλ˜λŠ” 경우 λΆ„ν•΄

 

5. μ •κ·œν™”μ™€ μ„±λŠ₯

  - μ •κ·œν™”λŠ” ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•΄μ„œ 데이터 쀑볡을 μ œκ±°ν•˜κΈ° λ•Œλ¬Έμ— 데이터 λͺ¨λΈμ˜ μœ μ—°μ„±μ„ λ†’μž„

  - μ •κ·œν™”λŠ” 데이터 쑰회 μ‹œμ— 쑰인Join을 μœ λ°œν•˜κΈ° λ•Œλ¬Έμ— CPU와 λ©”λͺ¨λ¦¬λ₯Ό 많이 μ‚¬μš©ν•¨

  - 쑰인으둜 인해 μ„±λŠ₯이 μ €ν•˜λ˜λŠ” 문제λ₯Ό λ°˜μ •κ·œν™”λ‘œ ν•΄κ²°ν•  수 μžˆμ§€λ§Œ λ°˜μ •κ·œν™”λŠ” 데이터λ₯Ό μ€‘λ³΅μ‹œν‚€κΈ° λ•Œλ¬Έμ— 또 λ‹€λ₯Έ 문제λ₯Ό λ°œμƒμ‹œν‚΄