데이터베이스

데이터베이스 정규화 총정리

윤돌_99 2021. 5. 21. 19:19

정규화란

이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정

함수적 종속성을 판단하여 정규화를 수행  

(함수적 종속성: 속성들 간의 관련성)

이상현상이란?
불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용

- 삽입 이상: 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
- 갱신 이상: 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
- 삭제 이상: 투플을 삭제하면 꼭 필요한 데이터까지 삭제되는 데이터 손실의 문제

 

정규형(NF: Normal Form)

릴레이션이 정규화된 정도

각 정규향마다 제약조건이 존재하고, 릴레이션의 특성을 고려해서 적합한 정규형을 선택

 

제 1 정규형(1NF: First Normal Form)

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

 

<제 1정규형을 만족하지 않는 릴레이션>

고객아이디 이벤트번호 당첨여부
apple E001,E005,E010 Y,N,Y
banana E002, E005 N, Y

 

<제 1정규형을 만족하는 릴레이션>

고객아이디 이벤트번호 당첨여부
apple E001 Y
apple E005 N
apple E010 Y
banana E002 N
banana E005 Y

 

제 2 정규형

릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형을 만족함

부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 분해

 

<제 1정규형은 만족하지만 제 2정규형은 만족하지 않는 릴레이션>

고객아이디 이벤트번호 당첨여부 등급 할인율
apple E001 Y gold 10%
apple E005 N gold 10%
apple E010 Y gold 10%
banana E002 N vip 20%

 

<제 2정규형은 만족하는 릴레이션>

고객아이디 등급 할인율
apple gold 10%
banana vip 20%

 

고객아이디 이벤트번호 당첨여부
apple E001 Y
apple E005 N
apple E010 Y
banana E002 N

 

제 3 정규형

릴레이션이 제 2정규화에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제 3 정규형을 만족함

 

<제 2 정규형을 만족하지만 제 3 정규형은 만족하지 않는 릴레이션>

고객아이디 등급 할인율
apple gold 10%
banana vip 20%

 

<제 3 정규형을 만족하는 릴레이션>

고객아이디 등급
apple gold
banana vip

 

등급 할인율
gold 10%
vip 20%

 

- 보이스/코드 정규형(BCNF:Boyce-Codd Normal Form)

제 3 정규형에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.

(후보키: 유일성과 최소성을 만족하는 속성 또는 속성들의 집합)

 

<보이스/코드 정규형을 만족하지 않지만 제 3 정규형을 만족하는 릴레이션>

고객아이디 인터넷강좌 담당강사번호
apple 영어회화 P001
banana 기초토익 P002
carrot 영어회화 P001

 

<보이스/코드 정규형을 만족하는 릴레이션>

고객아이디 담당강사번호
apple P001
banana P002
carrot P001
담당강사번호 인터넷강좌
P001 영어회화
P002 기초토익

 

제 4 정규형

릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속을 제거하면 제 4 정규형에 속함

※ 다치종속: 하나의 속성값이 속성값의 집합을 결정하는 것

예)

과목명 강사 교재
POP글씨 최수지 POP-1
POP글씨 최수지 POP-2
POP글씨 최수지 POP-1

 

제 5정규형

릴레이션이 제 4 정규형을 만족하면서, 후보키를 통하지 않는 조인 종속을 제거하면 제 5 정규형에 속함

'데이터베이스' 카테고리의 다른 글

데이터베이스(회복과 병행제어2)  (0) 2021.05.29
데이터베이스(회복과 병행 제어)  (0) 2021.05.29
데이터베이스 언어 SQL-2  (0) 2021.04.19
데이터베이스 언어 SQL  (0) 2021.04.19
관계 데이터 연산  (0) 2021.04.19