제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->업계코드->업계명) 이런식으로 종속되어있다. 이럴경우 새로운 업계를 추가할 수 있을까? 업계코드에 따른 업계명은 다른 테이블을 빼야한다.
'To be Developer > DataBase' 카테고리의 다른 글
Transaction Isolation Level. (0) | 2019.11.12 |
---|---|
트랜잭션이란 무엇일까? (0) | 2019.11.12 |
[윈도우10]mysql 5.7.10 수동 설치기 (0) | 2017.07.25 |
[ORACLE / SQL] 문자열 패턴매칭, 유사도 분석 (0) | 2017.05.17 |
[ORACLE / SQL] Matching Query 사람간 유사한답변 한사람 이어주기 (0) | 2017.05.17 |