http://blog.naver.com/mjsolar/130109454313


우선 인터넷에 떠도는 말들 중 가장 이해하기 쉬운 정의

 

제 1 정규화(정규형) : 모든 속성은 반드시 하나의 값을 가져야 한다(반복 형태가 있어서는 안됨)

제 2 정규화(정규형) : 모든 속성은 반드시 기본키 전부에 종속되어야 한다(기본키 일부에만 종속되어서는 안됨)

제 3 정규화(정규형) : 기본키가 아닌 모든 속성 간에는 서로 종속될 수 없다(속성 간 종속성 배제)

 

자, 이게 뭔소리다냐........(처음에 전혀 이해 안감) 

 

 

 

 

 주문번호

주문일자 

품목코드 

품목단가 

..... 

 900

2011-05-20 

SQO98(선풍기) 

900000 

 

 900

 2011-05-20

 SJB34(에어컨)

 37000

 

 

화살표 왼쪽에 있는 식으로 테이블을 만들었다면

내가 kimminju라는 아이디로 g마켓에 로그인해서 옷을 두벌 샀다고 하자. 묶음배송으로^^

주문번호는 동일한데 품목코드는 다르다.

주문번호가 PK인데 이녀석으로 구분이 되는가? 안된다 -_-이럴 때 제1정규형이 필요하다.

 

오른쪽 테이블 두개처럼 나누어야 한다.

주문번호, 주문일자, 고객번호, 고객명, 고객주소는 품목코드가 다를 때마다 반복되므로 이녀석들을 다른 테이블로 떼어놓아야 한다.

 

결론 PK가 중복될 수밖에 없는 상황으로 거지같이 테이블을 짜 놓았을 때

         한 속성에 대해 미친듯이 반복하는 데이터들을 따로 빼서 테이블로 나누는 것.



 

제 2 정규화. 얘네들은 간단하다.

주문수량은 주문번호와 품목코드 두개로 검색해야 알 수 있는데

품목단가는 품목코드로만 검색이 가능하다.

품목단가 녀석에게 주문번호는 필요없는 존재인거다(-_ㅠ) 

 

2정규화와 3정규화의 차이는

2정규화는 모든 일반 평민(?!) 속성들이 PK, FK 두개 모두를 사용해서 검색해야하느냐??

3정규화는 일반 평민(?!) 속성들 중에 몇몇이 일반 평민속성 하나에 의해 변하는게 아니느냐??

 

뭔 개소리냐?? 싶으면 아래 그림 보기.


<2정규화 위배>-모든 왕(PK, FK)에 의해 백성(그냥속성들)이 통제되느냐??

<3정규화 위배>-백성끼리 싸우는거임. 숨은 왕이 있는거냐??

 


 

이게 3정규화 된 그림.

2정규화는 PK나 FK 모두에 의해 속성들이 통제되는지를 묻고

3정규화는 PK나 FK는 쌩까고 일반 속성들 중에 나눌법한게 있나 살펴보는거.

 

위의 경우에는 고객번호에 의해 고객명, 고객주소가 바뀐다. 숨은 왕을 찾은거임 으하하

 

 

 

 

이래도 헷갈리면 포기하세요 <-

 

 

 

 

보통 보면 제1정규화,제2정규화,제3정규화 한꺼번에 하면 안댐?그게 더 쉬운뎁!! 이러는 분들이 있지.

하지만 현실은 시험을 쳐야하거든...................시험엔 한꺼번에 하라고 안나오고 과정을 적으라고 나오지-_ㅠ