2018/05/15 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 5강 정규화 기초

2018/03/21 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 4강 데이터베이스 언어

2018/03/19 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 3강 관계형 모델

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 2강 데이터베이스 모델링

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 1강 데이터베이스의 이해


비효율성을 줄여야 DBMS를 효율적으로 사용할 수 있다.

이번 강의에서는 수학과 논리학이 조금 들어갈 수 있다.

1. 좋은 릴레이션과 나쁜 릴레이션

1) 나쁜 릴레이션의 예


(그림 나쁜릴레이션의 예)

등급과 할인율에 부분적인 중복이 발생하고 있다. 중복레코드는 존재하지않지만 중복의 문제를 내포하고있다.

2) 잘못된 데이터베이스 모델링

2-1) 데이터의 중복

2-2) 갱신 이상
- 삽입 이상: 레코드 추가 시 불필요한 컬럼의 값이 없이는 추가하지 못 하는 경우
- 삭제 이상: 삭제 시 의도하지 않았던 다른 데이터가 삭제되는 경우
- 수정 이상: 중복 저장된 레코드를 수정 시 모두 반영이 안되어 데이터베이스의 일관성이 깨지는 경우

2-3) 갱신 이상 - 삽입 이상
위 삽입된 그림에서 등급 신규 할인율 3프로를 추가하려면 나머지 3개 레코드(고객번호,고객명,전화번호)에 불필요한 정보를 추가하지않는이상 새로운 로우를 추가하지 못한다.    

2-4) 갱신 이상 - 삭제 이상
일반이나 VIP 등급을 삭제하고자할 때 등급과 할인율을 제외한 나머지 레코드 또한 삭제하지 않는 한 삭제하지 못하는 문제

2-5) 갱신 이상 - 수정 이상
일부에게만 할인율을 15프로 적용해놓고 추후 다른것에도 15프로를 적용하려다 수정에 실패한다면 비일관성이 발생한다.

3) 좋은 릴레이션의 개념

컴퓨터 프로그래머적 관점에서의 모델링 (어떻게 데이터를 저장해야 하는가?)
릴레이션의 스키마가 얼마나 효율적으로 실세계를 반영하고 있는지 평가하는 방법을 강구해야한다.
※ 고려사항
1. 한 릴레이션 내의 컬럼과 컬럼사이의 관계 분석
2. 갱신이상이 발생하지 않는지 데이터의 종속과 중복 제거
3. 새로운 컬럼들이 데이터베이스에 추가될 때, 기존 컬럼과의 관계 수정을 최소화

2. 함수적 종속성과 카노니컬 커버

나쁜릴레이션을 좋은릴레이션으로 바꾸려면??

1) 함수적 종속성
릴레이션 인스턴스를 분석하여 속성들(컬럼과 컬럼) 간의 연관관계를 표현한 것
릴레이션의 효율성을 향상시켜 좋은 릴레이션으로 변환하는데 이용되는 중요한 개념

정의
임의의 릴레이션 스키마 R의 인스턴스 r(R)에 포함되는 서로 다른 두 레코드 t1,t2와 속성 집합 X와 Y에 대해,
t1[X] = t2[X] 일 때, t1[y] = t2[y] 이면 함수적 종속성 X → Y가 성립한다.

2) 함수적 종속성의 판별

등급과 전화번호의 종속성
등급 컬럼과 전화번호 컬럼을 비교하였을때 등급이 같은 VIP 레코드더라도 전화번호 컬럼의 값은 다르다.
(X 의 컬럼값이 같으면 Y의 컬럼값도 같아야 종속성이 발생한다.)
* 그러므로 등급은 전화번호와 종속할 수 없다.

등급과 할인율의 종속성
등급이 일반으로 같다면 할인율도 5프로로 같은가?
등급컬럼의 값이 다를때는 신경쓸 필요가 없다. 같을때의 조건만 생각하면 된다.
등급한 할인율을 함수적으로 종속한다.
{등급} → {할인율}

3) 함수적 종속성의 확장

함수적 종속성은 릴레이션의 효율성 여부에 중요한 판단기준이 되지만 릴레이션의 인스턴스만으로 잠재된 모든 함수적 종속성을 찾아내기 어려움

판별되지 않은 모든 함수적 종속성을 찾기 위해 추론 규칙을 사용하여 확장

클로저(closure)
- 판별된 함수적 종속성 집합으로부터 유추할 수 있는 모든 함수적 종속성 집합 F+

4) 함수적 종속성 추론 규칙

4-1) 암스트롱 공리(Armstrong's axiom)

설명
재귀성: X의 컬럼이 Y의 컬럼값을 전부 내포하고 있다면, X가 Y를 종속한다.
부가성: X가 Y의 종속하고있다면 XZ가 YZ를 종속한다.
이행성: X가 Y를 종속하고 Y가 Z를 종속하면 X가 Z를 종속한다.
분해: X가 YZ를 종속하면 X가 Y를 종속한다. X가 Z를 종속한다. X가 Y 와 Z 를 각각 종속한다.
합집합: X가 Y를 종속하고 X가 Z를 종속하면 X가 YZ를 종속한다.
의사 이행성: X가 Y를 종속하고 WY가 Z를 종속하면 Y가 X로 대치가 되도 그대로 성립한다.

공리를 사용해서 클로저를 구할 수 있다.

(암스트롱 공리는 이해용도이다. 암기용도가 아님)

4-2) 함수적 종속성의 판별

고객번호 → 고객명
=> 고객번호가 다 다르므로 고객번호가 고객명을 종속할 수 없다. 고객명이 같아야 할 필요조차 없다.
같은 값이 없으므로 종속한다고 할 수 있다.

(여기서 약간 말이 웃기게 들리는데 고객번호가 고객명을 종속한다. 즉, 같은값이 있을때 같은값이 있으면 종속한다 라는게 정의 였다. 고객번호가 같은 값이 없으므로 고객번호가 고객명을 종속한다 라고 할 수 있다. 나도 이해가 잘 안된다...)

고객명 → 등급
=> 고객명의 레코드가 모두 다른 컬럼값이므로 고객명이 등급을 종속한다.

{고객번호, 고객명} → 할인율
=>고객번호와 고객명이 같은게 전혀없다 그러므로 종속한다.

위 종속성은 모두 유효한 함수적 종속성이다.

암스트롱 공리 의사 이행성에 따라 고객번호가 등급을 종속한다라고 할 수 있다.(고객번호 → 등급)

고객번호 → {고객명, 등급, 할인율}

5) 커버와 카노니컬 커버

5-1) 커버(cover)
정의
함수적 종속성들의 집합 E가 있을 때, E가 F+(클로저)에 포함되면 E의 모든 함수적 종속성이 F로부터 추론 가능 상태
=> F가 E를 커버 (E에 있는 의미가 F에 다 있다 라는 뜻)

5-2) 카노니컬 커버(canonical cover)
정의
F의 카노니컬 커버, Fc는 F+(클로저)에 존재하는 모든 함수적 종속성을 커버할 수 있는 최소한의 함수적 종속성들로만 이루어진 집합
설명: 함수적 종속성 집합(클로저) 안에는 불필요한 함수적 종속성을 많이 내포하고있는데 다 버리고 최소한의 의미만 가지고있는 함수적 종속성으로만 적용하겠다 라는게 카노니컬 커버

함수적 종속성 추론 규칙으로 확장된 클로저에는 자명한 종속성중복된 종속성을 포함

자명한 중속성이란?
A → A (당연한것)

중복된 종속성이란?
X → AB, X → B (의미가 여러번 존재)

불필요한 함수적 종속성을 제거한 표준형으로 변환 후 정규화를 수행한다.

표준형 조건
- F의 모든 함수적 종속성의 오른편 속성은 반드시 1개
- F에서 X → A를 X의 진부분집합 Y에 대하여 Y → A로 교체했을 때, 그 집합이 F와 동등한 집합이 불가능
- F에서 어떤 함수적 종속성을 제거했을 때, 그 집합이 F와 동등한 집합이 불가능

5-3) 카노니컬 커버의 도출

릴레이션 R의 스키가 (X,Y,Z)라고 가정하자
F+(클로저) = { X → YZ, Y → Z, X → Y, XY → Z}
                           ▼▼▼
        F+' = {X → YZ, Y → Z, XY → Z}
1. X가 YZ를 종속하고 X가 Y를 종속한다 라면 X가 Y를 종속한다는 것을 제거해도 된다.
                           ▼▼▼
                F+'' = {X → YZ, Y → Z}
2. XY가 Z를 종속한다라는 이야기는 X가 Y를 종속하고 X를 종속한다는 의미가 X → YZ에 포함되어 있다. 그러므로 XY → Z 에서 XY를 XX로 바꿀 수 있으므로 XX → Z 는 X → Z와 동일하다. 그러므로 XY → Z는 제거가 가능하다.

 

기말고사에서는 교재에 있는 알고리즘은 나오지 않음. 카노니컬 커버의 도출하는 과정만 나온다.