Jam's story
[Oracle] days14- 정규화 본문
정규화
제1정규화 : 제1정규형에 속하기 위해서는 릴레이션에 속한 모든 속성이 더는 분해되지 않는 원자 값만 가져야 한다.
제2정규화 :부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록
함수적 종속성
하나의 릴레이션을 구성하는 속성들의 부분 집합을 X와 Y라 할 때, 어느 시점에서든 릴레이션 내의 모든 투플을 대상으로 한 X 값에 대한 Y 값이 항상 하나면 "X가 Y를 함수적으로 결정한다" 또는 "Y가 X에 함수적으로 종속되어 있다"고 한다. 함수 종속 관계는 X → Y로 표현하고 X를 결정자, Y를 종속자라고 한다.

x->y y는 x에 종속적이다.
제 2 정규화를 하려면, 복합키가 있어야한다.
부분함수적 종속성 : 조건) 복합키(x+y)에 전체적으로 의존하지 않는 속성
[학과등록] 테이블
[학번+과정코드] 복합키 ,
평가코드는 학번, 과정코드 두개에 종속하지만
과정명 ,과정기간은 복합키에 종속적이지않고 과정코드에만 종속한다. (부분 함수적 종속성)
학번 과정코드 평가코드 과정명 과정기간
100 a001 a java 1개월
100 a002 f asp 2개월
100 a003 a java 1개월
100 a004 b c# 1개월
100 a005 a java 1개월
이 테이블에서 부분적 함수 종속을 제거하면
학번 과정코드 평가코드
100 a001 a
100 a002 f
100 a003 a
100 a004 b
100 a005 a
과정코드 과정명 과정기간
a001 java 1개월
a002 asp 2개월
a003 java 1개월
a004 c# 1개월
a005 java 1개월
제3정규화 : 이행적 함수적 종속성 제거
기본키가 아닌 모든 속성이 기본키에 이행적 함수종속이 되지 않으면 제3정규형에 속한다.
이행적 함수 종속 : a->b, b->c 일때 a->c
예) 사원 테이블
pk
empno ename deptno dname
7369 홍길동 10 영업부
모든 칼럼들이 pk에 종속 -> 완전종속
dname은 pk가 아닌 deptno에 종속적 = 이행적 함수 종속
제 3 정규화를 실행하면
empno ename deptno
7369 홍길동 10
deptno dname
10 영업부
할인율은 pk에 종속되지 않는다. 그렇기 때문에 테이블을 분해해준다.
bcnf
릴레이션 r이 제 3 정규화를 만족하고, 모든 결정자가 후보키(유일성과 최소성을 만족하는 속성)이어야 한다는것
제 3 정규화를 만족하는 대부분이 대부분의 릴레이션들은 bcnf도 만족한다.
[x+y] 복합키
z->y 복합키의 일부가 일반 속성에 종속적
제4정규화
제5정규화
-----------------------------------------------------
[대여] [영화] 를 join 해서 영화제목을 가져올 수 있지만 조인을 하지 않으려고
[대여]에 영화제목 칼럼을 추가하였다.
'Oracle' 카테고리의 다른 글
[Oracle]days 14 -뷰 (0) | 2022.04.21 |
---|---|
[Oracle] days14- 조인문제 (0) | 2022.04.21 |
[Oracle]days13 -데이터베이스 모델링 (0) | 2022.04.20 |
[Oracle ]days12 - join (0) | 2022.04.19 |
[Oracle] days11 (0) | 2022.04.18 |