종속성과 정규화

Updated:

강의

http://www.kocw.net/home/search/kemView.do?kemId=317898

종속성과 정규화

  • 관계 데이터베이스 처리 시 이상 현상 발생(종속성)
  • 이를 대책하는 거을 정규화

1. 이상(anomaly) 현상

  • 삭제이상
    • 학생 200 이상의 c123을 취소하라
    • 학번 200 학생이 3학년이라는 정보도 함께 삭제된다.
  • 삽입이상
    • 학번 600 학생이 2학년임을 추가하라.
    • 불가능… 키(기본키)가 (학번, 과목번호)이므로, 수강신청이 없으면 추가할 수 없다.
  • 갱신이상
    • 학번 400 학생을 3학년으로 갱신하라.
    • 학번 400 학생의 학년을 모두 찾아서, 3으로 변경해야 한다. 중복 또는 모순이 발생 가능하다.

2. 종속성과 정규화

2.1 정규화 기본 원칙

  • 정보의 무손실
    • 스키마를 분해하건, 변화할 때, 정보의 손실이 있어서는 안된다.
  • 최소 데이터 중복
    • 데이터 중복은 최소화되어야 한다.
  • 분리의 원칙
    • 독립된 관계는 분리하여야 한다.

3. 함수 종속성

  • 어떤 관계(테이블) R의 속성(열 or 필드) X, Y에 대하여, 속성 X값에 의해 속성 Y값이 오직 하나만 결정될 때, 속성 Y는 속성 X에 함수 종속이라 하고 X->Y 로 표기한다.
  • 쉽게 말하면 X를 알면 Y를 알 수 있다.
  • ex) 학번을 알면 이름을 알 수 있다. 학번 -> 이름
  • 이름은 학번에 종속이다.
  • 하지만 이름을 안다고 학번을 알 수는 없다. 동명이인이 있으면 학번을 알 수가 없음.

3.1 완전 함수 종속

  • 복합 속성에 함수 종속 될 때
  • ex) 학번과 과목번호를 알아야 성적을 알 수있다. 따라서 성적은 완전 함수 종속되어 있다라고 말한다.

3.2 부분 함수 종속

  • 복합 속성의 일부에 함수 종속 될 때

  • ex) 학년은 학번, 과목번호 중 하나만 관계 있다. 이를 부분함수 종속성이라고 함

4. 정규형

  • 특정 제약 조건을 만족하도록 스키마의 관계 구성

4.1 제 1 정규형(1NF)

  • 어떤 관계(테이블)R 에 속하는 속성의 속성값이 모두 원자값으로 구성될 때 제 1정규형이라 한다.
  • 즉, 빈 값이 없는 것.

  • 이상 현상이 생김 : 키가 아닌 속성들이 기본키에 완전 함수 종속되지 못하고, 부분 함수 종속되어 있기 때문.
  • 해결 : 테이블을 분할하여 부분 함수 종속을 제거

4.2 제 2정규형(2NF)

  • 어떤 관계(테이블) R이 1NF이고 키에 속하지 않는 속성 모두가 기본키에 완전 함수 종속일 때, 제 2정규형이라 한다.
  • 즉, 완전함수 종속 만 있고 부분함수 종속이 없음
  • 삽입 이상
    • 지도 교수가 학과에 소속되어 있음을 삽입할 수 없다. 반드시 지도 학생이 있어야 한다. (제 1정규형을 규칙에 위배됨)
  • 삭제이상
    • 200 학생이 자퇴하면 지도 교수 P2의 학과가 없어진다.
  • 갱신이상
    • 지도교수 P1에서 컴퓨터에서 전자로 변경되면, 모두 찾아서 변경하여야 한다.
  • 원인 : 이행적 함수 종속성

    • A- > B, B-> C이면, A->C 이다.

  • 해결 : 이행적 함수 종속성을 제거한다.

4.3 제 3정규형

  • 어떤 관계(테이블) R이 2NF이고, 키(key)에 속하지 않는 속성 모두가 기본키에 이행적 함수 종속이 아닐 때, 제 3정규형이라 한다.
  • 이행적 함수 종속성이 없음.

4.3.1 이상현상

  • 삽입 이상
    • 교수 P5가 자료 구조를 담당함을 삽입할 수 없다.
    • 적어도 하나 이상의 수강학생이 있어야 한다.
  • 삭제 이상
    • 학번 100이 자료구조를 취소하면 P2가 자료 구조 담당 정보도 함께 삭제 된다.
  • 갱신 이상

  • 원인 : 결정자가 후보키로 취급되고 있지 않다.

  • 해결 : 결정자가 모두 후보키가 되도록 테이블 분해

  • 그런데 보통 3정규형만 되도 실무에서는 사용하는데 불편함은 거의 없다.

  • 이것은 그냥 이론적으로 그렇다라는 것으로 배운다.

4.4 보이스-코드 정규형(BCNF)

  • 관계(테이블) R의 모든 결정자가 후보키일 때

  • 강한 제 3 정규형이라고도 불림

4.5 제 4정규형(4NF) : 필요성

  • 관계(테이블) R이 BCNF이고, 다치 종속이 없을 때

  • 삽입 이상
    • 최수종이 취미에 스키를 추가하려면 (최수종, 컴공, 스키)(최수종, 경경, 스키) 를 추가해야 한다.
  • 삭제 이상
    • (최수종, 경영, 수영)을 삭제하려면 의미적 모순이 생김.
    • 왜냐하면 최수종이 수영이 취미가 아니라서 삭제하려는데 컴공인 최수종은 수영이 취미다???
  • 삭제 이상
  • 다치 중속성 : 관계(테이블) R에서 속성 A에 의해서 속성 B와 속성C의 다치값이 결정되며 속성 B와 C에 종속 관계가 없을 때, 속성 A와 속성 B,C에 다치 종속이 존재하며, A-»B, A-»C로 표시한다.
  • 위의 예로 성명 -» 전공, 성명 -» 취미

4.6 제 5정규형(5NF) : 조인 연산

  • 관계(테이블) R의 모든 조인 종속성이 후보키를 통해서 성립할 때, 제 5정규형이라고 한다.

  • 분할해서 다시 합쳐봤더니 아래 처럼 원래 없던 투플이 나옴
  • 아래 예로 백재현의 현대 트럭 행이 나옴

  • 잘 안쓰임 일단. 쪼개서 원래 테이블로 만들때 조인 연산이 사용됨

5. 정리

  1. ER Diagram
    • 테이블로 변환
  2. 비정규형
    • 중복 투플 제거
  3. 제 1정규형
    • 부분함수 종속성 제거
  4. 제 2정규형
    • 이행적 함수 종속성 제거
  5. 제 3정규형
    • 모든 결정자가 후보키
  6. 보이스-코드 정규형
    • 다치 종속성 제거
  7. 제 4정규형
    • 후보키 아닌 조인 종속성 제거
  8. 제 5정규형