본문 바로가기

학교공부/데이터베이스

7장

릴레이션 정규화

 

  이상하게 설계하면 중복생겨서 갱신 이상 유발한다

갱신 이상에는 세가지가 있다

 

 

 

 

나쁜 설계

문제점 1. 3개 부서보다 더 많이 속하면 릴레이션을 바꾸거나 애트리뷰트 추가해야된다. 2. 3개 미만으로 속하면 null값 넣어서 공간 낭비

 

그럼 이런식으로 튜플을 여러개 사용해서 해결할 수 있다.

하지만 이런 방법도 정보의 중복(부서말고 다 중복됨) 저장공간 낭비, 수정 이상(만약 부서이름이 바꼈을 때 모든 튜플의 부서이름 변경해야된다.)

 

해결방법

릴레이션 분해

 

 

 

 

 

 

 

정규화

 

db설계 지침

 

 

 

함수의 종속성

 

 

결정자 예시

두가지 표현 방법

 

 

 

결정자가 두개있을때 두개다 종속하면 완전 둘중 하나만 종속하면 부분함수적 종속성

 

이행적 함수적 종속석

 

A -> C ^ C -> B

여기서 A는 학번 C는 학과이름 B는 학과전화번호

 

 

 

 

릴레이션 분해

 

정보 중복

 

분해한다음 필요한거 있으면 자연조인해서 무손실로 정보 찾기가능

이런건 불필요한 분해 중복도 없는데 분해하면 학번만 중복된다.

이것도 마찬가지

 

나쁜 분해한다음 자연조인하면 원래 릴레이션에는 없었던 가짜 투플이 생길 수 있다.

 

 

 

 

제 1 정규형

위의 릴레이션을 아래처럼 변경하면 제 1정규형을 만족한다.

이런식으로 해도된다.

 

 

 

제1정규형에 존재하는 갱신 이상

아래 그림은 제 1정규형 만족한다. 기본키는 학번과 과목번호

 

 

갱신이상이 생기는 이유

-> 기본키에 대한 부분 함수적 종속성이 릴레이션에 존재하기 때문

제 2 정규형으로 해결

 

애트리뷰트가 기본키 애트리뷰트에 대해 종속하는데 그거의 진부분집합에도 종속하면 부분 함수적 종속임.

학번 과목번호에도 종속하는데 진부분집합에도 종속해서 부분함수적종속

 

 

 

 

제2 정규형

 

 

여기서도 문제가 있다.

이행적 종속성이 있으면 갱신 이상이 생긴다.

따라서 제 3정규형을 적용해서 이행적 종속성을 없앤다.(fd2)

 

 

제 3 정규형에서 존재하는 갱신이상

 

 

(데이터베이스, 이영준)이 중복되서 나온다.

갱신이상

 

갱신이상이 생기는 이유

키가 아닌 애트리뷰트가 다른 애트리뷰트를 결정하기 때문이다.

이 릴레이션의 후보키는 (학번,과목)과(학번,강사)

 

 

여기서 다음 방법이 BCNF

 

그럼 이렇게 바꿀 수 있다.

 

 

 

정규화 과정

 

 

 

 

 

역정규화 

 

 

 

 

검색이 갱신보다 많다. 갱신이상 감수하고 역정규화 실행

 

 

 

 

 

 

 

+

클로져

모든 디펜던시 포함.

 

$Y^+$ (클로져)는 Y가 결정하는 모든 함수적 종속성의 집합

ex)

애트리뷰트 ABC

A->B, B->C

$A^+$ = ABC

$B^+$ = BC

$C^+$ = C

$AB^+$ = ABC

$BC^+$ = BC

$CA^+$ = ABC

$ABC^+$ = ABC

 

ABCD

AB -> C

C -> D

D -> A

 

$A^+$ = A

$B^+$ = B

$C^+$ = CDA

$D^+$ = DA

$AB^+$ = ABCD

 

 

 

이렇게 순서대로 다 구할수 있다.

$BC^+$ 

$CD^+$ 

$DA^+$ 

$ABC^+$ 

$ABD^+$ 

$BCD^+$ 

$ACD^+$

$ABCD^+$ 

 

 

 

 

'학교공부 > 데이터베이스' 카테고리의 다른 글

9장  (0) 2020.12.14
8장  (0) 2020.11.30
6장  (0) 2020.11.17
데이터베이스 4 -5  (0) 2020.10.21
실습 모음  (0) 2020.10.21