프로그래밍/DB

정규화에 대해서

Baesj 2021. 10. 8. 16:33

정규화의 배경

한 릴레이션(테이블)에 여러 엔티티(정보를 저장하고 관리하기 위한 집합적인 것)의 애트리뷰트(칼럼)들이 혼합하게 되면 정보가 중복 저장되며, 저장공간이 낭비하게 된다.

중복된 정보로 인해 이상 현상(Anomaly)이 발생하게 된다

 

갱신 이상

 - 삽입 이상 : 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는것이 불가능하다

 - 삭제 이상 : 필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제하는 것이 불가능하다

 - 갱신 이상 : 반복된 데이터 중에 일부를 갱실 할 시 데이터의 불일치가 발생한다

 

정규화 작업

정규화 작업이란 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업이다

 - 제 1 정규화

 : 속성의 도메인이 오직 원자값만을 포함

 - 제 2 정규화

 : 부분적 함수 종속을 제거 (기본키가 아닌 다른 속성에 종속되거나 기본키를 구성하는 속성 주 일부만 종속)

 - 제 3 정규화

 : 이행적 함수 종속을 제거 (X -> Y, Y -> Z, X -> Z 가 성립 할 때)

 

정규화 장점

1. 이상현상(Anomaly)을 해결할 수 있다

2. 데이터의 중복을 최소화 할 수 있다.

 

정규화 단점

1. 테이블의 분해로 인해 JOIN 연산이 많아진다.

 

반정규화

JOIN으로 인한 성능저하가 나타나는 경우 반정규화를 하는 전략이 필요하다

반정규화를 과도하게 적용하다 보면 데이터의 무결성이 깨질 수 있으므로 주의가 필요하다

'프로그래밍 > DB' 카테고리의 다른 글

관계  (0) 2021.09.15
DDL과 DML, DCL, TCL  (0) 2021.09.14
인덱스(Index)  (0) 2021.09.14
정규화(Normalization)와 반정규화(De-Normalization)  (0) 2021.09.09
트랜잭션 이해 2 - 격리, 단계, 수준  (0) 2021.09.07