데이터베이스

정규화, 함수적 종속성_ 정규화의 목적, 제1정규형, 제2정규형, 제3정규형, BCNF분해

스윙스윙 2021. 8. 21. 12:20

▣ 함수적 종속(Functional Dependency)

1) 완전 함수적 종속

릴레이션 R에서 애트리뷰트 X의 값 각각에 대해 항상 애트리뷰트 Y의 값이 하나만 연관되는 경우

2) 부분 함수적 종속

애트리뷰트 Y가 복합 애트리뷰트 X에 함수 종속이면서 X의 진부분 집합에는 함수 종속이 아닌 경우

3) 이행 함수 종속

종속관계 중 키가 아닌 다른 애트리뷰트도 결정자일 경우

 

▣ 정규화

1) 제1정규형(1NF, First Noraml Form)

한 릴레이션을 구성하는 모든 도메인이 원자값으로 된 정규형 / 속성의 원자화

 

2) 제2정규형(2NF, Second Normal Form)

제1정규형을 만족하면서 릴레이션에 존재하는 부분 함수적 종속을 제거하여, 모든 속성이 기본키에 완전 함수 종속이 되도록 만들어진 정규형

 

3) 제3정규형(3NF, Third Normal Form)

제2정규형을 만족하면서 릴레이션을 구성하는 속성들 간의 이행적 종속관계를 분해하여 속성들이 비이행적 함수 종속관계를 만족하도록 만들어진 정규형

 

4) 보이스-코드(BCNF, Boyce-Codd Normal Form)

제3정규형을 만족하면서 릴레이션의 모든 결정자가 후보키가 되도록 하는 정규형 / 결정자가 후보키가 아닌 속성 제거

 

5) 제4정규형(4NF, Fourth Normal Form)

BCNF를 만족하면서 릴레이션에서 다치 종속 관계를 제거한 정규형

 ※다치 종속(MVD, Multival Dependency): 두 속성이 1:다 대응이 되는 경우

 

6) 제5정규형(5NF, Fifth Normal Form)

후보키를 통하지 않은 조인종속(Join Dependency)을 제거한 정규형

 

▣ 역정규화
정규화를 통해 분리되었던 릴레이션에서 중복을 허용하고 다시 통합하거나 분할하여 구조를 재조정하는 과정

 

1) 릴레이션 역정규화

- 릴레이션 병합: 두 릴레이션 간의 잦은 참조로 성능이 저하될 경우 이 문제점을 해결하기 위해 병합

- 릴레이션 분할:

수직 분할(자주 사용하는 속성과 그렇지 않는 속성을 구분해서 분할)

수평 분할(자주 사용하는 튜플과 그렇지 않는 튜플을 구분해서 분할) - 파티션 적용으로 성능 향상 도모

 

2) 속성 역정규화: 릴레이션의 성능을 향상시키기 위해 속성 또는 파생속성을 추가

   ※파생 속성(Delivered Attribute): 현재 릴레이션에는 없는 속성이지만 작업의 효율을 위해 힌 속성으로부터의 계산이나 가공에 의해 파생되는 속성

 

■ 정규화의 목적(필요성)

- 데이터의 이상현상 제거(삽입/갱신/삭제 이상)

- 중복 데이터 제거를 통한 저장공간의 효율화

- 자료의 불일치성 최소화를 통한 데이터 무결성 확보

 

■ 정규화의 원리

- 분리의 원칙(principle of separation) : 하나의 독립된 관계성은 별도의 릴레이션으로 분리시켜 표현함

- 정보 표현의 무손실(nonless representation of information) : 변환된 스키마가 표현하는 정보는 변환되기 전 정보를 모두 포함하고 있어야 함

- 최소의 데이터 중복(minimal data redundancy) : 중복으로 인한 여러가지 이상현상이 제거되어야 함

 


2019년 52번

정답 : 2번

보안을 목적으로 정규화를 하지 않음

 


2012년 71번

정답 : 4번

BCNF(보이스/코드 정규형)을 위배하여 이상현상이 발생할 수 있음

이행적 함수 종속이 없으므로 제3정규형임

함수종속집합 = { (고객번호, 상품유형) -> 담당보험원, 담당보험원 -> 상품유형) 이므로 (고객번호, 상품유형)가 우선 후보키가 될수 있고, 담당보험원이 상품유형을 결정하므로 (고객번호, 담당보험원)가 후보키가 되면 담당보험원을 통하여 상품 유형을 알 수 있음

 

* BCNF 정규화를 거치고 난 후의 릴레이션

 


2014년 75번

정답 : 2번

기본키 (학번, 과목명) 임

이름(황힘찬)이 기본키(20121001, 데이터베이스)와 기본키(2012001, 운영체제)에 완전함수 종속되지 않음

또한 부분함수 종속이 존재하고, 모든 도메인이 원자값으로만 되어 있으므로 제1정규형임

 

1) 완전 함수적 종속

릴레이션 R에서 애트리뷰트 X의 값 각각에 대해 항상 애트리뷰트 Y의 값이 하나만 연관되는 경우

 

2) 부분 함수적 종속

애트리뷰트 Y가 복합 애트리뷰트 X에 함수 종속이면서 X의 진부분 집합에는 함수 종속이 아닌 경우

 

3) 이행 함수 종속

종속관계 중 키가 아닌 다른 애트리뷰트도 결정자일 경우

 


2015년 51번

정답 : 3번

후보키(A,B)가 C를 종속하고, C가 후보키 B를 종속

 


2012년 56번

정답 : 3번

C->D가 R3(C,D)릴레이션으로 추출

E->C가 R2(E,C)릴레이션으로 추출

마지막으로 A->(B,C,D,E), B->(A,C,D,E)에서 C,D,E가 나왔으므로

A->(B,E) 혹은 B->(A,E)만 추가하면 문제에서 제시하는 종속이 보존되므로

R1(A,B,E) 혹은 R1(B,A,E)

A와 B는 같은 릴레이션 내 동격인 후보키임 (A->B, B->A)

 

∴ R1(A,B,E), R2(E,C), R3(C,D) 이거나 R1(B,A,E), R2(E,C), R3(C,D) 로 분해됨

 


2013년 55번

정답 : 4번

보이스/코드(BCNF) 분할 결과는 (X, Z)와 (Y, Z)