2018-9-3 DB개론 2,3정규화
DB개론 제2정규화
superKey
- 애트리뷰트의 집합
- 고유하게 식별됨
- 슈퍼키 + a는 무조건 슈퍼키다.
- 예시) [사번, 부양가족이름], [주민번호 앞자리, 주민번호 뒷자리, 이름] : 사번이 슈퍼키이기때문에 그 뒤에 어떤것을 붙이더라도 슈퍼키이다.
후보키(Candidate Key)
- 슈퍼키의 부분집합
- 구성 애트리뷰트 중 하나라도 제거하면 슈퍼키가 아닌 것
기본키(Primary Key)
- 여러 후보키 중 대표적인 키 하나가 테이블의 기본키가 된다.
- 한 테이블안에 다른 애트리뷰트를 결정하는 것을 키라고 한다. 함수적종속성은 키를 결정하기 위해서 사용을 했다.
- SSN => ENAME, SSN => BDATE, SSN => ADDRESS, SSN => DNUMBER
- SSN이 후보키이다.
제1정규형
- 테이블은 반드시 하나 이상의 키를 가지고 있어야 한다.
- 애트리뷰트의 도메인이 오직 원자값만을 포함한다.
- 한마디로 : PrimaryKey가 있어야하고 원자성이 있으면 1정규형이라고 한다.
- 복합애트리뷰트, 다중애트리뷰트(Column에 여러개의 값이 들어가면 안된다), 중첩릴레이션은 안된다!!!
완전함수적종속
- ABC => X라고 할때, [A,B,C] 3개의 요소가 X를 결정한다.
- ABC중 하나라도 제거하면 함수적 종속이 발생하지 않는 경우
2정규형
- 1정규형을 만족하고
- 후보키가 아닌 애트리뷰트들이 후보키에 대해 완전 함수적 종속인 경우
- SSN, PNUMBER가 HOURS를 결정하고
- SSN이 ENAME을 경정
- [SSN, PNUMBER] <- Candidate Key
- Hours만 완전함수적종속이고, 다른 ENAME, PNAME, PLOCATIONS은 부분 함수적 종속이다.
이행종속
- X->Y 이고 Y->Z 이면 X->Z
- 이행종속을 제거하면 3정규형이 된다.
3정규형
- 2정규형+
- 후보키가 아닌 애트리뷰트들에서 이행 종속이 발생하지 않는다.
- 위에 테이블은 3정규형이 아니다. 이행종속을 제거하기 위해 테이블을 쪼갠다.
BCNF
- 종속성이 발생하는 모든 X(결정자)->Y인 모든 X,Y에 대하여
- Y가 X의 부분집합이거나 X는 후보키어야 한다
- 후보키가 아닌 애트리뷰트가 다른 애트리뷰트를 함수적으로 결정하면 BCNF가 아니다
- BCNF는 무조건 3정규형을 발생시킨다.
Written on September 3, 2018