본문 바로가기
CS 지식

정규화(Normalization)

by chanfficial 2023. 1. 2.

정규화(Normalization)

: 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이며 분해하는 과정에서 여러 개의 릴레이션을 생성하게 된다. 이를 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다.

 

 

장점

  • 데이터베아스 변경 시 이상 현상(Anomaly)을 제거할 수 있다.
  • 정규화된 데이터베이스 구조에서 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경할 수 있다.
  • 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 미치게 되어 응용 프로그램의 생명을 연장시킨다.

단점

  • 릴레이션의 분해로 인해 릴레이션 간의 JOIN 연산이 많아진다.
  • 질의에 대한 응답 시간이 느려질 수 있다.
  • JOIN이 많이 발생하여 성능 저하가 나타나면 반정규화(De-normalization)를 적용할 수도 있다.

 


 

제 1 정규형(1NF)

제 1 정규형은 아래와 같은 규칙들을 만족해야 한다.

1. 각 컬럼이 하나의 속성만을 가져야 한다.
2. 하나의 컬럼은 같은 종류 / 타입의 값을 가져야 한다.
3. 각 컬럼이 유일한(unique) 이름을 가져야 한다.
4. 칼럼의 순서가 상관 없어야 한다.

제 1 정규형

 

제 2 정규형(2NF)

제 2 정규형은 아래와 같은 규칙을 만족해야 한다.

1. 제 1 정규형을 만족해야 한다.
2. 모든 컬럼에 부분적 종속(Partial Dependency)이 없어야 한다.
     -> 모든 컬럼이 완전 함수 종속을 만족해야 한다.

완전 함수 종속(Full Functional Dependency)

: A 와 B 가 릴레이션 R 의 속성이고 A -> B 종속성이 성립할 때, B 가 A 의 속성 전체에 함수가 종속하고 부분 집합 속성에함수가 종속하지 않을 경우 완전 함수 종속이라고 한다.

 

수강강좌 릴레이션에서 학생번호는 강의실을 결정하지 못하고, 강좌 이름은 성적을 결정하지 못하므로 완전 함수 종속이 아님

                                                          

수강 릴레이션과 강의실 릴레이션으로 분해하면 수강 릴레이션에서 학생번호, 강좌이름이 성적을 결정짓고 강의실 릴레이션에서 강좌이름이 강의실을 결정지으므로 모든 릴레이션이 완전 함수 종속을 만족함

 

제 3 정규형(3NF)

제 3 정규형은 아래와 같은 규칙을 만족해야 한다.

1. 제 2 정규형을 만족해야 한다.
2. 기본키를 제외한 속성들 간의 이행 종속성(Transitive Dependenyc)이 없어야 한다.

이행 종속성(직접 종속)

: A -> B -> C 가 성립할 때 A -> C 가 성립되는 함수 종속성을 의미한다.

 

계절학기 릴레이션에서 학생번호는 강좌이름과 수강료를 결정짓고, 강좌이름은 수강료를 결정짓기 때문에 제 3 정규형을 만족 X

 

계절수강 릴레이션과 수강료 릴레이션으로 분해하면 계절수강 릴레이션에서 학생번호는 강좌이름을 결정짓고, 수강료 릴레이션에서 강좌이름은 수강료를 결정지으므로 이행 종속성이 성립

 

BCNF(Boyce-Codd Normal Form)

BCNF 는 제 3 정규형을 좀 더 강화한 것으로 아래와 같은 규칙을 만족해야 한다.

1. 제 3 정규형을 만족해야 한다.
2. 모든 결정자가 후보키 집합에 속해야 한다.
     -> 후보키 집합에 없는 칼럼이 결정자가 되어서는 안된다.

 

특강수강 릴레이션에서 이상현상을 일으키는 (교수, 특강이름)을 분해함

 

위와 같이 분해하면 모든 결정자가 후보키 집합에 속하므로 BCNF 정규형을 만족함

'CS 지식' 카테고리의 다른 글

교착상태(Dead Lock)  (0) 2023.01.08
트랜잭션(Transaction)  (0) 2023.01.02
B-Tree  (0) 2022.12.25
Hash / Hash Table  (1) 2022.12.25
결합 인덱스(Composite Index)  (0) 2022.12.04