본문 바로가기
DB & SQL/데이터베이스 개론

정규화

by k-mozzi 2022. 2. 23.
반응형
Preface

 

이번 장에선 데이터베이스의 정규화란 무엇인지, 또 정규형엔 어떤 종류가 있는지에 대해 공부했다.

 

공부를 하던 도중 문득 소프트웨어 공학에서 정규형에 관한 내용을 봤던 기억이 나 지난 포스팅을 찾아보자

 

자료 흐름 중심 설계와 데이터베이스 설계 장에서 RDB를 간단히 공부했던 것을 알 수 있었다.

 

당시에는 정규형이라는 것을 제대로 이해할 수 없어 단어의 의미와 관련된 링크를 걸어두었는데, DB를 본격적으로 공부하니 막히는 부분 없이 쉽게 이해하며 넘어갈 수 있었다.

 

한 가지 헷갈리는 부분은 보이스/코드 정규형이었는데, 후보키의 의미를 다시 본 후 책을 읽자 제3 정규형과의 차이를 확실히 알 수 있었다.

 

각 릴레이션을 보고 어떤 정규형에 속하는지 바로 알 수 있으려면 상당한 경험이 축적되어야 할 것 같다.


 

1. 정규화의 개념과 이상 현상

 

 

- 이상 현상: 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입, 수정, 삭제 연산을 수행할 때 부작용이 발생하는 현상

→ 이상 현상이 발생하지 않도록 하려면 관련 있는 속성들로만 릴레이션을 구성해야 한다.

 

 

- 정규화: 이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정

→ 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것

 

 

- 함수적 종속성: 정규화 과정에서 고려해야 하는 속성들 간의 관련성

 


 

2. 함수 종속

 

 

- 함수 종속: 어느 시점에서든 릴레이션 내의 모든 튜플에서 하나의 X 값에 대한 Y 값이 항상 하나인 경우

 

 

- 함수 종속 다이어그램: 하나의 릴레이션을 구성하는 속성들 간의 함수 종속 관계를 도식화하여 표현한 것

→ 릴레이션에서 속성 값은 가변적이므로, 속성 자체가 가지고 있는 특성과 의미를 기반으로 판단해야 함

 

 

- 함수 종속의 종류

1) 완전 함수 종속: 릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X 전체에 종속된 것이지 일부분에 종속된 것이 아님을 의미

2) 부분 함수 종속: 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미

 

※ 일반적으로 함수 종속이라 하면 완전 함수 종속을 의미한다.

 


 

3. 기본 정규형과 정규화 과정

 

 

- 정규형(Normal Form): 릴레이션이 정규화된 정도

 

 

- 정규형의 종류


1. 제1 정규형: 릴레이션에 속한 모든 속성의 도메인이 원자 값으로만 구성되어 있는 경우

 

 

2. 제2 정규형: 릴레이션이 제1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되는 경우

1) 분해된 릴레이션들을 자연 조인하여 분해 전의 릴레이션으로 다시 복원할 수 있어야 한다.

2) 무손실 분해: 정보의 손실 없이 릴레이션을 분해하는 것

 

 

3. 제3 정규형: 릴레이션이 제2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않는 경우

1) 함수 종속 관계의 의미가 유지되도록 분해해야 한다.

 

- 이행적 함수 종속: 릴레이션을 구성하는 3개의 속성 집합 X, Y, Z에 대해 함수 종속 관계 X → Y와 Y → Z가 존재하면 논리적으로 X → Z가 성립하는 경우

 

 

 

4. 보이스/코드 정규형(BCNF) : 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 경우

1) 강한 제3 정규형이라고도 한다.

→ 보이스/코드 정규형에 속하는 모든 릴레이션은 제3 정규형에 속하지만, 제3 정규형에 속하는 릴레이션이라고 해서 모두 보이스/코드 정규형에 속하는 것은 아니기 때문 (결정자인데 후보키가 아닌 경우)

 

 

5. 제4 정규형: 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속을 제거하는 경우

1) 다치 종속: 어떠한 조건을 만족하는 투플이 릴레이션 안에 있을 것을 요구

 

 

6. 제5 정규형: 릴레이션이 제4 정규형을 만족하면서 후보키를 통하지 않는 조인 종속을 제거하는 경우

 

 

※ 일반적으로는 제3 정규형이나 보이스/코드 정규형에 속하도록 릴레이션을 분해한다.


 

 

728x90
반응형

'DB & SQL > 데이터베이스 개론' 카테고리의 다른 글

보안과 권한 관리  (0) 2022.02.28
회복과 병행 제어  (0) 2022.02.24
데이터베이스 설계  (0) 2022.02.21
데이터베이스 언어 SQL  (0) 2022.02.17
관계 데이터 연산  (0) 2022.02.13

댓글