PLOD

[DB] Normalization(정규화) 본문

카테고리 없음

[DB] Normalization(정규화)

훌룽이 2022. 10. 29. 10:30

- 좋은 디자인 조건


1)  속성간의 관계가 명확

 

2)  데이터 베이스 중복 해결

 

3) 데이터베이스 무결성 확립

 

-Anomaly(이상) 

 

1)insertion Anomaly(삽입이상) : 데이터 삽입 시 의도와 다른 값들도 삽입됨

 

2)Deletion Anomaly(삭제이상) : 데이터 삭제 시 의도와 다른 값들도 연쇄 삭제

 

3)Update Anomaly(갱신이상) : 속성값 갱신 시 일부 튜플만 갱신되어 모순 발생

 

-> 원인은 redundancy(중복) 때문 해결책은 decomposition(분해 : 정규화)이다 .

 

 

-정규화 : 관계형 데이터 베이스의 설게에서 중복(redundancy)를 최소화(minimize) 하게 데이터를 구조화 하는 프로세스

 

 

-Decomposition


ex) 학생 엔티티를 학생 엔티티와 학과 엔티티로 분해 

 

학생(학번, 이름, 학과, 학과장, 학과전화, 학년)
=> 학생(학번, 이름, 학년, 학과)
학과(학과, 학과장, 학과전화)

 

 

-lossless-join Decomposition 

R = (A, B, C)
F = {A → B, B → C)

-> R1 = (A, B), R2 = (B, C)  = > Dependency preserving (의존성 유지)

 

* 정규화 

정규화의 기본 목표는 테이블 간의 중복된 데이터를 허용하지 않는 것이다(개체 무결성) , 정규화를 함으로써 무결성을 유지할 수 있고 DB의 저장 용량 역시 줄일 수 있다. 효과적인 검색 알고리즘을 생성 할 수 있고 여러가지 이상현상(삽입,삭제,갱신)을 막을 수 있다.

 

[1NF]

테이블의 컬럼이 원자 값을 갖도록 테이블을 분해하는 것이다. 즉 , 하나의 속성이 복수개의 값을 갖도록 설계되어 있을 때

하나의 속성이 단일값(automic value)을 갖도록 변경하는 과정


[2NF]

테이블의 대해 완전 함수 종속을 만족하도록 분해하는 것 (기본키의 부분집합이 결정자가 되어선 안된다),  주식별자가 아닌 속성 중에서 주 식별자가 아닌 일부 속성에 종속된 속성을 찾아 제거하는 과정

 

 

[3NF]

테이블에 대해 이행적 종속을 없애는 것 (A->B , B->C   ==>   A->C), 주식별자가 아닌 속성들 중 종속관계에 있는 속성을 찾아 제거하는 과정

Lossless Decomposition(무손실 분해) & Dependency preserving(의존성 유지) 가능 but , Data Redundancy(데이터 중복)가 존재하여 Anomaly가 생길 수 있다

 

[BCNF]

테아블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것

Lossless decomposition 가능 and Data Redundancy가 없다  but Dependency Preserving이 불가능 할 수 있다

 

- relational data design 목표

 

1) BCNF


2)dependency preserving

 

3) lossless join

 

참고 :

데이터베이스 정규화 - IT위키 (itwiki.kr)

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

[Database] 정규화(Normalization) 쉽게 이해하기 - MangKyu's Diary (tistory.com)

 

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

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

mangkyu.tistory.com

 

Comments