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