본문 바로가기

Computer Science/DB

7. 데이터 종속성과 정규화

728x90
반응형

<Anomaly(이상)>

- 삭제 이상 : 연쇄 삭제에 의한 정보 손실(애트리뷰트 전체가 삭제됨)

- 삽입 이상 : 원하지 않는 정보의 강제 삽입(학번만 입력하고 싶은데 학년까지 입력해야 함)

- 갱신 이상 : 중복 데이터의 일부 갱신으로 정보의 모순성 발생(특정 학번의 학년을 변경할 때 해당 학번을 가진 row들이 모두 변경됨)

 

이상의 원인: 하나의 개체에 속한 애트리뷰트들 간에 존재하는 종속 관계를 하나의 릴레이션으로 표현하기 때문

이상의 해결: 애트리뷰트들 간의 여러 종속관계를 분해하여 각각 하나의 릴레이션으로 표현 => 정규화

 

Anomoly의 예시

 

<Functional Dependency(함수 종속)>

정의) 어떤 릴레이션 R에서 애트리뷰트 X의 값에 대해 애트리뷰트 Y의 값이 최대 하나만 연관, X -> Y는 애트리뷰트 Y는 애트리뷰트 X에 종속이라는 의미이고, X를 결정자, Y를 종속 자라고 한다.

 

-완전 함수 종속: 기본키를 모두 결정자로 가질 때

-부분 함수 종속: 기본키를 일부만 결정자로 가질 때

 

<완전 함수 종속과 부분 함수 종속 예시>

함수 종속에 대한 추론 규칙 5가지는 다음과 같다.

 

1. Reflexive(반사): B가 A에 포함될 때 A -> B이고, A -> A이다.

2. Argumentation(첨가): A -> B 이면 AC -> BC이고 AC -> B이다.

3. Tramsitive(이행): A -> B이고 B -> C 이면 A-> C이다.

4. Decomposition(분해): A -> BC이면, A -> B이다.

5. Uniom(결합): A -> B이고 A -> C 이면 A -> BC이다.

 

함수 종속은 데이터의 의미를 나타낸다.

ex) 학번 -> 학년 의 의미는 "학생은 한 학년에만 속한다"라는 의미다.

 

<정규형> 

정규형(Normal Form)이란 어떤 일련의 제약 조건을 만족하는 릴레이션이다.

정규화란 스키마 변환을 통해서 정규형으로 만드는 것이다.

 

정규화의 원칙은 다음과 같다.

1. 정보 표현의 무손실을 보장해야 한다.(같은 의미의 정보 유지, 효율적인 구조)

2. 최소의 데이터 중복

3. 분리의 원칙(릴레이션 각각에 대해 독립적인 처리 가능, 독립적인 관계는 별개의 릴레이션으로 표현)

 

<제1 정규형>

제 1 정규형의 예시와 이상

- 정의) 모든 도메인 값이 원자 값만으로 이루어진 릴레이션

 

- 이상의 원인) 기본키에 부분 함수 종속된 애 트리 뷰트가 존재(두 가지 독립적인 정보가 하나의 릴레이션으로 표현)

 

- 이상의 해결) 프로젝션을 통해서 제1 정규형 릴레이션을 분해(부분 함수 종속을 제거) => 제2 정규형 

 

<제2 정규형>

제 2 정규형의 예시와 이상

- 정의) 제1 정규형이고 키에 속하지 않는 애트리뷰트들은 모두 기본 키에 완전 함수 종속

 

- 무손실 분해) 1NF -> 프로젝션 -> 2NF, 2NF -> 자연 조인 -> 1NF이다. 원래의 릴레이션(1NF)에서 얻을 수 있는 정보는 분해된 릴레이션(2NF)에서도 얻을 수 있지만, 그 역은 성립하지 않는다.

R(A, B, C)에서 A->B 가 성립하면 R1(A, B), R2(A, C)로 무손실 분해가 가능 = 정보의 손실 없이 릴레이션 분해 

 

- 이상의 원인) 이행적 함수 종속이 존재, 이행적 함수 종속이란 R에 함수 종속 A-> C가 존재하고 A -> B와 B -> C 가 존재할 때 C는 A에 이행적 함수 종속이라 한다.

 

- 이상의 해결) 프로젝션으로 2NF 릴레이션을 분해(이행적 함수 종속을 제거) => 3NF

 

<제3 정규형>

제 3 정규형 예시

- 정의) 제2 정규형이고 키에 속하지 않는 애트리뷰트들은 모두 기본 키에 이행적 함수 종속이 되지 않음

 

- 무손실 분해) 2NF -> 프로젝션 -> 3NF, 3NF -> 자연 조인 -> 2NF이다. 원래의 릴레이션(2NF)에서 얻을 수 있는 정보는 분해된 릴레이션(3NF)에서도 얻을 수 있지만, 그 역은 성립하지 않는다.

 

- 키가 아닌 애트리뷰트 값의 갱신 시 불필요한 부작용(이상)이 발생하지 않음 까라서 모든 이원 릴레이션은 3NF에 속함

 

- 3NF의 약점)

1. 복수의 후보 키를 가지면 적용 불가

2. 후보 키들이 두 개 이상의 애트리뷰트들로 구성되어 있으면 적용 불가

3. 후보 키들의 애트리뷰트가 서로 중첩되는 경우 적용 불가

 

- 3NF 약점의 해결) 보다 일반적인 Boyce/Codd Normal Form(BCNF) 사용 

 

<보이스/코드 정규형>

BCNF의 예시

- 정의) 릴레이션 R의 결정자가 모두 후보키 이면 R은 BCNF에 속한다. R이 BCNF(강한 제3 형)에 속하면 R은 제1,2,3 형에도 속함 

- 이상의 원인) 값의 집합을 결정하기 때문

 

- 다치 종속(MVD)은 A, B, C가 릴레이션 R의 애트리뷰트의 부분 집합이라 할 때 애트리뷰트 쌍 (A, C)에 대응되는 B값의 집합이 A값에만 종속되고 C값에는 독립적이면 B는 A에 다치 종속이라 하고 A ->> B로 표기한다.

A->> B 이면 A->> C도 성립한다. 즉 교재도 과목에 종속되고 교수도 과목에 종속되기 때문이다.

 

-Fagin의 정리) 위 다치 조건 종속을 만족할 때 R1(A, B)와 R2(A, C)는 무손실 분해다.

 

<제4 정규형>

제 4 정규형 예시

 

- 정의) 릴레이션 R에서 MVD A ->> B를 만족하는 애트리뷰트 집합 A, B 가 존재할 때 R의 모든 애트리뷰트들이 A에 함수 종속(즉 R의 모든 애트리뷰트 X에 대해 A -> X이고 A가 후보 키) 이면 R은 4NF

== 릴레이션 R이 BCNF에 속하고 모든 MVD가 FD이면 R은 4NF 

== 어떤 릴레이션 R이 4NF라면 MVD가 없거나 MVD A ->> B or C 가 있을경우 A에 대응되는 B와 C 값은 하나씩 이어야 하며 이때 A는 후보 키라는 것을 의미한다.

 

<제5 정규형>

- 정의) 조인 종속 개념을 기반으로 한다. 조인 종속이 존재하면 5 정규화 대상이다. 하나의 릴레이션을 여러 릴레이션으로 분해한 후 공통 속성으로 조인하여 데이터 손실 없이 원래 릴레이션으로 복원하는 무손실 조인을 보장해야 한다. 조인한 결과에 원래 릴레이션에 없는 데이터가 존재하지 않는 비부가적인 조인도 보장해야 한다.

 

<정리>

- 릴레이션의 정규화는 실제 데이터 값이 아니라 개념적, 논리적 측면에서 수정되고 다루어지는 것이다.

- 실제 정규화 과정은 정규형의 순서와 항상 일치하는 것은 아니다.

728x90
반응형