CS 운영체제 네트워크 등/공부

데이터베이스 정규화 ( Normalization )

호 두 2022. 8. 25. 01:17
반응형

# 데이터베이스 정규화 ( Normalization )
데이터베이스 정규화란 데이터베이스의 설계를 재구성하는 테크닉입니다. 정규화를 통해 불필요한 데이터(redundancy)를 없앨 수 있고, 삽입/갱신/삭제 시 발생할 수 있는 각종 이상현상(Anamolies)들을 방지할 수 있습니다. 


# 목적
데이터베이스 정규화의 목적은 주로 두 가지입니다.
1. 불필요한 데이터(data redundancy)를 제거한다.
2. 데이터 저장을 "논리적으로" 한다.


# 종류
1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF

# 정규화의 법칙
정규화의 법칙(Normalization Rule)은 1차정규화, 2차정규화, 3차정규화, BCNF, 4차정규화, 5차정규화로 나눌 수 있는데, 실무적으로 4차, 5차 정규화까지 하는 경우는 많지 않음


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

# 정규화의 단점
 - 릴레이션의 분해로 인해 릴레이션 간의 JOIN연산이 많아진다.
 - 질의에 대한 응답시간이 느려질 수도 있다. 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다. 
 - 따라서 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있다.
 - 만약 조인이 많이 발생하여 성능저하가 나타나면 반정규화(De-normalization)를 적용할 수도 있다.


* 역정규화(반정규화)
- 역정규화란 효율을 위해서 정규화된 결과의 일부를 수정하여 중복을 허용하는 것을 말한다.
- 정규화되지 않은 상태에서 중복을 허용하는 것과는 다르며, 대부분 join을 할 경우 엄청난 계산량을 해결하기 위해서 사용한다.



# 제 1 정규화, 1NF
 - 제 1 정규화란 테이블의 컬럼이 원자값을 갖도록 테이블을 분해하는 것 이다.

# 제 2 정규화, 2NF
 - 제2 정규화란 제 1정규화를 진행한 테이블에 대해서 기본키의 부분 집합이 결정자가 되어선 안된다는 것을 의미한다.
 - 2개 이상의 PK로 구성된 테이블에서 발생한다.

# 제 3 정규화, 3NF
 - 제 3 정규화란 제 2 정규화를 진행한 테이블에 대해서 식별자 이외의 속성간에 종속성이 생기면 안되는 것을 말한다.
 - 종속 관계가 생기면 중복값이 생긴다. 이행 종속 관계를 분리한다. (A->B, B->C 이면 A->C)

# BC 정규화 (BCNF 정규화)
 - BCNF 정규화란 제 3 정규화를 진행한 테이블에 대해서 모든 결정자가 후보키가 되도록 테이블을 분해하는 것이다.

# 제 4 정규화, 4NF
 - 흔히 4NF는 다치 종속성( MultiValued Dependency, MVD )을 제거하고 한다고 하지만, 폭 넓게 결합 종속성을 제거하는 과정입니다.
 - A 애트리뷰트를 알면 X라는 다중값( B, C 애트리뷰트 )을 알 수 있을 때, 이러한 종속성을 제거하는 것입니다. ( 참고 예제 - 링크 )

# 제 5 정규화, 5NF
 - 5NF 역시 결합 종속성을 제거하는 과정입니다.
 - 릴레이션에 애트리뷰트 A, B, C가 있을 때, {A,B}, {B,C}, {A,C} 애트리뷰트 조합을 갖는 릴레이션으로 분해될 수 있을 때, 이러한 결합 종속성을 제거하는 것입니다. ( 참고 예제 - 링크 )

# 제 6 정규화, 6NF
 - 6NF 모든 관계가 후보 키와 하나 이상의 다른 (키 또는 비 키) 속성으로 구성됨을 의미합니다. ( 참고 예제 - 링크, 링크 )
 - 6NF는 직교성에 있어 유용한 정규형이지만, 6NF를 하게 되면 릴레이션이 너무 많아지므로 join을 많이 하게 된다는 단점이 있습니다.












반응형