자격증/정보처리기사

[정보처리기사-실기] 정규화 정리

ZZJJing 2020. 9. 29. 12:17

정규화 생각보다 많이 헷갈려서 정리를 한다. 

정규화의 (간단한) 정의 : 중복을 최소화시켜 테이블을 쪼개는것 

상세정의 : 데이터베이스 정규화란, 데이터의 중복을 줄이고 데이터 무결성을 향상시키기 위해 정규화된 형태로 디자인하는 기법으로 각종이상현상을 방지한다. 

 


정규화  [ 원 부 이 결 다 조 ]

 

비정규 릴레이션에서 시작 

              ▼

1정규화 (1NF) - 도메인이 자값 

           ▼

2정규화 (2NF) - 분적 함수 종속 제거 (완전 함수 종속 상태)

           ▼

3정규화 (3NF) - 행적 함수 종속 제거 

           ▼

BCNF (보이스코드 정규화) - 정자 (모든 결정자가 후보키인 상태) 

           ▼

4정규화 (4NF) - 치 종속 제거 (다중 종속 제거)

           ▼

5정규화 (5NF)  - 인종속 제거 

 

 


일단 1정규화는 도메인이 원자값이 되면 1정규화 된것 

 

원자값이란 엑셀 처럼 

이렇게 겹치는 게 없이 다 나뉘어 있는것이 원자값이다. 

* 정규화 : 기본적으로 분해!!하는거! 

 

 

 

 2정규화 - 부분적 함수 종속 제거 (완전 함수 종속 상태) 

 

2정규화는 일단 기본키가 2개이상인 복합키일 경우 적용된다.

- 2정규화부터는 여러가지 정규화 유튭을 찾아봤지만 제일 이해 잘되는거 링크 남김 

 

※ 정보처리실기에 맞는 아주 이해가 잘되는 유튭주소 

www.youtube.com/watch?v=rVxcheAkMSk

 

 

* 유튭 보고 정리함 

 

복합키 (ex) 기본키가 2개인 경우 1개의 기본키만으로도 조회가 가능한 경우, 

부분 함수적 종속이라고 한다. 

이런 경우 나눠주는데, 이렇게 부분적으로 종속이 되지 않는 경우 완전 함수적 종속'상태가 된다. 

 

 

 

대략 이런 느낌인듯한데, 주문번호/ 메뉴코드/ 메뉴명 일단 보자. 

메뉴명은 주문번호가 없어도 메뉴코드로만도 알수 있음. 

{ 주문번호 + 메뉴코드 } 셋트에 종속적이지 않으므로 '부분함수종속' 이라서 

따로 테이블을 만든다. 

그러면 

Table 1 - 주문번호(PK), 메뉴코드(PK/FK), 주문수량 남고 

Table 2 - 메뉴코드(PK), 메뉴명 

 

(주문수량은 주문번호 + 메뉴코드가 있어야 수량을 측정 할 수 있으니깐 완전 함수 종속이다.)

.. 이렇게 이해함 ㅋㅋ  

 

 

 3정규화 - 이행적 함수 종속 제거 

X -> Y - > Z 일때,   X -> Z 이다.

(제 2정규형을 만족하면서 이행함수적 종속 상태를 제거)  

기본키 집합에 종속되지 않고, 일반 속성에 종속되는 속성을 분해한다.

 

ex) 테이블에 학번(PK)  | 지도교수 | 학과 

 

-> 학생 릴레이션 

학번(PK) | 지도교수 

 

-> 지도교수 릴레이션  (일반속성끼리 분해됨)

지도교수(PK가 된다.) | 학과 

 

 

 

내가 만들어본건 대충 이런 느낌이다.. 

일단 중점은 기본키가 아닌 속성들끼리 이행적관계에 있을때, 테이블을 분리시키는 것!

 

 

● BCNF (보이스코드 정규화) - 정자이면서 후보키가 아닌 것 제거

보이스 코드는 3.5 단계 정도라고 하고

일반 속성이 -> 기본키를 종속할때 

일반속성(결정자) -> 기본키(종속자) 일 때, 

테이블을 나누는 것. 

 

- 결정자가 후보키가 아닌  함수를 제거한다. 

- 결정자가 후보키가 아니고 종속자가 기본키의 부분집합인 속성을 분해 

- BCNF 정규형인 모든 릴레이션은 제 3정규형에 속한다. 그 역은 성립되지 않는다. 

 

* 이건 메뉴예시로 뭘 들어야할지 모르겠음 ŏ̥̥̥̥םŏ̥̥̥̥ 헷갈려...ㅋㅋㅋ 

* 여튼 이도 저도 아닌 키가 기본키를 종속할때! 

결정자 남기니깐 

 - 학번  | 교수 테이블되고 

 교수가 결정자니깐 

 - 교수 | 과목 

 

요래됨 

헷갈림쓰 อิ_อี;

 

 

● 4정규화 - 다치 종속 제거 

 

과목과 교수가 1:N 관계 

-> 과목 1개에 여러 교수 존재 

교수와 교재가 1:N 관게 

-> 교수 1명에 여러 교재가 존재 

 

이러면 기본키를 기준으로 다 나눈다!!!!!!!!!!!!!!!!! 

 

 

*** 테이블이 분해되고 나면 항상 기존 테이블에 결정자가 남는다 ***

 

 

-- 4정규화 ~ 5정규화는 고급 정규화라서, 실 개발시에는 거의 잘 사용하지 않는다고 한다.

+ 적절한 예시가 거의 없어서 문제 안나온다고 함!! 그러니 패쓰 ^^   -- 

 

 

헷갈려서 정리했는데도 

아직도 머리에 잘 안들어오네 (ᵒ̌▱ᵒ̌)(ᵒ̌▱ᵒ̌)(ᵒ̌▱ᵒ̌)(ᵒ̌▱ᵒ̌)(ᵒ̌▱ᵒ̌)

더 머리를 굴려보자