음 아마 비둘기보단 똑똑할꺼야

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강 데이터베이스의 이해

 

나쁜릴레이션은 데이터베이스를 운용하는데 굉장히 비효율적 및 이상현상을 일으키는 릴레이션이다.

(아직까지 악당은 남아있닼ㅋㅋㅋㅋㅋㅋ)

1. 정규형의 개념

1) 정규형

- 이상 현상을 최소화 하도록 특정 조건을 갖춘 릴레이션의 형식

- 정규형의 분류

정규형은 타 정규형을 내포하거나 내포당하고있다.
제1정규형이 가장 적은 조건, 가장 약한 형태의 정규형이라 한다.
실무에서는 BC정규형까지만 사용하고 4,5 정규형은 잘 사용하지 않는다.

2) 정규형의 목적

정의
특정 정규형의 조건을 만족하도록 릴레이션과 속성(컬럼)을 재구성하는 과정

※정규화의 기능
- 데이터베이스 내에 모든 릴레이션을 효과적으로 표현 (중복을 최소화해서 가장 적은용량으로 DB 구성)
- 보다 간단한 관계 연산에 기초하여 검색 알고리즘을 효과적으로 작성할 수 있도록 지원
- 바람직하지 않은 삽임, 수정, 삭제 등의 이상 발생 방지 (갱신 이상 방지)
- 새로운 형태의 데이터가 삽입될 때 릴레이션 재구성의 필요성을 축소

3) 제1정규형

- 가장 약한 조건을 갖춘 정규형
- 릴레이션의 모든 속성이 단일 값으로 구성되어야 하는 조건

정의
릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값(관계형모델의 가장 기본적인 제약조건)을 갖는 상태
=> 기본적으로 관계형 모델을 통해서 만들어진 모든 릴레이션은 제1정규형을 만족한다라고 할 수 있음.

3-1) 제1정규화가 필요한 릴레이션

입항시간이 값이 두 개, 출항시간이 값이 두 개, 목적이 두 개 인 레코드가 있다.
원자값이 아니기때문에 제1정규화가 필요하다.

제1정규화를 시킨 도크릴레이션

단일값만으로 이루어지게 만들기 위해 두번째 릴레이션과 세번째 릴레이션을 변경하였다.

 

4) 함수적 종속성 판결

정의 5강 참조

Q. 도크번호 → 도크관리자?
도크릴레이션을 보면 도크번호가 D1으로 모두 같다 일때 도크관리자는 김주연이고 D2일때 현익창이다
따라서 도크는 도크관리자를 종속한다.

Q. 목적 → 담당도선사?
목적이 선적으로 같은 두번째와 세번째 레코드가 같을 때 담당도선사가 김혜겸으로 같으므로 종속한다.

Q. 목적 → 도크번호?
첫번째와 두번째 레코드의 목적이 선적으로 같을 때 D1으로 같으므로 종속한다.
나머지는 목적컬럼의 값이 다르므로 볼필요없다.

같을때 같은지만 보면된다. (다~ 다르면 종속한다??)

 

5) 함수적 종속성 다이어그램

릴레이션 내의 속성간의 종속 관계를 직관적이고 이해하기 쉽게 도식화 한 표현 방식
- 직사각형: 속성 또는 속성 집합
- 화살표: 함수적 종속성

목적         →     담당도선사
(결정자)            (종속자)

6) 도크 릴레이션의 함수적 종속성 다이어그램

해석,풀이
- 도크번호가 도크관리자를 종속한다.
- 도크번호와 입항시간이 파란색 사각형으로 묶여있다. 이 말은 도크번호와 입항시간 두 개가 같이 출항시간과 목적 담당도선사를 각각 종속한다.
- 목적이 도크번호를 종속한다.
- 목적이 담당도선사를 종속한다.

 

2. 제2정규형

1) 제2정규형의 정의

릴레이션이 제1정규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않은 상태

정의
주어진 릴레이션의 인스턴스가 기본키가 아닌 속성들이 기본키에 완전히 종속되어 있는 상태

2) 제2정규형의 적용

도크릴레이션의 도크번호와 입항시간에 밑줄이 그어져있으므로 도크릴레이션의 기본키에 해당한다.
도크번호와 입항시간이 출항시간,목적,담당도선사를 각각 종속한다.
여기서 문제는 도크관리자다. 도크관리자를 종속하고있는것은 도크번호이다.
기본키의 일부분인 도크번호가 도크관리자를 종속하고있다. 완전히 종속하고있지않은 부분적으로 종속하고있기 때문에 도크관리자 종속을 제거하면 제2정규형을 만족하게된다.
해결방법 = 기본키에 완전히 종속되도록 릴레이션을 분해해야한다.

3) 임의 분해(맘대로) 시 발생하는 문제점

- 불필요한 조인이 발생 (무리하게 릴레이션을 짤라서 2개의 릴레이션을 만들면 불필요하게 조인해서 검색해야한다. 조인은 DBMS에 많은 부하가 발생한다.)
- 원본 릴레이션 재구성이 불가능할 수 있다. (꼴리는데로 분해했다간 돌이킬 수 없는 강을 건너게된다.)

4) 릴레이션의 무손실 분해

정의
스키마 R에 함수적 종속성 X→Y가 존재하고 X∩Y=∮(X와 Y에 겹치는 컬럼이 없다) 이면, R을 R - Y 와 XY로 분해

도크관리 릴레이션 무손실 분해
- {도크번호} → {도크관리자}
- {도크번호} ∩ {도크관리자} =∮

도크관리 - {도크관리자}, {도크번호, 도크관리자}
도크릴레이션에서 도크관리자를 빼고 도크번호와 도크관리자만 존재하는 릴레이션을 추가적으로 생성한다. 이러면 조인했을 때 아무런 문제가 발생하지 않음.

조인해야하는 추가연산이 발생하지만 레코드가 줄어들으므로 용량이 줄어드는 효율성이 추가연산 단점보다 훨씬 크다.

5) 제2정규화의 함수적 종속성 다이어그램

 

3. 제3정규형

1) 제3정규화의 정의

정의
릴레이션이 제2정규형을 만족하고, 기본키가 아닌 속성들이 어떤 키에도 이행적으로 종속되지 않은 상태

이행적 종속이란?
X → Y 이고 Y → Z 이면 X → Z 이다.
(5강에 나왔었다 암스트롱 공리에서... 어휴 본인 비둘기인듯...)

2) 제3정규화의 적용

제2정규화가 된 도크릴레이션에서 도크번호와 입항시간은 목적을 종속하고 (X→Y) 목적이 담당도선사를 종속한다(Y→Z)
위 부분은 이행적 종속성에 해당한다.

{도크번호, 입항시간} → {목적}
                                {목적} → {담당도선사}
→ {담당도선사}

담당도선사를 빼버리자! 그러면 제3정규화가 적용된다!!

목적이 기본키이고 담당도선사를 종속하는 릴레이션을 새로 구축한다. 그리고 도크릴레이션에는 담당도선사만 제거한다.

4. BC정규형

1) BC정규형의 정의

정의
릴레이션이 제3정규형을 만족하고 릴레이션에서 성립하는 X→Y 형태의 모든 함수적 종속성에 대하여 X가 슈퍼키인 상태

슈퍼키: 기본키가 될 수 있는 컬럼

입출항관리 릴레이션(제3정규화가 적용된 도크릴레이션)의 함수적 종속성
- {도크번호, 입항시간} → {목적}
- {도크번호, 입항시간} → {출항시간}
- {목적} → {도크번호}

현상태에서 입출항관리 릴레이션에 BC정규화를 적용시키려면 목적→도크번호 를 따로 떼어내야한다.

2) BC정규화의 적용

항상 종속자를 떼어내는 것이고 결정자를 남겨둔다.
목적이 도크번호를 종속한다는것은 목적이 결정자가 되고 도크번호가 종속자가된다.
그러므로 도크번호를 떼어내야한다.
목적이 기본키이고 도크번호를 종속하는 릴레이션을 추가로 생성하고 기존 입출항관리 릴레이션에서 도크번호를 떼어낸다.
입출항관리 릴레이션의 기본키를 목적과 입항시간으로 두고 출항시간을 종속하도록한다.

 

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는 제거가 가능하다.

 

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

 

 

© 2015 Jundol in 음 아마 비둘기보단 똑똑할꺼야
Designed by DH / Powered by Tistory
73 / 12 / 113,811