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 → PD FD2 : J → G 제 2정규형으로 정규화 한다면 이거를 아래와 같이 나누면 제 2 정규형이다.
StudentNo Professor Department 100 이순신 컴퓨터공학과 200 홍길동 컴퓨터공학과 300 윤동주 기계공학과 400 김영랑 수학과 StudentNo SubjectID Grade 100 C102 A 100 C103 B 200 C102 B 300 D102 A 400 F201 C
제 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정규형이라고 부른다.