정규화란? [ DB ]

2023. 8. 6. 03:57지식&개념

정규화란?

 

정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다.

이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 

이를 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다.

 

기본적인 목표는 테이블간에 중복된 데이터를 허용하지 않는 것 이다.

이를 통해 무결성을 유지할 수 있으며 DB 의 저장 용량도 줄일 수 있다.

 


장점

 

- 데이터베이스 변경 시 이상 현상을 제거할 수 있다.

- 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.

- 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 미치게 되어 응용 프로그램의 생명을 연장시킨다.

 

 

단점

 

- 릴레이션의 분해로 인해 릴레이션 간의 JOIN 연산이 많아진다.

- 질의에 대한 응답 시간이 느려질 수도 있다. 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.

- 만약 조인이 많이 발생하여 성능 저하가 나타나면 반정규화를 적용할 수도 있다.

 


이상현상이란?

 

- 삽입 이상 : 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL 을 입력해야 하는 현상

 

- 삭제 이상 : 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상

 

- 갱신 이상 : 튜플 갱신 시 중복된 데이터의 일부만 갱신되어 일어나는 데이터 불일치 현상

 


제 1 정규형 (1NF)

 

1. 각 컬럼이 하나의 속성만을 가져야 한다.

2. 하나의 컬럼은 같은 종류나 타입의 값을 가져야 한다.

3. 각 컬럼이 유일한 이름을 가져야 한다.

4. 컬럼의 순서가 상관없어야 한다.

 

 


제 2 정규형 (2NF)

 

1. 제 1 정규형을 만족해야한다.

2. 모든 컬럼이 부분적 종속이 없어야 한다. ( 모든 컬럼이 완전 함수 종속을 만족해야 한다. )

 

부분적 종속이란 기본키 중에 특정 컬럼에만 종속되는 것이다.

 

완전 함수 종속이라는 것은 기본키의 부분집합이 결정자가 되어서는 안된다는 것을 의미한다.

 

 


제 3 정규형 (3NF)

 

1. 제 2 정규형을 만족해야한다.

2. 기본키를 제외한 속성들 간의 이행 종속성이 없어야한다.

 

이행 종속성이란 A -> B, B -> C 일 때 A -> C 가 성립하면 이행 종속이라고 한다.

 

제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것이다.

 

 


BCNF

 

1. 제 3 정규형을 만족해야 한다.

2. 모든 결정자가 후보키 집합에 속해야 한다.

 

모든 결정자가 후보키 집합에 속해야 한다는 뜻은, 후보키 집합에 없는 컬럼이 결정자가 되어서는 안된다는 뜻이다.

 

제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것이다. 

 

 

 


제 4 정규형 (4NF)

 

1. BCNF 를 만족해야 한다.

2. 다치 종속이 없어야 한다.

 

A -> B 일때 하나의 A 값에 여러 개의 B 값이 존재하면 다치 종속성을 가진다고 하고 A ->> B 라고 표시한다.

 

최소 3개의 컬럼이 존재한다.

 

R(A, B, C) 가 있을 때 A 와 B 사이에 다치 종속성이 있을 때 B 와 C 가 독립적이다.

 


제 5 정규형 (5NF)

 

제 5 정규형은 중복을 제거하기 위해 분해할 수 있을 만큼 전부 분해하는 것이다. (PJNF 라고도 불림)

 

1. 4NF 를 만족해야 한다.

2. 조인 종속이 없어야 한다.

3. 조인 연산을 했을 때 손실이 없어야 한다.

 

조인 종속은 다치 종속의 좀 더 일반화된 형태이다.

만약 하나의 릴레이션을 여러 개의 릴레이션으로 무손실 분해했다가 다시 결합할 수 있다면 조인 종속이라고 한다.

 

 

일반적으로 현실의 데이터베이스에서는 제 5 정규형을 사용하지 않는다.

 


 

참고 링크

 

https://code-lab1.tistory.com/47

 

[DB] 이상현상(anomaly), 함수 종속성(Functional Dependency)이란?

이상현상이란? 삽입 이상(Insertion Anomaly) : 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상 삭제 이상(Deletion Anomaly) : 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로

code-lab1.tistory.com

https://code-lab1.tistory.com/270

 

[DB] 제 4정규형과 제 5정규형, 4NF와 5NF

정규화란? 정규화는 이상현상(Anomaly)이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계별로

code-lab1.tistory.com

https://mangkyu.tistory.com/110

 

[Database] 정규화(Normalization) 쉽게 이해하기

지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz

mangkyu.tistory.com

https://www.studytonight.com/dbms/fifth-normal-form.php

 

5th Normal Form (5NF) and Mutli-valued Dependency in Database Normalization | Studytonight

Fifth Normal Form (5NF) Fifth Normal Form in Database Normalization is generally not implemented in real life database design. But you should know what it it. Let's cover the concept of Fifth Normal Form. In the video below we have explained it in details.

www.studytonight.com

 

'지식&개념' 카테고리의 다른 글

[클라우드 용어] 클라우드(Cloud)  (0) 2023.10.17
[클라우드 용어] 온프레미스(on-premise)  (0) 2023.10.16
Isolation level  (0) 2023.08.21
IoC, DI [Nest.js]  (0) 2023.08.13
CI/CD  (0) 2023.07.16