본문 바로가기

카테고리 없음

017 정규화

정규화란 데이터베이스의 설계를 재구성하여 발전시키는 것이다.
불필요한 데이터 (redundancy)와
이상현상(Anamolies)을 방지할 수 있다.


◆ 제 1정규형

각 컬럼마다 단 하나의 값만 존재해야 한다.
이를 원자값을 갖는다 (Atomic Value) 또는 원자값만으로 되어있다 라고 한다.


<주문목록>
주문번호
제품명
주소
1001
1002
모니터
마우스
서울
광주
1010
1030
키보드
마이크
부산
제주
위의 주문목록 테이블에서 제 1 정규형을 실행할 수 있다.


주문번호
제품명
주소
1001
모니터
서울
1002
마우스
광주
1010
키보드
부산
1030
마이크
제주
원자값을 가지게 되었다.






◆ 제 2정규형

사실 제 1정규형은 정규화라고 보기도 힘들다.
제 2정규형부터가 진정한 정규화라고 할 수 있다.

제 2정규형의 조건은

모든 컬럼이 완전 함수적 종속을 만족하는 것이다.
즉, 부분적 종속이 아예 없어야 한다는 뜻이다.

이게 뭔 소리냐면, 표를 보도록 하자.


<identity>
name
birth
hobby
State
Bino
1998
dope off
KOR
Bino
1998
doodle
KOR
John
1978
piano
Spring
Gogh
1853
drawing
Zundert
위 <identity>테이블에서 birth 속성은 name속성에 따라 결정되는 함수적 종속 상태이다.
하지만 name과 같은 기본키인 hobby속성에는 종속되지 않는다.

그렇기 때문에 1998이라는 컬럼이 두 개씩이나 들어가게 되어 버렸고,
이는 불필요한 것이기 때문에 두 테이블로 나눠야 한다.


<idy1>
name
birth
Bino
1998
John
1978
Gogh
1853

<idy2>
name
hobby
State
Bino
dope off
KOR
Bino
doodle
KOR
John
piano
Spring
Gogh
drawing
Zundert
이렇게 한다면 모든 테이블<idy1, idy2>에 완전 함수적 종속이 완성된다.







◆ 제 3정규형

국적
특산물
형태
북한
육지
중국미세먼지
육지
일본
방사능
위의 테이블을 보면

국적 → 특산물
특산물  → 형태

의 모습을 보인다.

즉, 특산물은 국적속성에 함수적 종속상태이고,
형태는 특산물속성에 함수적 종속상태라는 말인데

이 말을 다시 풀어쓰자면

국적  → 특산물  → 형태

의 관계라는 것이며

결론적으로는

국적  → 형태

가 되는것이다.


위의 예제와 같은 상황을 바로 이행적 함수 종속이라고 한다.

3차 정규형은 이렇게

기본키를 제외한 속성들 간의 이행적 함수 종속이 배제된 것이다.








◆ BCNF
BCNF는 3차 정규형을 만족함과 동시에 모든 결정자가 후보키인 정규형이다.



BCNF는 (Boyce and Codd Normal Form) 3차 정규형을 조금 더 강화한 버전으로 볼 수 있습니다. 이는 3차 정규형으로 해결할 수 없는 이상현상을 해결할 수 있습니다. BCNF란 3차정규형을 만족하면서 모든 결정자가 후보키 집합에 속한 정규형입니다. 아래와 같은 경우를 생각해보면, 후보키는 수퍼키중에서 최소성을 만족하는 건데, 이 경우 (학생, 과목) 입니다. (학생, 과목)은 그 로우를 유일하게 구분할 수 있습니다. 근데 이 테이블의 경우 교수가 결정자 입니다.(교수가 한 과목만 강의할 수 있다고 가정) 즉, 교수가 정해지면 과목이 결정됩니다. 근데 교수는 후보키가 아닙니다. 따라서 이 경우에 BCNF를 만족하지 못한다고 합니다. 3차 정규형을 만족하면서 BCNF는 만족하지 않는 경우는 언제일까요? 바로 일반 컬럼이 후보키를 결정하는 경우입니다. 
학생
과목 
교수 
학점 
 1
AB123
 김인영
 A
 2
 CS123
 Mr.Sim
 A
 3
 CS123
 Mr.Sim 
 A

 위와 같이 테이블이 구성된 경우에 데이터가 중복되고, 갱신 이상이 발생합니다. 예를 들어 Mr.Sim이 강의하는 과목명이 바뀌었다면 두 개의 로우를 갱신해야합니다. 이를 해결하기 위해서는 마찬가지로 테이블을 분리합니다.

교수 테이블
교수
과목
 김인영
AB123 
 Mr.Sim
CS123 

수강 테이블
학생
교수 
학점 
 1
 김인영
 A
 2
 Mr.Sim
 A
 3
 Mr.Sim
 A


제 1정규형
원자값 제거
제 2정규형
부분적 함수 종속 제거
제 3정규형
이행적 함수 종속 제거
BCNF
결정자이지만 후보키가 아닌 것 제거
제 4정규형
다중 값 종속(다치종속) 제거
제 5정규형
조인 속성 이용