[데이터베이스 이론] 정규화 Normalization (1,2,3 정규화)

2022. 2. 27.공부/데이터베이스

728x90

 

관계형 데이터베이스는 정규화(Normalization) 이론을 활용하여 데이터 이상 현상을 제거하고, 데이터 중복을 최소화하여 보다 구조적으로 설계하는 프로세스를 거쳐 데이터를 관리한다. 정규화는 DB 설계의 핵심 개념이며, 정규형(Normal Form)란 특정 조건에 만족하는 릴레이션 스키마의 형태를 의미한다. 기본 정규형에는 1NF, 2NF, 3NF, BCNF가 있고 고급 정규형에는 4NF, 5NF가 있다. 논리 데이터 모델링 단계 중 가장 중요한 파트로, 이 정규화를 통해 데이터베이스의 품질 및 성능이 향상된다.

 

 

1NF 전 비정규화 테이블

 

회원 번호 이름 나이 취미
1 김자바 25 독서, 요리
2 박스프링 26 게임, 영화
3 이쿼리 30 봉사, 산책
4 최프로세싱 22 수영
5 김아두이노 28 축구

 

 

 

1차 정규화 조건

 

" 각 속성마다 하나의 값만이 존재해야 한다. "

 

회원 번호 이름 나이 취미
1 김자바 25 독서
1 김자바 25 요리
2 박스프링 26 게임
2 박스프링 26 영화
3 이쿼리 30 봉사
3 이쿼리 30 산책
4 최프로세싱 22 수영
5 김아두이노 28 축구

 

- 어떤 Relation에 속한 모든 Domain이 원자값(Atomic Value)으로만 되어 있다.

- 모든 Attribute에 반복되는 그룹이 나타나지 않는다. (ex. 취미 1열, 취미 2열로 나누어 데이터 적재 = 반복 그룹 형성)

- 기본 키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다. 어떤 것을 PRIMARY KEY로 사용해야할지? 어떤 상황이 와도 겹치지 않는 것. 예를 들어 위 테이블에서 이름과 나이 취미 구매 도서, 도서 단가는 겹칠 수 있지만, 회원 번호는 겹치지 않는 속성이므로 회원 번호를 PRIMARY KEY로 사용한다.

 


 

2NF 전 비정규화 테이블

 

학생 번호 이름 강좌 이름 강의실
1000001 김자바 정보처리기사 125호
1000001 김자바 빅데이터 130호
1000002 박스프링 빅데이터 130호
1000003 이쿼리 빅데이터 130호
1000004 최프로세싱 웹 개발 100호
1000005 김아두이노 웹 개발 100호

부분 종속이 발생

  • 학생 번호 -> 이름 
  • 학생 번호 > 강좌 이름
  • 강좌 이름 -> 강의실 (강의실은 학생 번호에 종속되지 않으며, 강좌 이름에만 종속 = 부분 종속)

 

 

2차 정규화 조건

 

" 부분 종속성의 제거 "

 

1.

학생 번호 이름 강좌 이름
1000001 김자바 정보처리기사
1000001 김자바 빅데이터
1000002 박스프링 빅데이터
1000003 이쿼리 빅데이터
1000004 최프로세싱 웹 개발
1000005 김아두이노 웹 개발

★ 학생 번호 -> 이름, 학생 번호 > 강좌 이름으로 완전 함수 종속

 

2.

강좌 이름 강의실
정보처리기사 125호
빅데이터 130호
웹 개발 100호

강좌 이름 -> 강의실로 완전 함수 종속

 


 

3NF 비정규화 테이블

 

학생 번호 강좌 이름 강의실
1000001 정보처리기사 125호
1000002 빅데이터 130호
1000003 빅데이터 130호
1000004 웹 개발 100호
1000005 웹 개발 100호

이행적 종속이 발생

 

  • 학생 번호 -> 강좌 이름 : A -> B 성립
  • 강좌 이름 -> 강의실 : B -> C 성립
  • 학생 번호 -> 강좌 이름 -> 강의실 : A -> B -> C 성립 (이행적 종속 발생)

 

 

 

3차 정규화 조건

 

" 이행 종속성의 제거 "

1.

학생 번호 강좌 이름
1000001 정보처리기사
1000002 빅데이터
1000003 빅데이터
1000004 웹 개발
1000005 웹 개발

★ 학생 번호를 통해 강좌 이름을 참조 ( A -> B )

 

2.

강좌 이름 강의실
정보처리기사 125호
빅데이터 130호
웹 개발 100호

★ 강좌 이름으로 강의실을 참조 ( B -> C )

 

정규화의 장점과 단점
장점
- 사용자의 의도와는 상관없이 데이터가 삽입, 삭제, 갱신되는 이상 현상을 방지할 수 있음
- 정규화의 수준이 높을수록, 유연한 데이터의 구축이 가능하며 데이터의 정확성이 높아진다. 
- 중복 최소화, 저장 공간 최소화, 정보 일관성 보장,무결성 유지 극대화, 안전성 최소화
단점
그러나 물리적 접근이 복잡하고 길이가 짧은 데이터 생성으로 과도한 조인이 발생하기도 한다. 

 

 

 

 

'공부 > 데이터베이스' 카테고리의 다른 글

[Oracle] 맥에서 cx_Oracle 설치  (0) 2022.08.14