Skip to content

Latest commit

Β 

History

History
127 lines (82 loc) Β· 6.92 KB

normalization.md

File metadata and controls

127 lines (82 loc) Β· 6.92 KB

μ •κ·œν™”(Normalization)

μ •κ·œν™”(Normalization)λž€?

-> λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ„€κ³„μ—μ„œ μ€‘λ³΅λœ 데이터가 μ΅œμ†Œν™”λ˜λ„λ‘ μž¬κ΅¬μ„±ν•˜λŠ” ν…Œν¬λ‹‰, μ΄μƒν˜„μƒμ΄ μ‘΄μž¬ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•˜μ—¬ μ—¬λŸ¬κ°œμ˜ λ¦΄λ ˆμ΄μ…˜μ„ μƒμ„±ν•˜λ©°, 이λ₯Ό λ‹¨κ³„λ³„λ‘œ κ΅¬λΆ„ν•˜μ—¬ μ •κ·œν˜•μ΄ λ†’μ•„μ§ˆμˆ˜λ‘ μ΄μƒν˜„μƒμ€ μ€„μ–΄λ“€κ²Œ λœλ‹€.

μ •κ·œν™”μ˜ λͺ©μ (μž₯점)

  • ν…Œμ΄λΈ” κ°„μ˜ μ€‘λ³΅λœ 데이터λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŒ
  • 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ λ°μ΄ν„°μ˜ 무결성을 μœ μ§€
  • μƒˆλ‘œμš΄ 데이터 ν˜•μ˜ μΆ”κ°€λ‘œ μΈν•œ 데이터 베이슀 ν™•μž₯ μ‹œ, ꡬ쑰λ₯Ό λ³€κ²½ν•˜μ§€ μ•Šμ•„λ„ λ˜κ±°λ‚˜ μΌλΆ€λ§Œ λ³€κ²½ κ°€λŠ₯
  • μ‚½μž…,κ°±μ‹ ,μ‚­μ œ μ‹œ λ°œμƒν•  수 μžˆλŠ” 각쒅 *μ΄μƒν˜„μƒλ“€μ„ 방지 <-> κ·ΈλŸ¬λ‚˜ μ—°μ‚°μ‹œκ°„ 증가

μ •κ·œν™”μ˜ 단점

  • λ¦΄λ ˆμ΄μ…˜μ˜ λΆ„ν•΄λ‘œ 인해 λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ JOINμ—°μ‚° 증가
  • JOIN이 많이 λ°œμƒν•˜μ—¬ μ„±λŠ₯μ €ν•˜κ°€ λ‚˜νƒ€λ‚˜λ©΄ λ°˜μ •κ·œν™”(De-normalization)λ₯Ό 적용

πŸ“Œ κΌ­ μ•Œμ•„λ‘κ³  갈 것!

*μ΄μƒν˜„μƒ ?
-> μ •κ·œν™”λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ 관계λ₯Ό μˆ˜μ •ν•  λ•Œ, λ°œμƒν•  수 μžˆλŠ” 문제

  1. μ‚½μž… 이상(Insert Anmoaly) : νŠœν”Œ μ‚½μž… μ‹œ νŠΉμ • 속성에 ν•΄λ‹Ήν•˜λŠ” 값이 μ—†μ–΄ NULLκ°’μ΄λ‚˜ λΆˆν•„μš”ν•œ 데이터듀을 μž…λ ₯ν•΄μ•Όν•˜λŠ” ν˜„μƒ

  2. μ‚­μ œ 이상(Deletion Anmoaly) : νŠœν”Œ μ‚­μ œ μ‹œ 같이 μ €μž₯된 λ‹€λ₯Έ μ •λ³΄κΉŒμ§€ μ—°μ‡„μ μœΌλ‘œ μ‚­μ œλ˜λŠ” ν˜„μƒ

  3. κ°±μ‹  이상(Update Anmoaly) : νŠœν”Œ κ°±μ‹  μ‹œ μ€‘λ³΅λœ λ°μ΄ν„°μ˜ μΌλΆ€λ§Œ κ°±μ‹ λ˜μ–΄ μΌμ–΄λ‚˜λŠ” 데이터 뢈일치 ν˜„μƒ

*ν•¨μˆ˜ 쒅속성 ?
-> μ–΄λ–€ 속성 A의 값을 μ•Œλ©΄ λ‹€λ₯Έ 속성 B의 값이 μœ μΌν•˜κ²Œ μ •ν•΄μ§€λŠ” 관계λ₯Ό 쒅속성이라고 ν•œλ‹€.

  • A->B둜 ν‘œκΈ°ν•˜λ©° AλŠ” B의 κ²°μ •μžλΌκ³ ν•œλ‹€.
  • A->B이면 AλŠ” Bλ₯Ό κ²°μ •ν•œλ‹€κ³  ν•˜κ³ , BλŠ” A에 μ’…μ†ν•œλ‹€λΌκ³  ν•œλ‹€.

1. μ™„μ „ ν•¨μˆ˜ 쒅속

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

    ν•™λ²ˆ 이름 ν•™λ…„ 학ꡐ
    2021 홍길동 1 μΈμ²œλŒ€ν•™κ΅
    2022 κΉ€μΆ˜ν–₯ 2 μΈμ²œλŒ€ν•™κ΅

이 λ¦΄λ ˆμ΄μ…˜μ—μ„œ κΈ°λ³Έν‚€κ°€ ν•™λ²ˆμΌ λ•Œ, 이름,ν•™λ…„,ν•™κ΅μ˜ μ •λ³΄λŠ” ν•™λ²ˆμ„ μ•Œμ•„μ•Ό 식별이 κ°€λŠ₯ν•˜λ‹€. μ΄λ•Œ 이름, ν•™λ…„, ν•™κ΅λŠ” ν•™λ²ˆμ— μ™„μ „ ν•¨μˆ˜ μ’…μ†λ˜μ–΄ μžˆλ‹€κ³  λ³Ό 수 μžˆλ‹€.

2. λΆ€λΆ„ ν•¨μˆ˜ 쒅속

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

    고객ID μƒν’ˆID μƒν’ˆλͺ… μ£Όλ¬Έ μˆ˜λŸ‰
    AA A1 ν‹°μ…”μΈ  1
    AB B1 바지 2

κΈ°λ³Έν‚€κ°€ 고객ID, μƒν’ˆ ID둜 κ΅¬μ„±λœ λ¦΄λ ˆμ΄μ…˜μ˜ 경우, μƒν’ˆλͺ…은 μƒν’ˆ ID만 μ•Œμ•„λ„ 식별이 κ°€λŠ₯ν•˜λ‹€. μ΄λ•Œ μƒν’ˆλͺ…은 μƒν’ˆIDμ—κ²Œ λΆ€λΆ„ ν•¨μˆ˜ μ’…μ†λ˜μ–΄ μžˆλ‹€κ³  λ³Ό 수 μžˆλ‹€.

3. 이행적 쒅속

  • X,Y,ZλΌλŠ” 3가지 뢀뢄집합을 가진 λ¦΄λ ˆμ΄μ…˜μ—μ„œ, X->Y이고, Y->Z일 λ•Œ Y->Xκ°€ μ•„λ‹ˆλΌλ©΄ μ•”μŠ€νŠΈλ‘±μ˜ 곡리에 μ˜ν•΄ X->Z이닀. μ΄λ•Œ XλŠ” Z의 이행적 쒅속이닀.

    번호 이름 λ‚˜μ΄
    01 홍길동 23
    02 κΉ€λ―Όμ • 22

이 λ¦΄λ ˆμ΄μ…˜μ—μ„œλŠ” 번호λ₯Ό μ•Œλ©΄ 이름을 μ•Œ 수 있고, 이름을 μ•Œλ©΄ λ‚˜μ΄λ₯Ό μ•Œ 수 μžˆλ‹€. λ”°λΌμ„œ 번호λ₯Ό μ•Œλ©΄ λ‚˜μ΄λ₯Ό μ•Œ 수 μžˆλ‹€. 이λ₯Ό 이행적 쒅속 관계라 ν•œλ‹€.


μ •κ·œν™”λœ κ²°κ³Όλ₯Ό μ •κ·œν˜•μ΄λΌκ³  ν•˜λ©°, μ •κ·œν˜•μ€ κΈ°λ³Έ μ •κ·œν˜•κ³Ό κ³ κΈ‰ μ •κ·œν˜•μœΌλ‘œ λ‚˜λ‰œλ‹€.

κΈ°λ³Έ μ •κ·œν˜• : 제1μ •κ·œν˜•, 제2μ •κ·œν˜•, 제3μ •κ·œν˜•, BCNF κ³ κΈ‰ μ •κ·œν˜• : 제4μ •κ·œν˜•, 제5μ •κ·œν˜•

  1. 제1μ •κ·œν˜•

λ¦΄λ ˆμ΄μ…˜μ— μ†ν•œ λͺ¨λ“  도메인이 더 이상 λΆ„ν•΄λ˜μ§€ μ•Šμ€ μ›μžκ°’μœΌλ‘œλ§Œ κ΅¬μ„±λœ μ •κ·œν˜•


<좜처 : λ§λ‚˜λ‹ˆκ°œλ°œμž λΈ”λ‘œκ·Έ https://mangkyu.tistory.com/110>

-> μœ„μ˜ ν…Œμ΄λΈ”μ—μ„œ 제1μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ— 더 λΆ„ν•΄ν•˜μ—¬ 제1μ •κ·œν˜•μœΌλ‘œ λ§Œλ“€ 수 μžˆλ‹€.


<좜처 : λ§λ‚˜λ‹ˆκ°œλ°œμž λΈ”λ‘œκ·Έ https://mangkyu.tistory.com/110>

  1. 제2μ •κ·œν˜•

제1μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜λ©΄μ„œ λ¦΄λ ˆμ΄μ…˜μ— μ‘΄μž¬ν•˜λŠ” λΆ€λΆ„ ν•¨μˆ˜μ  쒅속을 μ œκ±°ν•˜μ—¬, λͺ¨λ“  속성이 기본킀에 μ™„μ „ ν•¨μˆ˜ 쒅속이 λ˜λ„λ‘ λ§Œλ“€μ–΄μ§„ μ •κ·œν˜•


<좜처 : λ§λ‚˜λ‹ˆκ°œλ°œμž λΈ”λ‘œκ·Έ https://mangkyu.tistory.com/110>

-> μœ„μ˜ ν…Œμ΄λΈ”μ—μ„œ, 학생 λ²ˆν˜Έμ™€ κ°•μ’Œ 이름이 기본킀일 λ•Œ μ„±μ μ˜ κ²°μ •μžλŠ” 학생 번호이고 κ°•μ˜μ‹€μ˜ κ²°μ •μžλŠ” κ°•μ’Œ 이름이기 λ•Œλ¬Έμ— 이 λ¦΄λ ˆμ΄μ…˜μ€ λΆ€λΆ„ ν•¨μˆ˜μ  쒅속성을 가진닀.

πŸ“Œ λΆ€λΆ„ν•¨μˆ˜μ  쒅속성을 μ œκ±°ν•˜κΈ° μœ„ν•΄, λͺ¨λ“  속성이 기본킀에 μ™„μ „ ν•¨μˆ˜ 쒅속이 λ˜λ„λ‘ ν…Œμ΄λΈ”μ„ λΆ„λ¦¬μ‹œν‚¨λ‹€.
<좜처 : λ§λ‚˜λ‹ˆκ°œλ°œμž λΈ”λ‘œκ·Έ https://mangkyu.tistory.com/110>

  1. 제3μ •κ·œν˜•

제2μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜λ©΄μ„œ λ¦΄λ ˆμ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” 속성듀 κ°„μ˜ 이행적 쒅속관계λ₯Ό λΆ„ν•΄ν•˜μ—¬ 속성듀이 비이행적 ν•¨μˆ˜ 쒅속관계λ₯Ό λ§Œμ‘±ν•˜λ„λ‘ λ§Œλ“€μ–΄μ§„ μ •κ·œν˜•, ν•œλ§ˆλ””λ‘œ 이헹적 쒅속 관계λ₯Ό μ œκ±°μ‹œν‚¨λ‹€!


<좜처 : λ§λ‚˜λ‹ˆκ°œλ°œμž λΈ”λ‘œκ·Έ https://mangkyu.tistory.com/110>

-> 기본킀인 ν•™μƒλ²ˆν˜ΈλŠ” κ°•μ’Œμ΄λ¦„μ˜ κ²°μ •μžμ΄κ³ , κ°•μ’Œμ΄λ¦„μ€ μˆ˜κ°•λ£Œμ˜ κ²°μ •μžμ΄λ‹€. μ΄λŠ” 이행적 쒅속 κ΄€κ³„μ΄λ―€λ‘œ ν…Œμ΄λΈ”μ„ λΆ„λ¦¬ν•˜μ—¬ μ œκ±°ν•  수 μžˆλ‹€.


<좜처 : λ§λ‚˜λ‹ˆκ°œλ°œμž λΈ”λ‘œκ·Έ https://mangkyu.tistory.com/110>

  1. BCNF

제3μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜λ©΄μ„œ λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  κ²°μ •μžκ°€ 후보킀가 λ˜λ„λ‘ ν•˜λŠ” μ •κ·œν˜•


<좜처 : λ§λ‚˜λ‹ˆκ°œλ°œμž λΈ”λ‘œκ·Έ https://mangkyu.tistory.com/110>

-> 이 ν…Œμ΄λΈ”μ—μ„œ 학생 λ²ˆν˜Έμ™€ νŠΉκ°• 이름이 기본킀일 λ•Œ, 학생 λ²ˆν˜Έμ™€ νŠΉκ°• 이름은 ꡐ수의 κ²°μ •μžμ΄λ©°, κ΅μˆ˜λŠ” νŠΉκ°• μ΄λ¦„μ˜ κ²°μ •μžμ΄λ‹€. ν•˜μ§€λ§Œ κ·Έλ ‡λ‹€κ³  κ΅μˆ˜λŠ” 후보킀가 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—, ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•˜μ—¬ ꡐ수 λ˜ν•œ 후보킀가 될 수 μžˆλ„λ‘ ν•œλ‹€.


<좜처 : λ§λ‚˜λ‹ˆκ°œλ°œμž λΈ”λ‘œκ·Έ https://mangkyu.tistory.com/110>

  1. 제 4μ •κ·œν˜•

BCNFλ₯Ό λ§Œμ‘±ν•˜λ©΄μ„œ λ¦΄λ ˆμ΄μ…˜μ—μ„œ λ‹€μΉ˜ 쒅속 관계λ₯Ό μ œκ±°ν•œ μ •κ·œν˜•
*λ‹€μΉ˜μ’…μ† : 두 속성이 1:λ‹€ λŒ€μ‘μ΄ λ˜λŠ” 경우

  1. 제5μ •κ·œν˜•

후보킀λ₯Ό ν†΅ν•˜μ§€ μ•Šμ€ 쑰인쒅속을 μ œκ±°ν•œ μ •κ·œν˜•