데이터베이스 시스템-8

김민규·2023년 11월 20일
0

DB system

목록 보기
8/14
  1. 함수 종속성 규칙(functional dependency rule)
    X, Y, Z가 릴레이션 R에 포함된 속성의 집합이라고 할 때,
    함수 종속성에 관한 다음과 같은 규칙이 성립

부분집합(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

  1. 함수 종속성과 기본키
    릴레이션의 함수 종속성을 파악하기 위해서는 우선 기본키를 찾아야 함
    기본키가 함수 종속성에서 어떤 역할을 하는지 알면 이상현상을 제거하는 정규화 과정을 쉽게 이해할 수 있음

함수 종속성과 기본키
릴레이션 R(K, A1, A2, A3, ..., An)에서 K가 기본키면, K → R이 성립.
즉 기본키는 릴레이션의 모든 속성에 대해 결정자(determinant)임.
예) 이름이 같은 학생이 없다고 가정하면, ‘이름 → 학과, 이름 → 주소, 이름 → 취득학점’이므로
‘이름 → 이름, 학과, 주소, 취득학점’이 성립한다. 즉 이름 속성이 학생 릴레이션의 전체를 결정함.

  1. 이상현상과 결정자
    이상현상은 한 개의 릴레이션에 두 개 이상의 정보가 포함되어 있을 때 나타남
    기본키가 아니면서 결정자인 속성이 있을 때 발생함
    학생수강성적 릴레이션의 경우 학생 정보(학생번호, 학생이름, 주소, 학과)와 강좌 정보(강좌이름, 강의실)가 한 릴레이션에 포함되어서 이상현상이 나타남
    (학과, 학생번호, 강좌이름은 기본키가 아니면서 결정자인 예이다)
    이상현상을 없애려면 릴레이션을 분해한다.
    (학과, 학과사무실) 속성을 학생수강성적 릴레이션에서 분리하는 예 (그림 7-11 참고)

학생수강성적 릴레이션에서 부분 릴레이션을 분해하기
분해할 때 부분 릴레이션의 결정자는 원래 릴레이션에 남겨두어야 함. 그래야 분해된 부분
릴레이션이 원래 릴레이션과 관계를 형성할 수 있음

[1단계] 학생수강성적 릴레이션에서 (강좌이름, 강의실)을 분리
학생수강성적1(학생번호, 학생이름, 학과, 주소, 강좌이름, 성적, 학과사무실)
강의실(강좌이름, 강의실)
[2단계] 학생수강성적1 릴레이션에서 (학생번호, 강좌이름, 성적)을 분리
학생학과(학생번호, 학생이름, 학과, 주소, 학과사무실)
학생성적(학생번호, 강좌이름, 성적)
강의실(강좌이름, 강의실)
[3단계] 학생학과 릴레이션에서 (학과, 학과사무실)을 분리
학생(학생번호, 학생이름, 학과, 주소)
학과(학과, 학과사무실)
학생성적(학생번호, 강좌이름, 성적)
강의실(강좌이름, 강의실)

  1. 함수 종속성 예제
    함수 종속성은 보통 릴레이션을 설계할 때 속성의 의미로부터 정해지지만, 역으로 릴레이션에 저장된 속성 값으로부터 추정할 수 있음.

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)

profile
근거 없는 자신감 박살난 사고력 아무튼 할 수 있다

0개의 댓글