Jam's story

[Oracle] days14- 정규화 본문

Oracle

[Oracle] days14- 정규화

애플쩀 2022. 4. 21. 10:36
정규화 

 

제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개월 

 

출처: https://terms.naver.com/entry.naver?docId=3431250&cid=58430&categoryId=58430&expCategoryId=58430

 

제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에 종속되지 않는다. 그렇기 때문에 테이블을 분해해준다. 

https://terms.naver.com/entry.naver?docId=3431251&cid=58430&categoryId=58430&expCategoryId=58430

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
Comments