본문 바로가기
DataBase

기초 : 정규화 Normalization, 이상 Anomaly

by 노랑파랑 2016. 10. 30.
반응형




이상 (Anomaly)

*  한 개체의 애트리뷰트들 간에 존재하는 여러 종속관계(dependency)를 하나의 릴레이션으로 표현하였기 때문에 생기는 현상


1) 갱신 이상

* 반복된 데이터 중에 정확하지 않거나 일부만을 수정해 데이터의 모순과 일관성이 없어지는 등 불일치가 발생


2) 삽입 이상

* 불필요한 정보를 함께 저장하지 않으면 원하는 정보를 삽입하지 못하는 현상.

* 원하지 않는 정ㅂ의 강제 삽입

* 예를 들어 기본키가 수강과목인 경우, 어떤 학생이 2학년이라는 정보만을 삽입하고 싶지만 (해당 학생이 수강하는 과목이 없거나, 휴학생일 때) 기본키는 널(Null)값을 가질 수 없기 때문에 해당 학생의 수강과목을 삽입하지 않는 이상 학년 정보를 삽입 할 수 없을 때


3) 삭제 이상

* 유용한 정보를 함께 삭제하지 않고는 원하는 특정 정보를 삭제하는 것이 불가능 한 현상

* 연쇄 삭제에 의한 정보 손실이 일어난다.


4) 이상 해결 방법

* 하나의 릴레이션에는 하나의 종속 관계만 표현한다

* 애트리뷰트들 간의 여러 종속관계를 분해(decomposition)

                 해결법 => 정규화 




정규화 (Normalization)

* 데이터의 중복을 방지하고 보다 효율적으로 데이터를 저장하기 위함.

* 이상 현상의 발생 가능성을 줄인다.


1) 제 1정규화 (1NF)

* 반복되는 속성을 제거한 뒤 모든 속성이 원자 도메인만으로 되어 있는 정규형

* 모든 속성이 원자값만으로 이루어진 릴레이션

* 예 ) 수강 지도 릴레이션



! 기본키에 부분 함수 종속된 Attribute가 존재해 이상 발생

=> 프로젝션으로 부분 함수 종속을 제거한다.


2) 제 2정규형 (2NF)

* 제 1정규형을 만족하고, 부붐함수적 종속을 제거하여 완전 함수 종속을 만족하는 정규형

* 키가 아닌 모든 Attribute가 모두 기본키에 완전 함수 종속

* 예) 수강 릴레이션, 지도 릴레이션으로 분해


!     이 때 지도교수가 어떤 학과에 속하는지 정보를 삽입 할 수 없고, 만약 지도 릴레이션에 한 학생을 삭제하려 할 때 지도교수가 릴레이션에 정보가 하나 뿐이라면 삭제했을 시 해당 지도교수의 정보를 어디서도 찾을 수 없게 된다. 

! 이행적인 함수 종속문제 발생 ( A->B 이고 B->C 일 때, Attribute C는 Attribute A에 이행적 함수 종속이다.)

=> 프로젝션으로 릴레이션을 분해해 이행적 함수 종속을 제거한다.


2) 제 3정규화 (3NF)

* 제 2정규형을 만족하고, 이행적 함수 종속 관계를 제거하여 비 이행적 함수 종속 관계를 만족한다.

* 키가 아닌 모든 Attribute들은 기본 키에 이행적 함수 종속이 되지 않음

* 키가 아닌 애트리뷰트 값의 갱신 시, 불필요한 부작용(이상)은 발 생하지 않는다.

* 모든 이원(binary) 릴레이션은 3NF에 속한다.

* 예) 지도 릴레이션을, 학생지도, 지도교수 릴레이션으로 분해


! 제 3 정규형을 적용할 수 없을 때

      - 복수의 후보 키를 가지고 있고 

- 후보 키들이 두 개 이상의 애트리뷰트들로 구성되고 

- 후보 키들의 애트리뷰트가 서로 중첩되는 경우

! 이 때 결정자가 후보키가 아닌 이유로 이상이 발생한다.

=> 모든 결정자가 후보키가 아닌 함수 종속을 제거한다.



4) BCNF

* 제 3정규형을 만족하고, 결정자가 후보키가 아닌 함수 종속 관계를 제거해 모든 결정자가 후보키이도록 한다.

* 만약 한 학생은 각 과목에 대해 오직 한 교수의 강의만 수강할 수 있고, 각 교수는 한 과목만 담당하며, 한 과목을 여러 교수가 담당할 수 있다고 했을 때 

! 어떤 한 교수가 어떤 과목을 담당한다는 정보를 삽입하려 할 때 수강 학생이 있어야 삽입이 가능하며 (삽입 이상)

릴레이션에 한 지도교수가 한 명의 학생과 강의를 하고 있을 경우 학생을 삭제할 경우 유일한 지도교수 정보가 함께 삭제된다(삭제이상)

!  한 Attribute가 여러 Attribute (집합) 값을 결정하게 되어 이상 현상 발생

=> 다치 종속 제거 

* 1:다 대응. 이상 현상을 발생시킬 수 있다.

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

* 예를들어 한 학생이 여러개의 과목을 수강할 수 있으므로 학생과 수강과목 속성은 다치종속이다.



5) 제 4정규형 (4NF)

* 다치 종속을 제거한다. 



6) 제 5정규형 (5NF)

* 후보키를 통하지 않은 조인종속을 제거한다.

* 조인 종속 : 릴레이션이 그의 어떤 프로켁션들을 조인한 결과값과 똑같아야 한다.




함수 종속

* 어떤 릴레이션 R에서 X 와 Y를 각각 R의 애트리뷰트 집합의 부분 집합이라고 할 경우, 애트리뷰트 X의 값 각각에 대하여 시간에 관계없이 항상 애트리뷰트 Y의 값이 오직 하나만 연결되어 있을 때 Y는 X에 함수 종속이라 하고 X를 결정자, Y를 종속자라고 한다.

* 완전 함수 종속 : 회원번호, 수강과목 -> 성적

*부분 함수 종속 : 회원번호 -> 이름

부분 함수 종속에 대한 이미지 검색결과



반응형

'DataBase' 카테고리의 다른 글

SQL Server와 PostgreSQL에서 문자열 비교 차이점  (0) 2023.08.03
기초 : 데이터  (0) 2016.11.09
기초 : 테이블  (0) 2016.11.09
기초 : 데이터베이스  (0) 2016.11.09
데이터베이스 : 정의, 구조, 무결성  (0) 2016.10.30