데이터베이스의 정규화(normalization)에 대해 알아보겠습니다.
데이터베이스의 정규화(normalization)에 대해 알아보겠습니다.
1. 정규화 (normalization)
- 정규화를 하는 목적은 데이터의 중복을 방지하고 보다 효율적으로 데이터를 저장하기 위함.
- 릴레이션 분리, 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 함
- 데이터 삽입 시 릴레이션을 재구성할 필요성 감소
1) 제1정규화(1NF)
: 반복 되는 속성을 제거한 뒤 모든 속성이 원자 도메인 만으로 되어 있는 정규형
1NF를 만족하지 않는 릴레이션
교육과정
|
수강생1
|
수강생2
|
수강생3
|
웹 해킹
|
고길동
|
또치
|
둘리
|
웹 보안
|
둘리
|
마이클
|
또치
|
웹 프로그래밍
|
도우너
|
둘리
|
마이클
|
* 제1정규형에 위배되는 테이블 (중복 발생→공간 낭비, 이상 발생→무결성 위배 가능)
* 유사한 속성이 중복, 반복되는 경우도 정규화의 대상이 됩니다.
1NF를 만족하는 릴레이션
수강번호
|
교육과정
|
수강생
|
1
|
웹 해킹
|
고길동
|
2
|
웹 보안
|
둘리
|
3
|
웹 프로그래밍
|
도우너
|
4
|
웹 해킹
|
또치
|
5
|
웹 보안
|
마이클
|
가장 간단한 것은 원자값으로 분해해 튜플로 구분하고 다른 키를 추가하는 것입니다.
실제로 복잡한 테이블은 이렇게 단순하게 분해해버리면 다른 중복 문제들이 많이 생겨 테이블 구조를 고려해야함.
2) 제2정규화(2NF)
: 제1정규형이 된 상태에서 부분함수적 종속을 제거하여 완전(충분 한) 함수적 종속을 만족하는 정규형.
수강번호
|
교육과정
|
수강생
|
담당교수
|
1
|
웹 해킹
|
고길동
|
김교수
|
2
|
웹 보안
|
둘리
|
이교수
|
3
|
웹 프로그래밍
|
도우너
|
박교수
|
4
|
웹 해킹
|
또치
|
이교수
|
5
|
웹 보안
|
마이클
|
김교수
|
3) 제3정규화(3NF)
: 제2정규형이 된 상태에서 이행적 함수적 종속 관계 제거하여 비 이행적 함수적 종속 관계를 만족하는 정규형
4) BCNF (Boyce/Codd Normal Form)
: 제3정규형이고, 결정자가 후보키가 아닌 함수 종속 제 거 모든 결정자가 후보키이어야 한다는 것
5)제4정규화(4NF)
: 다치 종속 제거
- 함수적 종속 : 임직원 -> 사번
(1:1 로 대응해야 하므로 하나의 아이디 값이 2개이상의 주민번호 속성을 결정하면 안됨)
-다치 종속 : 교육생 ID -> 수강과목
(1:다 대응으로 생각. 릴레이션에서 아이디 속성이 있고, 수강과목 속성이 있다면 하나의 아이디는 여러개 과목을 수강할 수 있으므로 아이디와 수강과목 속성은 함수적 종 속에서 다치 종속. 이런 다치 종속은 이상이 발생할 수 있으므로 무손실 분해(정규화)되어야 합니다. 이것을 4정 규형이라고 합니다.)
6) 제5정규형 (5NF). : 후보키를 통하지 않은 조인종속(JD) 제거
- 조인 종속 : 릴레이션이 그의 어떤 프로젝션들을 조인 한 결과와 똑같아야 한다

※정규화 특징
1) 현재 테이블이 제3정규화 상태라면 제 1,2 정규화는 자동으로 만족한다.
2) 정규형들은 차수가 높아질수록(제1정규형→제5정규형) 만족시켜야 할 제약조건이 증가된다.
3) 정규화는 논리적 처리 및 품질에 큰 영향을 미친다.
4) 정규화의 목적은 논리적 데이터베이스 구조상에 있어 삽입, 수정, 그리고 삭제 결과 생기는
이상현상(anomaly) 을 제거하는데 있다.
5) 레코드들의 관련 속성들 간의 종속성을 최소화하기 위 한 구성 기법이다 -정규화가 잘못되면 데이터의 불필요한
중복을 야기하여 릴레이션 조작시 문제를 일으킨다.
6) 정규화되지 못한 릴레이션의 조작시 발생하는 이상 (anomaly) 현상의 근본적인 원인은 여러 가지 종류의 원소들이
하나의 릴레이션에 표현되기 때문이다.