부분집합(Subset) 규칙 : if Y ⊆ X, then X → Y
증가(Augmentation) 규칙 : If X → Y, then XZ → YZ
이행(Transitivity) 규칙 : If X → Y and Y → Z, then X → Z
위 세 가지 규칙으로부터 부가적으로 다음의 규칙을 얻을 수 있음
결합(Union) 규칙 : If X → Y and X → Z, then X → YZ
분해(Decomposition) 규칙 : If X → YZ, then X → Y and X → Z
유사이행(Pseudotransitivity) 규칙 : If X → Y and WY → Z, then WX → Z
함수 종속성과 기본키
릴레이션 R(K, A1, A2, A3, ..., An)에서 K가 기본키면, K → R이 성립.
즉 기본키는 릴레이션의 모든 속성에 대해 결정자(determinant)임.
예) 이름이 같은 학생이 없다고 가정하면, ‘이름 → 학과, 이름 → 주소, 이름 → 취득학점’이므로
‘이름 → 이름, 학과, 주소, 취득학점’이 성립한다. 즉 이름 속성이 학생 릴레이션의 전체를 결정함.
학생수강성적 릴레이션에서 부분 릴레이션을 분해하기
분해할 때 부분 릴레이션의 결정자는 원래 릴레이션에 남겨두어야 함. 그래야 분해된 부분
릴레이션이 원래 릴레이션과 관계를 형성할 수 있음
[1단계] 학생수강성적 릴레이션에서 (강좌이름, 강의실)을 분리
학생수강성적1(학생번호, 학생이름, 학과, 주소, 강좌이름, 성적, 학과사무실)
강의실(강좌이름, 강의실)
[2단계] 학생수강성적1 릴레이션에서 (학생번호, 강좌이름, 성적)을 분리
학생학과(학생번호, 학생이름, 학과, 주소, 학과사무실)
학생성적(학생번호, 강좌이름, 성적)
강의실(강좌이름, 강의실)
[3단계] 학생학과 릴레이션에서 (학과, 학과사무실)을 분리
학생(학생번호, 학생이름, 학과, 주소)
학과(학과, 학과사무실)
학생성적(학생번호, 강좌이름, 성적)
강의실(강좌이름, 강의실)
7.정규화
이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
이상현상이 있는 릴레이션은 이상현상을 일으키는 함수 종속성의 유형에 따라 등급을 구분 가능
릴레이션은 정규형 개념으로 구분하며, 정규형이 높을수록 이상현상은 줄어듦
제 1정규형
릴레이션 R의 모든 속성 값이 원자값을 가지면 제 1정규형이라고 함
제 1정규형으로 변환
고객취미들(이름, 취미들) 릴레이션을 고객취미(이름, 취미) 릴레이션으로 바꾸어 저장하면 제 1정규형을 만족함
제 2정규형
릴레이션 R이 제 1정규형이고 후보키가 아닌 속성이 후보키에 완전 함수 종속일 때 제 2정규형이라고 함.
완전 함수 종속(full functional dependency) : A와 B가 릴레이션 R의 속성이고 A → B 종속성이 성립할 때, B가 A의 속성 전체에 함수 종속하고 부분 집합 속성에 함수 종속하지 않을 경우 완전 함수 종속라고 함.
{학번, 강좌} -> 성적
{학번, 강좌} -x-> 강의실
강좌라는 부분집합이 강좌 -> 강의실이기 때문.
제 2정규형으로 변환.
따라서 수강강좌 릴레이션에서 이상현상을 일으키는(강좌이름, 강의실)을 분해함.
강좌이름 강의실도 제2정규형을 만족한다!
완전함수종속 반대는 부분함수종속
그림 7-18 테이블 이상 모음
삽입 이상
수강신청하기 전까지 해당강좌의 강의실을 알 수 없다.
삭제 이상
402 강좌 cancel시 스포츠경영학이 체육관103에서 이뤄진다는 정보도 지워진다.
update 이상
강의실 수정시 하나의 row만 수정시 불일치 현상이 일어남.
제2정규형 사용시? 위의 이상들 다 사라짐!
제 3정규형
릴레이션 R이 제 2정규형이고 후보키가 아닌 속성이 후보키에 비이행적(non-transitive)으로 종속할 때(직접 종속) 제 3정규형이라고 함
이행적 종속이란 A → B, B → C가 성립할 때 A → C가 성립되는 함수 종속성
제 3정규형으로 변환
A → B, B → C로 분해함.
삽입 이상
수강료 정보를 수강신청한 학생정보가 하나도 없으면 입력 불가
삭제 이상
수강료, 강좌 정보도 같이 삭제됨.
update 이상
강좌이름, 수강료 중 정보 수정시 불일치 현상
제4, 5정규형도 있다.
제1정규형 조건 -> 원자값
제2정규형 조건 -> 제1정규형, 완전함수종속
제3정규형 조건 -> 제2정규형, 비이행적 종속
BCNF
보이스-코드
릴레이션 R에서 함수 종속성 X → Y가 성립할 때 모든 결정자 X가 후보키이면 BCNF 정규형이라고 함(원래는 슈퍼키이다. 번역 좆박아서 후보키라고 번역함.)
이 조건만 만족하면 일반적으로 제3정규형을 만족한다.
X → Y를 모두 분해한다.
학생번호, 특강이름이 기본 키(후보키?). 교수는 기본키 아님.
BCNF 정규형으로 변환
특강수강 릴레이션에서 이상현상을 일으키는 (교수, 특강이름)을 분해함
pg 31은 교수가 PK이므로 순서를 바꿔야 한다.....
학생번호 - 교수(FK)