티스토리 뷰

책/데이터베이스개론

9. 정규화

안양사람 2020. 12. 7. 19:10
728x90
SMALL

정규화의 개념과 이상 현상

8장에서는 관계 데이터 모델에 기반을 두고 데이터베이스를 설계하는 방법 중 E-R 모델과 릴레이션 변환 규칙을 이용하는 방법을 살펴보았다. 이 장에서는 정규화normalization를 이용해 데이터베이스를 설계하는 방법에 대해 소개한다. 정규화는 설계한 후 설계 결과물을 검증하기 위해 사용하기도 한다. 앞에서도 언급했듯이, 두 설계 방법은 데이터베이스 설계 결과물이 비슷한 수준을 유지하므로 상황에 따라 적절한 방법을 선택하면 된다.

데이터베이스를 잘못 설계하면 부작용(이상anomaly 현상)이 발생한다.

이상 현상의 종류

삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제

갱신 이상 : 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제

삭제 이상 : 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

정규화의 필요성

릴레이션에 여러 이상 현상이 발생하는 이유는 무엇일까? 관련이 없는 데이터, 즉 관련 없는 속성들을 하나의 릴레이션에 모아두고 있기 때문이다. 이상현상이 발생하지 않도록 하려면, 관련 있는 속성들로만 릴레이션을 구성해야 하는데 이를 위해 필요한 것이 정규화다. 정규화는 이상 현상이 발생하지 않도록, 릴레이션을 관련이 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이다. 정규화를 통해 릴레이션 설계를 올바르게 완성할 수 있다.

정규화를 수행하려면 먼저 릴레이션을 구성하는 속성들 간의 관련성을 판단할 수 있어야 한다. 정규화 과정에서 고려해야 하는 속성들 간의 관련성을 함수적 종속성이라고 한다. 일반적으로 함수적 종속성이 하나 존재하도록 정규화를 통해 릴레이션을 분해한다.

함수 종속

하나의 릴레이션을 구성하는 속성들의 부분 집합을 X와 Y라 할 때, 어느 시점에서든 릴레이션 내의 모든 투플에서 하나의 X 값에 대한 Y 값이 항상 하나면 "X가 Y를 함수적으로 결정한다" 또는 "Y가 X에 함수적으로 종속되어 있다'라고 한다.

X->Y  ;   X : 결정자, Y : 종속자

완전 함수 종속FFD: Full Functional Dependency은 릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X 전체에 종속된 것이지 일부분에 종속된 것이 아님을 의미한다.

부분 함수 종속PFD: Partial Functional Dependency은 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미하므로, 부분 함수 종속 관계가 성릷하려면 결정자가 여러 개의 속성들로 구성되어 있어야 한다.

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

기본 정규형과 정규화 과정

 

 

제1정규형(1NF 또는 최소형)은 데이터베이스 정규화에서 사용하는 정규형중 하나이다. 관계형 데이터베이스의 테이블이 1NF이면 최소한 테이블은 관계이며, 중복되는 항목이 없어야 한다이다. 컬럼에는 두개 이상의 값이 들어갈 수 없다

제2 정규형(2NF)는 데이터베이스 정규화에서 사용하는 정규형중 하나이다. 제 1 정규형(1NF)인 테이블이 제2 정규형을 충족시키는 필요충분조건은 다음과 같다: 후보 키 K와 K에 속하지 않는 속성 A가 있을 때, A를 결정하기 위해 K의 일부가 아닌 K 전체를 참조해야만 하는 경우 1NF 테이블은 2NF이다.

약간 어려운(정확한) 정의로 얘기하자면 : 모든 비기본 속성(non-prime attribute; 후보 키에 속하지 않은 속성)들이 후보 키에 속한 속성들 전체에 함수 종속인 경우에 한해서 1NF 테이블은 2NF이다.

1NF 테이블은 복합 후보 키(한 개 이상의 속성들로 구성된 후보 키)가 없으면 자동으로 2NF이다.

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

속성 집합 Z가 속성 집합 X에 이행적으로 함수 종속되었다 : X->Y, Y->Z이면 X->Z 이다.

보이스/코드 정규형BCNF(Boyce/Codd Normal Form) : 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.

고급 정규형으로 분류되는 제4 정규형은 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속을 제거해야 만족할 수 있다.

제5 정규형은 릴레이션이 제4정규형을 만족하면서 후보키를 통하지 않는 조인 종속을 제거해야 만족할 수 있다.

일반적으로 제3정규형이나 보이스/코드 정규형에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상 현상이 발생하는 문제를 해결한다.

 

 

 

 

 

mysql 정규화1(이상현상, 함수적 종속성)

mysql은 쪼개서 관리하고 join을 쓰는게 기본이라고 들었을 것입니다. 들어보지 못했다고 해도 상관없습니다. 그런의미에서 정규화에 대해 알아보겠습니다. 정규화 관계형 데이터베이스의 설계에

ms3864.tistory.com

ms3864.tistory.com/107?category=905196

 

mysql 정규화2

정규화가 무엇인지 정규화가 왜 필요한지 이상현상, 함수적 종속성을 모른다면 전 글을 보고 와주세요 https://ms3864.tistory.com/106 mysql 정규화1(이상현상, 함수적 종속성) mysql은 쪼개서 관리하고 join

ms3864.tistory.com

 

728x90
LIST

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

11. 보안과 권한 관리  (0) 2020.12.10
10. 회복과 병행 제어  (0) 2020.12.07
8. 데이터베이스 설계  (5) 2020.12.06
7. 데이터베이스 언어 SQL  (0) 2020.12.05
6. 관계 데이터 연산  (0) 2020.12.04
댓글
공지사항