데이터베이스의 정규화(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) 현상의 근본적인 원인은 여러 가지 종류의 원소들이
하나의 릴레이션에 표현되기 때문이다.
'데이터베이스' 카테고리의 다른 글
Oracle Rman 에 대해 알아보도록 하겠습니다. (0) | 2023.10.03 |
---|---|
Mysql 설정 할 때 사용되는 my.cnf 에 대해 알아보겠습니다. (0) | 2023.09.29 |
DDL, DML, DCL 에 대해 알아보겠습니다. (0) | 2022.12.04 |
데이터베이스란 무엇일까요? (1) | 2022.12.02 |
데이터베이스 기본 보안가이드#1 (0) | 2022.11.29 |