λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“Œ λ°μ΄ν„°λ² μ΄μŠ€

λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν„°λ”” 4μ£Όμ°¨

by megan07 2024. 1. 29.

이상 ν˜„μƒ

ν…Œμ΄λΈ”μ— νˆ¬ν”Œμ„ μ‚½μž…ν•  λ•Œ λΆ€λ“μ΄ν•˜κ²Œ NULL 값이 μž…λ ₯λ˜κ±°λ‚˜, μ‚­μ œ μ‹œ μ—°μ‡„μ‚­μ œ ν˜„μƒμ΄ λ°œμƒν•˜κ±°λ‚˜, μˆ˜μ • μ‹œ λ°μ΄ν„°μ˜ 일관성이 ν›Όμ†λ˜λŠ” ν˜„μƒμ„ λ§ν•©λ‹ˆλ‹€. 잘λͺ»λœ ν…Œμ΄λΈ” 섀계λ₯Ό ν•  κ²½μš°μ— λ°œμƒν•©λ‹ˆλ‹€.

 

μ‚½μž… 이상(Insertion Anomaly)

νˆ¬ν”Œ μ‚½μž… μ‹œ νŠΉμ • 속성에 ν•΄λ‹Ήν•˜λŠ” 값이 μ—†μ–΄ NULL값을 μž…λ ₯ν•΄μ•Ό ν•˜λŠ” ν˜„μƒ

 

κ°±μ‹  이상(Update Anomaly)

νˆ¬ν”Œ μˆ˜μ • μ‹œ μ€‘λ³΅λœ λ°μ΄ν„°μ˜ μΌλΆ€λ§Œ μˆ˜μ •λ˜μ–΄ λ°μ΄ν„°μ˜ 뢈일치 λ¬Έμ œκ°€ μΌμ–΄λ‚˜λŠ” ν˜„μƒ

 

μ‚­μ œ 이상(Deletion Anomaly)

νˆ¬ν”Œ μ‚­μ œ μ‹œ 같이 μ €μž₯된 λ‹€λ₯Έ μ •λ³΄κΉŒμ§€ μ—°μ‡„μ μœΌλ‘œ μ‚­μ œλ˜λŠ” ν˜„μƒ

 

ν•¨μˆ˜ 쒅속성

λ¦΄λ ˆμ΄μ…˜ 속성 간에 ν•¨μˆ˜μ μœΌλ‘œ μ’…μ†ν•˜λŠ” μ„±μ§ˆ
ν•œ 속성 A의 값을 μ•Œ λ•Œ λ‹€λ₯Έ 속성 B의 값이 μœ μΌν•˜κ²Œ μ •ν•΄μ§€λŠ” μ˜μ‘΄κ΄€κ³„λ₯Ό 속성 BλŠ” 속성 A에 μ’…μ†ν•œλ‹€κ³  ν•©λ‹ˆλ‹€.

고객아이디 -> 고객이름

고객아이디 -> λ“±κΈ‰

 

κ³ κ°μ•„μ΄λ””λŠ” ν•œ κ³ κ°μ—κ²Œλ§Œ μœ μΌν•˜κ²Œ λΆ€μ—¬λ˜λŠ” κ°’μž…λ‹ˆλ‹€.

λ”°λΌμ„œ 고객아이디λ₯Ό μ•Œλ©΄ 고객이름과 등급을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

고객이름, 등급은 고객아이디에 μ’…μ†ν•©λ‹ˆλ‹€. 

 

 

μ™„μ „ ν•¨μˆ˜μ  쒅속

속성 X->Y 쒅속성이 성립할 λ•Œ, Yκ°€ X의 전체 집합에 쒅속적이고, λΆ€λΆ„ μ§‘ν•©μ—λŠ” 쒅속적이지 μ•ŠλŠ” 것

 

예λ₯Ό λ“€μ–΄ (X1, X2) -> Y 쒅속이 성립할 λ•Œ,  X1->Y λ˜λŠ” X2->Yκ°€ μ„±λ¦½ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μ™„μ „ ν•¨μˆ˜μ  μ’…μ†μž…λ‹ˆλ‹€

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

κΈ°λ³Έν‚€κ°€ 볡합킀일 경우 κΈ°λ³Έν‚€λ₯Ό κ΅¬μ„±ν•˜λŠ” 속성 쀑 μΌλΆ€μ—κ²Œ μ’…μ†λœ 경우

 

예λ₯Ό λ“€μ–΄ (X1, X2) -> Y μ’…μ†μ„±μ—μ„œ X2λ₯Ό μ œκ±°ν–ˆμŒμ—λ„ X1->Yκ°€ μ„±λ¦½ν•œλ‹€λ©΄ λΆˆμ™„μ „ ν•¨μˆ˜ 쒅속 ν˜Ήμ€ λΆ€λΆ„ ν•¨μˆ˜ μ’…μ†μž…λ‹ˆλ‹€.

 

이행적 ν•¨μˆ˜μ  쒅속

λ¦΄λ ˆμ΄μ…˜μ— X→Y, Y→Z 쒅속이 μ‘΄μž¬ν•˜μ—¬, X→Zκ°€ 쒅속이 μ„±λ¦½ν•˜λŠ” 경우

 

μ •κ·œν™”(Normalization)

λ¦΄λ ˆμ΄μ…˜μ„ λΆ„ν•΄ν•˜μ—¬ μ΄μƒν˜„μƒμ„ μ—†μ• λŠ” κ³Όμ •

 

 

제 1 μ •κ·œν˜•

λ¦΄λ ˆμ΄μ…˜μ˜ λͺ¨λ“  속성 값이 μ›μžκ°’μ„ κ°€μ§€λŠ” 것
이름 μ·¨λ―Έ
μ˜μˆ™ μ‚°μ±…
μ •μˆ™ λ…μ„œ
영자 클라이밍, 수영
ν˜„μˆ™ μŒμ•…

 

영자의 μ·¨λ―Έκ°€ (클라이밍, 수영)으둜 μ›μžκ°’μ΄ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— 제 1 μ •κ·œν˜•μ— ν•΄λ‹Ήν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€

 

이름 μ·¨λ―Έ
μ˜μˆ™ μ‚°μ±…
μ •μˆ™ λ…μ„œ
영자 클라이밍
영자 수영
ν˜„μˆ™ μŒμ•…

 

영자의 νˆ¬ν”Œμ„ 2개둜 λΆ„λ¦¬ν•œ ν›„μ—λŠ”

λͺ¨λ“  속성이 μ›μžκ°’μ„ 가지고 μžˆμœΌλ―€λ‘œ 제 1 μ •κ·œν˜•μ— ν•΄λ‹Ήν•©λ‹ˆλ‹€

 

 

제 2 μ •κ·œν˜•

제 1 μ •κ·œν˜•μ΄κ³ , κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 기본킀에 μ™„μ „ ν•¨μˆ˜ 쒅속인 것

 

ν…Œμ΄λΈ”μ˜ κΈ°λ³Έν‚€λŠ” (고객아이디, 이벀트번호)μž…λ‹ˆλ‹€

λͺ¨λ“  속성듀은 기본킀에 μ’…μ†μ μž…λ‹ˆλ‹€

ν•˜μ§€λ§Œ κΈ°λ³Έν‚€μ—μ„œ 이벀트번호λ₯Ό μ œκ±°ν–ˆμŒμ—λ„ λ“±κΈ‰,ν• μΈμœ¨ 속성은 쒅속성을 μœ μ§€ν•©λ‹ˆλ‹€

(고객아이디) -> λ“±κΈ‰

(고객아이디) -> ν• μΈμœ¨

λ”°λΌμ„œ 제 2μ •κ·œν˜• 쑰건을 μΆ©μ‘±ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€

 

μ‚½μž…μ΄μƒ:

μ‹ κ·œ 고객이 μ΄λ²€νŠΈμ— μ°Έμ—¬ν•˜μ§€ μ•Šμ•˜μ„ 경우, 기본킀인 μ΄λ²€νŠΈλ²ˆν˜Έμ— NULL값을 λΆ€μ—¬ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— μ‚½μž…μ΄ λΆˆκ°€ν•©λ‹ˆλ‹€

 

μ‚­μ œ 이상:

orange고객의 정보λ₯Ό μ‚­μ œν•  경우 silver λ“±κΈ‰κ³Ό ν• μΈμœ¨ 정보가 μ‚¬λΌμ Έμ„œ μ‚­μ œ 이상이 λ°œμƒν•©λ‹ˆλ‹€

 

갱신이상:

κΈ°λ³Έν‚€ 값이 (apple, E001)인 νˆ¬ν”Œμ˜ ν• μΈμœ¨μ„ 15%둜 μˆ˜μ •ν•  경우

λ‹€λ₯Έ νˆ¬ν”Œμ˜ gold λ“±κΈ‰μ˜ ν• μΈμœ¨κ³Ό 값이 μΌμΉ˜ν•˜μ§€ μ•Šκ²Œ 되기 λ•Œλ¬Έμ— μˆ˜μ •μ„ ν•  수 μ—†μŠ΅λ‹ˆλ‹€

 

 

 

 

λΆ€λΆ„ ν•¨μˆ˜ 쒅속을 μ œκ±°ν•˜κΈ° μœ„ν•΄μ„œ

λ¦΄λ ˆμ΄μ…˜μ„ 기본킀에 μ™„μ „ μ’…μ†ν•œ 2개의 λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€

 

 

제 3 μ •κ·œν˜•

제 2 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ³ , κΈ°λ³Έν‚€κ°€ μ•„λ‹Œ 속성이 기본킀에 λΉ„μ΄ν–‰μ μœΌλ‘œ μ’…μ†ν•˜λŠ” 것
이행적 쒅속은 A->B, B->Cκ°€ 성립할 λ•Œ A->Cκ°€ μ„±λ¦½λ˜λŠ” 것

 

 

μ‚½μž… 이상

예λ₯Ό λ“€μ–΄ ν•΄λ‹Ή ν…Œμ΄λΈ”μ— μƒˆλ‘œμš΄ 등급을 μΆ”κ°€ ν•  λ•Œμ— 기본킀인 고객아이디가 μ‘΄μž¬ν•˜μ§€ μ•Šμ•„μ„œ μ‚½μž…μ„ ν•  수 μ—†λ‹€

 

 

κ°±μ‹  이상

등급에 λŒ€ν•œ ν• μΈμœ¨μ΄ λ³€κ²½λ˜λ©΄ λ‹€λ₯Έ νˆ¬ν”Œμ— μ‘΄μž¬ν•˜λŠ” 같은 등급에 λŒ€ν•œ ν• μΈμœ¨μ΄ 같이 λ³€κ²½λ˜μ–΄μ•Ό ν•œλ‹€

ν•˜λ‚˜λ§Œ λ°”λ€” 경우 κ°±μ‹  이상 ν˜„μƒμ΄ λ°œμƒν•œλ‹€

 

μ‚­μ œ 이상

 

고객 ν•œλͺ…을 μ‚­μ œν•˜λ©΄ vip 등급에 λŒ€ν•œ λ‚΄μš©κΉŒμ§€ μ‚¬λΌμ§€λŠ” μ‚­μ œ 이상이 λ°œμƒν•œλ‹€

 

μ΄μƒν˜„μƒμ˜ 원인

κΈ°λ³ΈκΈ°λŠ” 고객아이디이닀

λ“±κΈ‰, ν• μΈμœ¨μ€ λͺ¨λ‘ 고객 아이디에 μ’…μ†λ˜μ–΄ μžˆλ‹€.

ν•˜μ§€λ§Œ ν• μΈμœ¨μ€ 등급에 ν•œ 번 더 μ’…μ†λ˜μ–΄ μžˆλ‹€.

 

 

 

λ”°λΌμ„œ 이행적 ν•¨μˆ˜ 쒅속을 μ œκ±°ν•˜κΈ° μœ„ν•΄

2개의 λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ λ‚˜λˆŒ 수 μžˆλ‹€

 

 

BCNF μ •κ·œν˜•

제 3 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜λ©΄μ„œ ν•¨μˆ˜ 쒅속성 X-> Yκ°€ 성립할 λ•Œ, λͺ¨λ“  κ²°μ •μž Xκ°€ 후보킀인 것

 

μ•„λž˜μ™€ 같은 κ°•μ’Œ μ‹ μ²­ λ¦΄λ ˆμ΄μ…˜μ΄ μžˆλ‹€κ³  κ°€μ •ν•©μ‹œλ‹€

 

 (고객아이디, μΈν„°λ„·κ°•μ’Œ) -> λ‹΄λ‹Ήκ°•μ‚¬λ²ˆν˜ΈλŠ” ν•¨μˆ˜ 쒅속성이 μ„±λ¦½ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 인터넷 κ°•μ’Œ-> λ‹΄λ‹Ήκ°•μ‚¬λ²ˆν˜Έ λ˜ν•œ ν•¨μˆ˜ 쒅속성이 μ„±λ¦½ν•©λ‹ˆλ‹€.

μΈν„°λ„·κ°•μ’ŒλŠ” 후보킀가 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— BCNF μ •κ·œν˜•μ˜ 쑰건을 λ§Œμ‘±ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

 

ν•΄λ‹Ή λ¦΄λ ˆμ΄μ…˜λ„ μ‚­μ œ, μ‚½μž…, 갱신이상이 λ°œμƒν•©λ‹ˆλ‹€

 

 

λ”°λΌμ„œ 후보킀가 μ•„λ‹Œ κ²°μ •μžλ₯Ό μ œκ±°ν•˜κΈ° μœ„ν•΄ λ¦΄λ ˆμ΄μ…˜μ„ 뢄리할 수 μžˆμŠ΅λ‹ˆλ‹€

 

 

λ°˜μ •κ·œν™”

μ •κ·œν™”λœ 데이터 λͺ¨λΈμ—μ„œ 쀑볡, 톡합, 뢄리 등을 μˆ˜ν–‰ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.
데이터 무결성이 깨질 μˆ˜λ„ μžˆμœΌλ‚˜ μ„±λŠ₯ ν–₯상을 μœ„ν•΄ λ°˜μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.

 

 


μ°Έκ³ 

https://terms.naver.com/entry.naver?docId=3431246&cid=58430&categoryId=58430&expCategoryId=58430