제1정규화
 제1정규형의 정의는 테이블 셀에 복합적인값을 포함하지않는다 (스칼라값만을 갖음), 그러나 배열을 insert 할 수 없기때문에 제 1정규형은 자동으로만족한다.

제2정규화 (2NF)
 부분함수의 종속성 = 기본키를 구성하는 열의 일부에만 종속성을 갖음 (복합키일경우) 예를들어 table 회사별 주문에 회사id+주문번호가 키값이라 쳐보자 
 create table 회사별 주문 {
  회사id ,
  주문번호,
  주문일자,
  회사이름,
  고객기업규모,
  PRIMARY KEY(회사id,주문번호)

 위 테이블은 제2정규형을 만족하지 못함, 회사id에만 종속되는게 존재, 회사이름 및 고객기업규모 만 종속됨. 이게 왜 위험하냐면, 주문을 했을때 주문을 한 정보만으로는 고객기업규모를 알아낼수 없음, 이럴경우 NULL을 허가하거나 더미값추가? => 이런 갱신시 부정합을 갱신이상이라함.

제3정규화 (3NF)
 추이함수의 종속이 없어야한다. 다음과같은 테이블이 있다고 가정하자. 
 create table 회사 {
 회사ID,
 회사명,
 규모,
 업계코드,
 업계명,
 PRIMARY KEY (회사ID)

 2NF까진 만족하는듯 하다. 그러나 추이함수의 종속성을 갖는다. (2단계의 함수종속성)  
현재 (회사ID->업계코드->업계명) 이런식으로 종속되어있다. 이럴경우 새로운 업계를 추가할 수 있을까? 업계코드에 따른 업계명은 다른 테이블을 빼야한다.

 

 

+ Recent posts