데이터베이스 정규화 과정

 데이터베이스 정규화 과정

정규화

함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되도록 릴레이션을 분해해서 이상현상이 발생하지 않는 바람직한 릴레이션으로 만들어가는 과정입니다. 작은 릴레이션으로 분해하는 과정은 함수 종속성을 제거하는 과정입니다.

정규화를 통해 릴레이션은 손실이 없는 무손실 분해가 되어야 합니다.

정규형(Normal Form)

릴레이션을 분해하는 각 단계를 거칠 때 마다 나타내지는 정규화의 형태를 정규형이라고 합니다. 정규형은 릴레이션이 정규화가 된 정도(1정규형, 2정규형, ...)를 의미합니다.

※ 정규형의 정도(차수)가 높아질수록 릴레이션의 특성에 따라 요구되는 제약조건이 많아지고 엄격해짐


정규형의 종류

※ 모든 정규형들은 비정규형 릴레이션의 부분집합의 형태

기본 정규형

제1정규형

- 릴레이션의 모든 속성이 더는 분해되지 않는 원자값만 가지면 제1정규형을 만족

- 제1규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있음

- 하나의 속성에 여러개의 속성값이 아닌 하나의 속성값이여야 제1규형을 만족

이상현상이 발생하는 이유

- 기본키인 {고객아이디, 이벤트번호}에 완전 함수종속이 되지 못하고 부분집합의 일부분인 고객아이디에 종속되는 속성이 존재하기 때문에 이상현상이 발생

문제 해결 방법

- 부분 함수 종속이 제거되도록 릴레이션을 분해하면 분해된 릴레이션은 제2정규형에 속하게 됨

제2정규형

- 제1정규형에서 부분 함수 종속을 제거하고 모든 함수 종속 관계에서 완전 함수 종속을 만족하면 제 1규형을 만족

- 완전 함수 종속만 가질 수 있도록 부분 함수 종속을 제거

ex) 고객릴레이션과 이벤트 참여 릴레이션으로 분해

이상현상이 발생하는 이유

- 이행적 함수 종속이 존재하기 때문

이행적 함수 종속: 3개의 속성간에 발생하는 문제

※이행적 함수 종속이란?

릴레이션을 구성하는 속성들간에 가지는 관계입니다. 완전 함수 종속과 부분 함수 종속은 2개의 속성간에 이루어지는 관계이지만 이행적 함수 종속은 3개의 속성간에 발생하는 관계입니다.

릴레이션을 구성하는 3개의 속성 X, Y, Z을 살펴보면

X → Y와 Y → Z가 존재하면 논리적으로 X → Z가 성립됩니다.

즉 첫 번째 X와 마지막 세 번째 Z도 함수 종속 관계가 성립 된다는 의미 입니다.

이것을 Z가 X에 이행적으로 함수 종속 되었다고 합니다.







문제 해결 방법

- 이행적 함수 종속이 제거되도록 고객 릴레이션을 분해하면 분해된 릴레이션은 제3정규형에 속하게 됨

제3정규형

- 제1정규형과 제2정규형을 만족

- 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않으면 제3정규형에 속함

- 제2정규형에서 발생되는 이행적 함수 종속 관계를 제거하면 제3정규형이 됨

ex) 고객 릴레이션, 고객등급 릴레이션

보이스/코드 정규형(BCNF)

- 제1정규형, 제2정규형, 제3정규형 까지 만족

- 하나의 릴레이션에 여러개의 후보키가 존재하는 경우에는 제3정규형까지 모두 만족해도 이상현상이 발생할 수 있음

- 강한 제3규형(strong 3NF)

- 제3정규형보다 좀 더 엄격한 제약조건을 제시

- 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속함

고급 정규형

※ 반드시 지켜야되는 규칙이 아니고 릴레이션의 특성과 규칙에 의해서 선택 할 수 있음

제4정규형

- 보이스/코드 정규형까지 만족

 - 함수 종속이 아닌 다치 종속(MVD: multiValued)을 제거하면 제4정규형에 속함

다치 종속(MVD)이란?

하나의 속성 내에서 여러개의 값을 결정짓는 종속 관계를 뜻합니다.

제5정규형(가장 많이 분해된 가장 작은형태)

- 제4정규형까지 만족

- 다치 종속 관계까지 제거한 상태에서 후보키를 통하지 않는 조인종속(JD: Join Dependency)을 제거

- 다른 릴레이션과 맺고 있는 모든 조인 관계에서 후보키를 통하도록하는 관계를 성립

※ 정규화 시 주의 사항

- 모든 릴레이션이 제4규형, 제5규형에 속해야만 되는 것은 아님

- 일반적으로 제3규형이나 보이스/코드 정규형(강한 제3규형)에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상현상을 해결하는 경우가 많음

댓글

이 블로그의 인기 게시물

[정보처리기사] OSI 7계층 정리

블로그스팟 상위노출 시작하기

데이터베이스 데이터 정의어(DDL), 자료형(데이터 타입)