포스트

6. 스키마 정제와 정규형

6. 스키마 정제와 정규형

6. 스키마 정제와 정규형(23. 10. 26)

스키마 정제

  • 정제되지 않은 스키마에서의 문제
    • 중복 이상

      어떤 데이터는 반복적으로 저장됨

    • 갱신 이상

      반복 저장된 데이터 중 한 투플을 갱신할 때 다른 모든 사본을 갱신하지 않으면 불일치 발생

    • 삽입 이상

      한 정보를 저장하려면 다른 정보도 같이 저장하여야 함

    • 삭제 이상

      어떤 정보를 지우면 다른 정보도 같이 삭제됨

  • 처음 설계 할 때 부터 이런 문제가 안생기게 설계하면 좋겠지만… 한계가 있음

분해법

  • 속성을 부자연스럽게 묶어서 한 릴레이션 스키마로 만들면 중복성이 발생
  • 함수 종속(Functional Dependency)를 이용하여 상황을 식별
    • 릴레이션을 더 작은 릴레이션의 모임으로 대치
    • 작은 일레이션은 본래 릴레이션 속성의 부분집합으로 이루어 짐
  • 분해의 문제
    • 릴레이션의 분해가 필요한가?
      • 제안된 정규형(Normal Form)으로 분해
    • 분해했을 때 발생할 수 있는 문제는 무엇인가?
      • 무손실 조인(Lossless Join) 성질에 따라 릴레이션 인스턴스 복구
      • 종속성 유지(Dependency Preservation) 조건에 따라 계약 조건 유지

함수 종속

  • 함수 종속(Functional Dependency)는 일종의 제약 조건
  • 어떤 릴레이션 스키마를 R이라고 하고 X와 Y를 R에 속한 속성 집합이라고 하고, R의 인스턴스 r에 속한 투플 t1과 t2가 다음의 조건을 만족하면 FD X → Y가 존재한다고 한다

    $t1.X = t2.X 이면 t1.Y = t2.Y$

  • 한 릴레이션에 대해 적법한 인스턴스가 되려면 명세된 모든 FD를 만족해야 함
  • 기본 키는 FD의 특수한 경우
    • 키에 대한 속성은 X의 역할을 하게 되며, 나머지 속성은 Y의 역할을 함
    • X → Y가 만족되고 X의 진부분집합 V가 있어서 V → Y가 만족되면 X는 수퍼키이지 키는 아님
  • 개체 집합 스키마 정제

    {EmpID} → {EmpID, Name, Parkingslot, Grade, WagePerHr, Workingtime} E E N P G W H

  • 등급에 따라 시간당 임금이 결정될 경우 두 FD가 존재

    E → ENGWH G → W

  • 부분적 함수 종속
    • 기본 키 구성 속성의 일부에 종속되거나, 기본 키가 아닌 다른 속성에 종속되는 경우
  • 이행적 함수 종속
    • 함수 종속에 이행이 있을 때 (A → B, B → C = A → C) 암스트롱 공리
  • 완전 함수 종속
    • 함수 종속 X → Y에서 X로부터 속성 A를 제거하면 함수 종속 X → Y가 성립하지 않는 경우
    • 즉, 임의의 속성 A ∈ X 에 대해서 Y가 (X{A})에 함수 종속되지 않는 경우

정규화

  • 속성간의 종속성으로 인한 이상 현상이 발생하는 릴레이션을 분해하여 이상 현상을 없애는 과정
  • 데이터의 중복 방지, 무결성을 충족하기 위한 데이터의 설계 방법
  • 릴레이션 스키마가 어떤 정규형을 만족하는지 확인하는 테스트
  • 정규화 원칙
    • 무손실 법칙: 분해된 릴레이션이 표현하는 정보는 분해되기 전의 정보를 모두 포함
    • 최소 데이터 중복 법칙: 이상 현상을 제거, 데이터 중복을 최소화
    • 분리 법칙: 독립된 함수 종속은 독립된 릴레이션으로 분해
  • 장점
    • 이상 현상 해결
    • 새 속성 추가시 데이터베이스 변경의 최소화
    • 현실 세계의 개념간의 관게 표현

제 1정규형

  • 도메인의 원소들이 나눌 수 없는 단위로 되어 있을 때 원자적이라고 함
  • 어떤 릴레이션 R에 속한 모든 도메인이 원자적일 때 R은 제 1정규형이라고 한다.
  • 1정규 형을 만족시키 못함

| 학번 | 지도교수 | 학과 | 과목번호 | 성적 | | — | — | — | — | — | | 100 | 이순신 | 컴퓨터공학과 | C102, D103 | A, B | | 200 | 홍길동 | 컴퓨터공학과 | C102 | B | | 300 | 윤동주 | 기계공학과 | D102 | A | | 400 | 김영랑 | 수학과 | F201 | |

  • 어떤 학생에 대해 성적을 얻고 싶다면… 과목번호가 원자적이지 않음.

| 학번 | 지도교수 | 학과 | 과목번호 | 성적 | | — | — | — | — | — | | 100 | 이순신 | 컴퓨터공학과 | C102 | A | | 100 | 이순신 | 컴퓨터공학과 | D103 | B | | 200 | 홍길동 | 컴퓨터공학과 | C102 | B | | 300 | 윤동주 | 기계공학과 | D102 | A | | 400 | 김영랑 | 수학과 | F201 | C |

  • 위 테이블은 제 1정규형을 만족한다.

제 2정규형

  • 1NF 이고 기본키에 속하지 않은 속성이 기본키에 완전 함수 종속 되는 경우
  • 완전 함수 종속 이란?
    • 함수 종속 X → Y에서, * X로부터 임의의 속성 A를 제거하면 X → Y가 성립되지 않는 경우 * 즉, 임의의 속성 A ∈ X에 대해서 Y가 (X {A})에 함수 종속하지 않는 경우
1
2
Grade(StudentNo, Professor, Department, SubjectID, Grade)
          S          P          D           J        G

| StudentNo | Professor | Department | SubjectID | Grade | | — | — | — | — | — | | 100 | 이순신 | 컴퓨터공학과 | C102 | A | | 100 | 이순신 | 컴퓨터공학과 | C103 | B | | 200 | 홍길동 | 컴퓨터공학과 | C102 | B | | 300 | 윤동주 | 기계공학과 | D102 | A | | 400 | 김영랑 | 수학과 | F201 | C |

  • FD1 : S → PDFD2 : J → G
    • 제 2정규형으로 정규화 한다면 이거를 아래와 같이 나누면 제 2 정규형이다.

      StudentNoProfessorDepartment
      100이순신컴퓨터공학과
      200홍길동컴퓨터공학과
      300윤동주기계공학과
      400김영랑수학과
      StudentNoSubjectIDGrade
      100C102A
      100C103B
      200C102B
      300D102A
      400F201C

제 3정규형

  • 이행적 종속성(Transitive dependency) 개념에 기반
    • 릴레이션 스키마 R에서, 후보 키가 아니고 어떤 키의 부분집합도 아닌 속성 집합 Z가 있을 때,
    • X → Z와 Z → Y가 만족될 때, 함수 종속 X → Y를 이행적 함수 종속이라고 부름
  • Codd의 정의
    • 릴레이션 스키마 R이 2NF이고
    • R의 어떤 비주요 속성도 기본 키에 이행적으로 종속하지 않으면 R은 3NF에 속함
  • 구분
    • R: 릴레이션 스키마, X: R에 속하는 릴레이션 인스턴스의 부분집합, A: R의 속성일 때
    • 다음 중 하나에 속하면 제 3 정규형에 속함
      • A ∈ X, 즉 평범한 함수 종속
      • X가 슈퍼키
      • A가 R의 어떤 키의 일부
  • 이런 이행적 함수 종속이 없는 것을 제 3정규형이라고 부른다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

© 김규형. 일부 권리 보유

Powered by Jekyll with Chirpy theme