본문 바로가기
데이터베이스 관리론

[데이터베이스 관리론] 정규화에 관하여

by LSB98 2024. 4. 1.
728x90
반응형

* 정규화

함수적 종속(functional dependency) 관계를 이용하여 삽입, 삭제, 변경 시 발생할 수 있는 이상 현상(anomaly) 제거하여 관계 데이터 모델 설계의 질을 높이기 위한 기법

이상 현상을 없애기 위해서 Table을 분리하고 join 하는 과정을 거쳤지만 Side Effect으로 시간이 오래걸리는 현상이 발생 함

 

* 함수적 종속(functional dependency)

- 속성 X의 값이 속성 Y의 값을 결정하면 Y는 X에 함수적 종속

- 즉, X의 값을 알면 Y의 값도 알 수 있음

 

예시)

학번 → 전공

컴퓨터_일련 번호 → 기억_장치_용량

(학번, 과목명) → 점수

 

* Determinant 형태

학번 기숙사 월세
100 월평관 320
150 아주관 100
200 월평관 320
250 우성관 200
300 월평관 320

 

함수적 종속 : 학번 -> 기숙사 -> 월세

 

- 학번에서 겹치는 부분이 없어 유일성이 있는 key가 되어 진다. 따라서 학번 -> 기숙사, 학번 -> 월세는 함수적 종속 관계를 갖는다.

- 기숙사에서는 월평관이 겹치긴 하지만, 각 기숙사마다 다른 월세 가격을 가지고 있기 때문에, 기숙사 -> 월세는 함수적 종속 관계를 갖는다.

 

 

 

* 정규화(Normalization)의 종류

: 함수적 종속 관계를 이용한 좋은 데이터베이스 설계, 각 정규형마다 부작용이 존재

: 정규화가 되기 위해서는 무조건 제 1 정규형은 만족해야 함

가운데로 갈수록 더욱 발전한 모델

 

* 제 1정규형

- 조건1. 각 속성은 하나의 도메인(Domain)을 가지며, 속성의 순서는 중요하지 않음

- 조건2. 같은 튜플은 없어야 하고 튜플의 순서도 중요하지 않음

- 조건3. 각 셀은 하나의 값만 보유

공급원 주소 ITEM 가격
서울시 볼펜 100
화성시 연필 1000
용인시 지우개 500
수원시 샤프 3
평택시 색연필 20

* 중복, 삽입, 삭제, 갱신 시 변경이상(Modification Anomaly)

 

* 제 2 정규형

- Partial key dependence를 없앤 것

- 2개 이상의 Attribute를 가지게 되면, 그 중에 하나가 Partial key가 된다.

- Partial key -> 다른 키로 가는 함수가 있으면 partial key dependence

- 2개 이상의 Attribute를 가지게 됨 둘중에 하나가 partial key

- 이걸 떼어 내는 Table을 만들게 되면 제 2 정규형이 되는 것

 

Activity(SID, Activity, Fee) -> SID랑 Activity가 묶여야( 2개 이상의 Attribute) key가 될수 있음, Partial key

SID Activity Fee
100 축구 200
150 야구 50
150 배드민턴 50
175 야구 50
200 배드민턴 50

 

STU-ACT(SID, Activity)

SID Activity
100 축구
150 야구
150 배드민턴
175 야구
200 배드민턴

 

ACT-COST(Activity, Fee)

Activity Fee
축구 200
야구 50
배드민턴 50

 

 

* 제 3 정규형

- 2행 함수적 종속 관계를 없앤것

- Attribute가 3개 일때,  A->B, B->C인 관계가 2행 함수적 종속 관계이다.

: Buliding -> Fee

: SID -> Building -> Fee

- 이걸 떼어 내게 되면 No Transitive Function Dependency가 되면서 제 3정규형이 되는 것이다.

 

SBF(SID, Building, Fee)

SID Building Fee
100 성호관 120
150 팔달관 130
200 성호관 120
250 다산관 110
300 성호관 120

 

SB(SID, Building)

SID Building
100 성호관
150 팔달관
200 성호관
250 다산관
300 성호관

 

SF(Building, Fee)

Building Fee
성호관 120
팔달관 130
성호관 120
다산관 110
성호관 120

 

 

* Boyce-Codd 정규형

- Candidate Key -> Determinant로 만들어 주는 것, 결국 둘 중 하나를 뽑아야 하는 것

- (SID, Major) → Fname / (SID, Fname) → Major

SID Major Fname
100 수학 이순신
150 심리학 홍길동
200 컴퓨터공학 김시민
250 경제학 홍길동
300 컴퓨터공학 김시민
300 수학 권율
SID Major
100 수학
150 심리학
200 컴퓨터공학
250 경제학
300 컴퓨터공학
300 수학
Major Fname
수학 이순신
심리학 홍길동
컴퓨터공학 김시민
경제학 홍길동
컴퓨터공학 김시민
수학 권율

 

* 제 4정규형

- Multivalued Dependencies(가치 종속) => 함수x 

- SID ->-> Major / SID ->-> Activity

SID Major Activity
100 기계과 수영
100 전자과 수영
100 기계과 축구
100 전자과 축구
150 물리과 농구
200 물리과 농구
SID Major
100 기계과
100 전자과
150 물리과
200 물리과
SID Activity
100 수영
100 축구
150 농구
200 농구

 

SID Major Activity
100 기계과 수영
100 전자과 수영

 

* 제 5 정규형

: Lossless Join을 만족 되게끔 하면 제 5 정규형

SID Fname Building Fee
100 이순신 성호관 120
150 홍길동 팔달관 130
175 김시민 성호관 150
200 이순신 다산관 110
215 권율 성호관 120

 

SIN (SID,Name)

SIBLDG(SID, Building)

SIF(SID, Fee)

 

* 도메인/키 정규형

- 더이상 anomally가 발생되지 않음이 증명

관계에 관한 모든 제약이 도메인과 키의 논리적 산물

 

 

* 정규화를 하면서 알아야 하는 Point

- Insert, Delete, Modify 시에 생기는 Anomally를 서술

- Anomally가 왜 생겼는지를 알아야함 -> 이걸 알기 위해서는 무엇이 키인지 알아야 함

728x90
반응형