dongdorodongdong
정규화 본문
정의
- 데이터베이스의 설계를 재구성하는 기술.
- 불필요한 데이터의 중복을 없앨 수 있고, 삽입, 갱신, 삭제 시 발생할 수 있는 이상(Anomaly)들을 방지.
- 차수가 높아질수록 만족시켜야 할 제약 조건이 늘어난다
- 데이터베이스의 논리적 설계 단계에서 수행
이상현상
- 정의
- 데이터들이 불필요하게 중복되어 릴레이션 조작시 발생하는 예기치 못한 현상 - 종류
- 삽입 이상
"데이터를 삽입할 때 의도와는 다른 값들도 함께 삽입되는 현상"
- 삭제 이상
"한 튜플을 삭제할 때 의도와는 다른 값들도 함께 삭제되는 현상"
- 갱신 이상
"튜플에 있는 속성값을 갱신할때 일부 튜플의 정보만 갱신되어 모순이 생기는 현상"
정규화 과정
- 비정규 릴레이션
도메인이 원자 값 - 1NF
부분적 함수 종속 제거
완전 함수적 종속 - 2NF
이행적 함수 종속 제거
비이행적 함수적 종속 - 3FN
결정자이면서 후보키가 아닌 것 제거 - BCNF
다치 종속 - 4NF
조인 종속성 이용 - 5NF
제 1정규형(1NF)
- 모든 속성이 원자값으로만 되어 있는 정규형
- 회원 테이블에서 속성이 원자값이 아니다. 따라서 원자 값으로 나누어 준다.
제 2정규형(2NF)
- 부분함수적 종속을 제거하여 완전 함수적 종속을 만족하는 정규형
- 부분 함수적 종속 : 회원번호->이름
- 완전 함수적 종속 : 회원번호, 수강과목 -> 성적
- 성적 테이블에서 이름 속성을 분리하면 완전 함수적 종속 상태가 되므로 2정규형을 만족한다.
제 3정규형(3NF)
- 이행적 함수적 종속 관계를 제거하여 비이행적 함수적 종속 관계를 만족하는 정규형
- 신청번호->회원번호, 회원번호->회원취미 의 관계가 있으면 신청번호->회원취미 라는 이행적 함수적 종속 관계가 있다. 따라서 회원번호, 회원취미 속성을 분리하면 3정규형을 만족한다.
BCNF(강한 3정규형)
- 모든 결정자가 후보키이어야 한다는 정규형
- 후보키 : (학번, 과목), (학번,교수)
- 종속관계 : (학번,과목)->교수 / 교수->과목
- 결정자 : (학번,과목), 교수
- 교수 속성이 결정자이나 후보키가 아니다 따라서 교수 속성을 분리하면 수강 테이블은 BCNF를 만족.
제 4정규형(4NF)
- 다치종속을 제거한 정규형
제 5정규형(5NF)
- 조인 종속의 만족이 릴레이션의 후보 키를 통해서만 만족
정리
비정규화 -> 모든 속성이 원자값 -> 1NF -> 완전 함수적 종속 -> 2NF -> 비이행적 함수적 종속 -> 3NF
-> 모든 결정자가 후보키 -> BCNF -> 다치종속 제거 -> 4NF -> 조인 종속성 이용 -> 5NF
-> 모든 결정자가 후보키 -> BCNF -> 다치종속 제거 -> 4NF -> 조인 종속성 이용 -> 5NF
'Database' 카테고리의 다른 글
데이터베이스 설계 (0) | 2019.03.25 |
---|---|
시스템 카탈로그(데이터 사전) (0) | 2019.03.24 |
병행제어(동시성 제어) (0) | 2019.03.24 |
Transaction (0) | 2019.03.24 |
스키마 (0) | 2019.03.24 |