μ •κ·œν™”μ˜ 탄생 λ°°κ²½

ν•œ relationμ—μ„œ μ—¬λŸ¬ entity의 attribute듀을 ν˜Όν•©ν•˜κ²Œ 되면 정보가 쀑볡 μ €μž₯되며 μ €μž₯곡간을 λ‚­λΉ„ν•˜κ²Œ λœλ‹€.

λ˜ν•œ 이런 μ€‘λ³΅λœ μ •λ³΄λ‘œ 인해 κ°±μ‹  이상이 λ°œμƒν•˜κ²Œ λœλ‹€.

λ™μΌν•œ 정보λ₯Ό ν•œ relationμ—λŠ” λ³€κ²½ν•˜κ³  λ‚˜λ¨Έμ§€ relationμ—μ„œλŠ” λ³€κ²½ν•˜μ§€ μ•Šμ€ 경우, μ–΄λŠ 것이 μ •ν™•ν•œμ§€ μ•Œ 수 μ—†κ²Œ λ˜λŠ” 것이닀. 

 

μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ •κ·œν™” 과정을 거치게 λœλ‹€.

 

κ°±μ‹  μ΄μƒμ΄λž€...?

1. μ‚½μž… 이상 Insertion anomalies
μ›ν•˜μ§€ μ•ŠλŠ” μžλ£Œκ°€ μ‚½μž…λœλ‹€λ“ μ§€, μ‚½μž…ν•˜λŠ”λ° μžλ£Œκ°€ λΆ€μ‘±ν•΄ μ‚½μž…μ΄ λ˜μ§€ μ•Šμ•„ λ°œμƒν•˜λŠ” 문제점

2. μ‚­μ œ 이상 Deletion anomalies
ν•˜λ‚˜μ˜ 자료만 μ‚­μ œν•˜κ³  μ‹Άμ§€λ§Œ, κ·Έ μžλ£Œκ°€ ν¬ν•¨λœ νŠœν”Œ 전체가 μ‚­μ œλ¨μœΌλ‘œ μ›ν•˜μ§€ μ•ŠλŠ” 정보 손싀이 λ°œμƒν•˜λŠ” 문제점

3. μˆ˜μ • 이상 Modification anomalies
μ •ν™•ν•˜μ§€ μ•Šκ±°λ‚˜ μΌλΆ€μ˜ νŠœν”Œλ§Œ κ°±μ‹ λ˜μ–΄ 정보가 λͺ¨ν˜Έν•΄μ§€κ±°λ‚˜ 일관성이 μ—†μ–΄μ Έ μ •ν™•ν•œ 정보 νŒŒμ•…μ΄ λ˜μ§€ μ•ŠλŠ” 문제점

 

 

 

μ •κ·œν™”λž€

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 쀑볡을 μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•΄ 데이터λ₯Ό κ΅¬μ‘°ν™”ν•˜λŠ” μž‘μ—…μ΄λ‹€. μ’€ 더 κ΅¬μ²΄μ μœΌλ‘œλŠ” 뢈만쑱슀러운 λ‚˜μœ relation의 attribute듀을 λ‚˜λˆ„μ–΄μ„œ μ’‹μ€ μž‘은 relation으둜 λΆ„ν•΄ν•˜λŠ” μž‘μ—…μ„ λ§ν•œλ‹€.

λ‚˜μœ relation ?
μ—”ν‹°ν‹°λ₯Ό κ΅¬μ„±ν•˜κ³  μžˆλŠ” μ• νŠΈλ¦¬λ·°νŠΈ 간에 ν•¨μˆ˜μ  쒅속성(Functional Dependency)을 νŒλ‹¨ν•˜λŠ”λ°, 각각의 μ •κ·œν˜•λ§ˆλ‹€ μ–΄λ– ν•œ ν•¨μˆ˜μ  쒅속성을 λ§Œμ‘±ν•˜λŠ”μ§€μ— 따라 μ •κ·œν˜•μ΄ μ •μ˜λ˜κ³ , κ·Έ μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜μ§€ λͺ»ν•˜λŠ” μ •κ·œν˜•μ„ λ‚˜μœ λ¦΄λ ˆμ΄μ…˜μœΌλ‘œ νŒŒμ•…ν•œλ‹€.

ν•¨μˆ˜μ  쒅속성은..?
μ• νŠΈλ¦¬λ·°νŠΈ λ°μ΄ν„°λ“€μ˜ μ˜λ―Έμ™€ μ• νŠΈλ¦¬λ·°νŠΈλ“€ κ°„μ˜ μƒν˜Έ κ΄€κ³„λ‘œλΆ€ν„° μœ λ„λ˜λŠ” μ œμ•½μ‘°κ±΄μ˜ 일쒅이닀. 

 

μ •κ·œν™” 과정을 거치게 되면 μ •κ·œν˜•μ„ λ§Œμ‘±ν•˜κ²Œ λœλ‹€. μ •κ·œν˜•μ΄λž€ νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ˜ μŠ€ν‚€λ§ˆμ˜ ν˜•νƒœλ₯Ό λ§ν•˜λ©° 제 1 μ •κ·œν˜•, 제 2 μ •κ·œν˜•, 제 3 μ •κ·œν˜•, … 등이 μ‘΄μž¬ν•œλ‹€.

 

제 1 μ •κ·œν˜•

μ• νŠΈλ¦¬λ·°νŠΈμ˜ 도메인이 였직 μ›μžκ°’λ§Œμ„ ν¬ν•¨ν•˜κ³ , νŠœν”Œμ˜ λͺ¨λ“  μ• νŠΈλ¦¬λ·°νŠΈκ°€ 도메인에 μ†ν•˜λŠ” ν•˜λ‚˜μ˜ 값을 κ°€μ Έμ•Ό ν•œλ‹€. 즉, 볡합 μ• νŠΈλ¦¬λ·°νŠΈ, 닀쀑값 μ• νŠΈλ¦¬λ·°νŠΈ, 쀑첩 λ¦΄λ ˆμ΄μ…˜ λ“± λΉ„ μ›μžμ μΈ μ• νŠΈλ¦¬λ·°νŠΈλ“€μ„ ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” λ¦΄λ ˆμ΄μ…˜ ν˜•νƒœλ₯Ό λ§ν•œλ‹€.

제 2 μ •κ·œν˜•

λͺ¨λ“  λΉ„μ£Όμš” μ• νŠΈλ¦¬λ·°νŠΈλ“€μ΄ μ£Όμš” μ• νŠΈλ¦¬λ·°νŠΈμ— λŒ€ν•΄μ„œ μ™„μ „ ν•¨μˆ˜μ  쒅속이면 μ œ 2 μ •κ·œν˜•μ„ λ§Œμ‘±ν•œλ‹€κ³  λ³Ό 수 μžˆλ‹€. μ™„μ „ ν•¨μˆ˜μ  μ’…μ†μ΄λž€ X -> Y λΌκ³  κ°€μ •ν–ˆμ„ λ•Œ, X 의 μ–΄λ– ν•œ μ• νŠΈλ¦¬λ·°νŠΈλΌλ„ μ œκ±°ν•˜λ©΄ 더 이상 ν•¨μˆ˜μ  쒅속성이 μ„±λ¦½ν•˜μ§€ μ•ŠλŠ” 경우λ₯Ό λ§ν•œλ‹€. 즉, ν‚€κ°€ μ•„λ‹Œ 열듀이 각각 후보킀에 λŒ€ν•΄ κ²°μ •λ˜λŠ” λ¦΄λ ˆμ΄μ…˜ ν˜•νƒœλ₯Ό λ§ν•œλ‹€.

제 3 μ •κ·œν˜•

μ–΄λ– ν•œ λΉ„μ£Όμš” μ• νŠΈλ¦¬λ·°νŠΈλ„ 기본킀에 λŒ€ν•΄μ„œ μ΄ν–‰μ μœΌλ‘œ μ’…μ†λ˜μ§€ μ•ŠμœΌλ©΄ μ œ 3 μ •κ·œν˜•μ„ λ§Œμ‘±ν•œλ‹€κ³  λ³Ό 수 μžˆλ‹€. 이행 ν•¨μˆ˜μ  μ’…μ†μ΄λž€ X - >Y, Y -> Z의 κ²½μš°μ— μ˜ν•΄μ„œ 좔둠될 수 μžˆλŠ” X -> Z의 쒅속관계λ₯Ό λ§ν•œλ‹€. 즉, λΉ„μ£Όμš” μ• νŠΈλ¦¬λ·°νŠΈκ°€ λΉ„μ£Όμš” μ• νŠΈλ¦¬λ·°νŠΈμ— μ˜ν•΄ μ’…μ†λ˜λŠ” κ²½μš°κ°€ μ—†λŠ” λ¦΄λ ˆμ΄μ…˜ ν˜•νƒœλ₯Ό λ§ν•œλ‹€.

BCNF(Boyce-Codd) μ •κ·œν˜•

μ—¬λŸ¬ 후보 ν‚€κ°€ μ‘΄μž¬ν•˜λŠ” λ¦΄λ ˆμ΄μ…˜μ— ν•΄λ‹Ήν•˜λŠ” μ •κ·œν™” λ‚΄μš©μ΄λ‹€. λ³΅μž‘ν•œ μ‹λ³„μž 관계에 μ˜ν•΄ λ°œμƒν•˜λŠ” 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 제 3 μ •κ·œν˜•μ„ λ³΄μ™„ν•˜λŠ”λ° μ˜λ―Έκ°€ μžˆλ‹€. λΉ„μ£Όμš” μ• νŠΈλ¦¬λ·°νŠΈκ°€ ν›„λ³΄ν‚€μ˜ 일뢀λ₯Ό κ²°μ •ν•˜λŠ” λΆ„ν•΄ν•˜λŠ” 과정을 λ§ν•œλ‹€.

각 μ •κ·œν˜•μ€ 그의 μ„ ν–‰ μ •κ·œν˜•λ³΄λ‹€ 더 μ—„κ²©ν•œ 쑰건을 κ°–λŠ”λ‹€.

  • λͺ¨λ“  제 2 μ •κ·œν˜• λ¦΄λ ˆμ΄μ…˜μ€ 제 1 μ •κ·œν˜•μ„ κ°–λŠ”λ‹€.
  • λͺ¨λ“  제 3 μ •κ·œν˜• λ¦΄λ ˆμ΄μ…˜μ€ 제 2 μ •κ·œν˜•μ„ κ°–λŠ”λ‹€.
  • λͺ¨λ“  BCNF μ •κ·œν˜• λ¦΄λ ˆμ΄μ…˜μ€ 제 3 μ •κ·œν˜•μ„ κ°–λŠ”λ‹€.

μˆ˜λ§Žμ€ μ •κ·œν˜•μ΄ μžˆμ§€λ§Œ 관계 λ°μ΄ν„°λ² μ΄μŠ€ μ„€κ³„μ˜ λͺ©ν‘œλŠ” 각 λ¦΄λ ˆμ΄μ…˜μ΄ 3NF(or BCNF)λ₯Ό κ°–κ²Œ ν•˜λŠ” 것이닀.

 

 

 

 

μ •κ·œν™”μ˜ μž₯점

  1. λ°μ΄ν„°λ² μ΄μŠ€ λ³€κ²½ μ‹œ 이상 ν˜„μƒ(Anomaly) 제거 μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ˜ 각쒅 이상 ν˜„μƒλ“€μ΄ λ°œμƒν•˜λŠ” λ¬Έμ œμ μ„ ν•΄κ²°ν•  수 μžˆλ‹€.
  2. λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰 ν™•μž₯ μ‹œ 재 λ””μžμΈ μ΅œμ†Œν™” μ •κ·œν™”λœ λ°μ΄ν„°λ² μ΄μŠ€ κ΅¬μ‘°μ—μ„œλŠ” μƒˆλ‘œμš΄ 데이터 ν˜•μ˜ μΆ”κ°€λ‘œ μΈν•œ ν™•μž₯ μ‹œ, κ·Έ ꡬ쑰λ₯Ό λ³€κ²½ν•˜μ§€ μ•Šμ•„λ„ λ˜κ±°λ‚˜ μΌλΆ€λ§Œ 변경해도 λœλ‹€. μ΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ—°λ™λœ μ‘μš© ν”„λ‘œκ·Έλž¨μ— μ΅œμ†Œν•œμ˜ 영ν–₯λ§Œμ„ 미치게 되며 μ‘μš©ν”„λ‘œκ·Έλž¨μ˜ 생λͺ…을 μ—°μž₯μ‹œν‚¨λ‹€.
  3. μ‚¬μš©μžμ—κ²Œ 데이터 λͺ¨λΈμ„ λ”μš± 의미있게 제곡 μ •κ·œν™”λœ ν…Œμ΄λΈ”λ“€κ³Ό μ •κ·œν™”λœ ν…Œμ΄λΈ”λ“€κ°„μ˜ 관계듀은 ν˜„μ‹€ μ„Έκ³„μ—μ„œμ˜ κ°œλ…λ“€κ³Ό κ·Έλ“€κ°„μ˜ 관계듀을 λ°˜μ˜ν•œλ‹€.

 

 

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

λ¦΄λ ˆμ΄μ…˜μ˜ λΆ„ν•΄λ‘œ 인해 λ¦΄λ ˆμ΄μ…˜ κ°„μ˜ μ—°μ‚°(JOIN μ—°μ‚°)이 λ§Žμ•„μ§„λ‹€.

이둜 인해 μ§ˆμ˜μ— λŒ€ν•œ 응닡 μ‹œκ°„μ΄ 느렀질 수 μžˆλ‹€.

 

쑰금 λ§λΆ™μ΄μžλ©΄, μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•œλ‹€λŠ” 것은 데이터λ₯Ό κ²°μ •ν•˜λŠ” κ²°μ •μžμ— μ˜ν•΄ ν•¨μˆ˜μ  쒅속을 가지고 μžˆλŠ” 일반 속성을 의쑴자둜 ν•˜μ—¬ μž…λ ₯/μˆ˜μ •/μ‚­μ œ 이상을 μ œκ±°ν•˜λŠ” 것이닀. λ°μ΄ν„°μ˜ 쀑볡 속성을 μ œκ±°ν•˜κ³  κ²°μ •μžμ— μ˜ν•΄ λ™μΌν•œ 의미의 일반 속성이 ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”λ‘œ μ§‘μ•½λ˜λ―€λ‘œ ν•œ ν…Œμ΄λΈ”μ˜ 데이터 μš©λŸ‰μ΄ μ΅œμ†Œν™”λ˜λŠ” νš¨κ³Όκ°€ μžˆλ‹€.

 

λ”°λΌμ„œ μ •κ·œν™”λœ ν…Œμ΄λΈ”μ€ 데이터λ₯Ό μ²˜λ¦¬ν•  λ•Œ 속도가 빨라질 μˆ˜λ„ 있고 느렀질 μˆ˜λ„ μžˆλŠ” νŠΉμ„±μ΄ μžˆλ‹€.

 

이와 같은 단점이 μžˆλ‹€λ©΄, μ–΄λ–€ μƒν™©μ—μ„œ μ •κ·œν™”λ₯Ό μ§„ν–‰ν•΄μ•Όν•˜λŠ”κ°€?

λ°˜μ •κ·œν™”(De-normalization, λΉ„μ •κ·œν™”)
λ°˜μ •κ·œν™”λŠ” μ •κ·œν™”λœ μ—”ν‹°ν‹°, 속성, 관계λ₯Ό μ‹œμŠ€ν…œμ˜ μ„±λŠ₯ ν–₯상 및 개발과 운영의 λ‹¨μˆœν™”λ₯Ό μœ„ν•΄ 쀑볡 톡합, 뢄리 등을 μˆ˜ν–‰ν•˜λŠ” 데이터 λͺ¨λΈλ§ 기법 쀑 ν•˜λ‚˜μ΄λ‹€. λ””μŠ€ν¬ I/O λŸ‰μ΄ λ§Žμ•„μ„œ 쑰회 μ‹œ μ„±λŠ₯이 μ €ν•˜λ˜κ±°λ‚˜, ν…Œμ΄λΈ”λΌλ¦¬μ˜ κ²½λ‘œκ°€ λ„ˆλ¬΄ λ©€μ–΄ 쑰인으둜 μΈν•œ μ„±λŠ₯ μ €ν•˜κ°€ μ˜ˆμƒλ˜κ±°λ‚˜, μΉΌλŸΌμ„ κ³„μ‚°ν•˜μ—¬ μ‘°νšŒν•  λ•Œ μ„±λŠ₯이 μ €ν•˜λ  것이 μ˜ˆμƒλ˜λŠ” 경우 λ°˜μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•˜κ²Œ λœλ‹€. 일반적으둜 μ‘°νšŒμ— λŒ€ν•œ 처리 μ„±λŠ₯이 μ€‘μš”ν•˜λ‹€κ³  νŒλ‹¨λ  λ•Œ λΆ€λΆ„μ μœΌλ‘œ λ°˜μ •κ·œν™”λ₯Ό κ³ λ €ν•˜κ²Œ λœλ‹€.

* λ°˜μ •κ·œν™”μ˜ λŒ€μƒ
1. 자주 μ‚¬μš©λ˜λŠ” ν…Œμ΄λΈ”μ— μ•‘μ„ΈμŠ€ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μˆ˜κ°€ κ°€μž₯ 많고, 항상 μΌμ •ν•œ λ²”μœ„λ§Œμ„ μ‘°νšŒν•˜λŠ” 경우
2. ν…Œμ΄λΈ”μ— λŒ€λŸ‰ 데이터가 있고 λŒ€λŸ‰μ˜ λ²”μœ„λ₯Ό 자주 μ²˜λ¦¬ν•˜λŠ” 경우
3. μ„±λŠ₯ 상 μ΄μŠˆκ°€ μžˆμ„ 경우
4. ν…Œμ΄λΈ”μ— μ§€λ‚˜μΉ˜κ²Œ 쑰인을 많이 μ‚¬μš©ν•˜κ²Œ λ˜μ–΄ 데이터λ₯Ό μ‘°νšŒν•˜λŠ” 것이 기술적으둜 μ–΄λ €μšΈ 경우


(주의, λ°˜μ •κ·œν™”λ₯Ό κ³Όλ„ν•˜κ²Œ μ μš©ν•˜λ‹€ 보면 λ°μ΄ν„°μ˜ 무결성이 깨질 수 μžˆλ‹€. λ˜ν•œ μž…λ ₯, μˆ˜μ •, μ‚­μ œμ˜ μ§ˆμ˜λ¬Έμ— λŒ€ν•œ 응닡 μ‹œκ°„μ΄ λŠ¦μ–΄μ§ˆ 수 μžˆλ‹€.)

Reference.

링크1

+ Recent posts