SMALL

정규화?


데이터 베이스 정규화는 불필요한 데이터를 없애고, CRUD 시 발생할 수 있는 이상현상을 방지하게 데이터베이스 설계를 재구성하는 것이다.



1차 정규화


1차 정규화는 각 row마다 column의 값이 1개씩만 있어야 한다. 즉, column이 원자값을 가져야 한다.


이름

나이

과목

철수

16

수학,영어

영희

17

수학

남수

15

국어

기철

18

영어


위의 테이블을 보면 철수의 과목에 2개의 값이 들어 있다.

그래서 1차 정규화에 만족하지 못한다.


이름

나이

과목

철수

16

수학

철수

16

영어

영희

17

수학

남수

15

국어

기철

18

영어


위와 같이 바꾸면 1차 정규화를 만족한다.


2차 정규화


2차 정규화는 모든 column이 완전 함수적 종속을 만족하는 것이다. 즉, 부분적 종속을 제거 하는 것이다.


이름

프로젝트명

부서 

직위

수당

철수

보안관리

개발

팀장

100

철수

IOT만들기

개발

부팀장

70

영희

웹기사분류

분석

팀장

100

남수

형태소분석

연구

사원

50


위의 테이블을 보면 이름, 프로젝트명이 기본키인데 부서 컬럼은 이름에 의해서만 함수적 종속성을 가진다.


이름

프로젝트명

직위

수당 

철수

보안관리 

팀장 

100

철수

IOT만들기

부팀장

70

영희

웹기사분류 

팀장

100

남수

형태소분석

사원

50


이름

부서

철수

개발

영희

분석

남수

연구


위와 같이 두 개의 테이블로 나누면 부분적 종속을 제거하고 2차 정규화를 만족한다.


3차 정규화


3차 정규화는 이행적 함수적 종속성을 제거하는 것이다.


이름

프로젝트명

직위

수당

철수

보안관리

팀장

100

철수

IOT만들기

부팀장

70

영희

웹기사분류

팀장

100

남수

형태소분석

사원

50


위 테이블을 보면 수당은 기본키가 아닌 직위에 의존적이다. 


이름

프로젝트명

직위

철수

보안관리

팀장

철수

IOT만들기

부팀장

영희

웹기사분류

팀장

남수

형태소분석

사원


직위

수당

팀장

100

부팀장

70

사원

50


위와 같이 두 개의 테이블로 나누면 3차 정규화를 만족한다.


BCNF 정규화


비결정자에 의한 함수종속을 제거해야 하는 것이다.


4차 정규화


테이블 내에서 N:M 관계를 가지는 속성들을 분리 하는 것이다.





LIST

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

UNDO와 REDO  (0) 2018.06.14
UNION과 UNION ALL  (0) 2018.06.11
트랜잭션  (0) 2018.05.04
조인  (0) 2018.05.02
SQL 인젝션  (0) 2017.11.24

+ Recent posts