Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

subsay

관계 데이터베이스 모델과 언어 - 정규화(Normalization) 본문

정보처리 기사

관계 데이터베이스 모델과 언어 - 정규화(Normalization)

subsay 2017. 9. 27. 20:48

1. 정규화의 개요

 - 정규화란 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정이다.

 - 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정이라 할 수 있다.

 - 정규형에는 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형, 제5정규형이 있으며, 차수가 높아질수록 만족시켜야 할 제약 조건이 늘어난다.

 - 정규화는 데이터베이스의 논리적 설계 단계에서 수행한다.

 - 정규화는 논리적 처리 및 품질에 큰 영향을 미친다.


2. 정규화의 목적

 - 데이터 구조의 안정성을 최대화 한다.

 - 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만든다.

 - 효과적인 검색 알고리즘을 생성할 수 있다.

 - 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지한다.

 - 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다.


3. Anomaly(이상)의 개념 및 종류

 정규화(Normalization)을 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못한 곤란한 현상이 발생하는데, 이를 이상(Anomaly)이라 하며 다음과 같이 삽입 이상, 삭제 이상, 갱신 이상이 있다.


 - 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터를 삽입할 때 의도와는 상관 없이 원하지 않은 값들도 함께 삽입되는 현상

 - 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플을 삭제 할 때 의도와는 상관없는 값들도 함께 삭제되는 연쇄 삭제 현상이 일어나는 현상

 - 갱신 이상(Update Anomaly) : 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상



*정규화 정리

 - 데이터베이스 내에 데이터들이 불필요하게 중복되어 저장되면 릴레이션 조작 시 예기치 못한 이상(Anomaly) 현상이 발생할 가능성이 높아집니다.

 - 정규화는 이상을 제거하기 위해서 중복성 및 종속성을 배제시키는 방법으로 사용합니다.

 - 정규화되지 못한 릴레이션을 조작할 때 발생하는 이노멀리 현상의 근본 원인은 여러 종류의 사실들이 하나의 릴레이션에 모두 표현되어 있기 때문입니다.

 - 중복 및 종속 관계가 형성되어 릴레이션 조작 시 발생할 수 있는 이노멀리를 제거하기 위해서는 관계 모델로 표현한 릴레이션에 제한 사항들을 첨가해 가면서 보다 정규화된 릴레이션으로 변환시켜 단순하게 만들어야 합니다.


4. 정규화의 원칙

 - 정보의 무손실 표현, 즉 하나의 스키마를 다른 스키마로 변환할 때 정보의 손실이 있어서는 안 된다.

 - 분리의 원칙, 즉 하나의 독립적인 관계성은 하나의 독립된 릴레이션으로 분리시켜 표현해야 한다.

 - 데이터의 중복성이 감소되어야 한다.


5. 정규화 과정


1NF(제1정규형)

1NF는 릴레이션에 속한 모든 도메인이 원자값(Atomic Value)만으로 되어 있는 릴레이션이다.

 - 릴레이션의 모든 속성이 단순 영역에서 정의된다.


2NF(제2정규형)

2NF는 릴레이션 R이 1NF이고, 키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속 관계를 만족한다.



*함수적 종속 관계 / 완전 함수적 종속 관계

함수적 종속 관계

 <수강> 릴레이션이 (학번, 이름, 과목명)으로 되어 있을 때, '학번'이 결정되면 '과목명'에 상관 없이 '학번'에는 항상 같은 이름이 대응됩니다. '학번'ㅇ[ 따라 '이름'을 '학번'에 함수 종속적이라고 하며 '학번 -> 이름'과 같이 씁니다.


완전 함수적 종속 관계

 속성 A가 다른 속성들의 집합 B 전체에 대해서 함수적 종속 관계를 갖지만 집합 B의 진부분집합에 대해서는 종속 관계를 가지 않으면, 속성 A는 집합 B의 속성들에 대해 완전 함수적 종속 관계에 있다고 합니다.

예) <수강> 릴레이션이 (학번, 과목명, 성적)으로 되어 있을 때, '성적'은 (학번, 과목명)에는 함수 종속이지만, (학번)이나 (과목명)에는 함수 종속이 아닙니다.



3NF(제3정규형)

릴레이션 R이 2NF이고, 키가 아닌 모든 애트리뷰트가 기본키에 대해 이행적 종속 관계*를 이루지 않도로 제한한 관계형이다.

 - 무손실 조인 또는 종속성 보존을 저해하지 않고도 항상 3NF 설계를 얻을 수 있다.



*이행적 종속 관계

 A->B 이고, B->C일 때 A->C를 만족하는 관계



BCNF(Boyce-Codd 정규형)

 - 릴레이션 R에서 결정자*가 모두 후보키인 관계형이다

 - 3NF에서 후보키가 많고 서로 중첩되는 경우에 적용하는, 강한 제3정규형이라고도 한다.

 - 모든 BNCF(Boyce-Codd Normal Form)가 종속성을 보존하는 것은 아니다.

 - BCNF의 제약 조건

  > 키가 아닌 모든 속성은 각 키에 대하여 완전 종속해야 한다.

  > 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 대하여 완전 종속해야 한다.

  > 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다


4NF(제4정규형)

릴레이션 R에 A-->->B가 성립하는 경우 R의 모든 속성이 A에 함수적 종속이면 이 릴레이션R은 제4정규형에 속한다.


*다치 종속(MVD; Multi Valued Dependency)

A, B, C 세 개의 속성을 가진 릴레이션 R에서 어떤 복합 속성(A, C)에 대응하는 B 값의 집합이 A 값에만 종속되고 C 값에는 무관할 때 다치 종속 R·A ->-> R·B가 존재 합니다.


5NF(제5정규형, PJ/NF)

릴레이션 R의 모든 조인 종속성(JD)의 만족인 R의 후보키를 통해서만 만족될 때 그 릴레이션 R은 제5정규형 또는 PJ/NF에 속한다.



*조인 종속(JD; Join Dependency)

 - 어떤 릴레이션 R이 자신의 Projection(X, Y, ... , Z)에 대한 조인의 결과가 자신과 같을 때 조인 종속(JD)(X, Y, ... , Z)은 R의 속성 집합의 부분집합입니다.


*정규화 과정 정리


비정규 릴레이션 -도메인 원자값-> 1NF -부분적 함수 종속 제거-> 2NF -이행적 함수 종속 제거-> 3NF -결정자이면서 후보키가 아닌 것 제거-> BCNF -다치 종속 제거-> 4NF -조인 종속성 이용-> 5NF