본문 바로가기

Database/Theory

#02. 이상(Anomaly)현상과 정규화(Normalization)

이상(Anomaly)

하나의 릴레이션에 많은 속성들이 존재함으로 인해 중복/종속으로 발생하는 문제점

-삭제이상(Deletion Anomaly): 하나의 자료만 삭제하고 싶지만, 그 자료가 

포함된 튜플 전체가 삭제됨으로인해 원하지 않는 정보가 손실되는 문제점

-삽입이상(Insertion Anomaly): 원하지 않는 자료가 삽입된다든지, 삽입하

 는데 자료가부족해 삽입이 되지 않아 발생   

 하는 문제점

-갱신이상(Update Anomaly):   정확하지 않거나 일부의 튜플만 갱신됨으로 

 인해 정보가 모호해지거나 일관성이 없어져 

 정확한 정보가 파악되지 않는 문제점


함수적 종속(Functional Dependency)

A의 값을 알면 B의 값을 알수있거나 A의 값에 따라 B의 값이 달라진다면 B는 A에 함수적 종속(A → B)(A를 결정자, B를 종속자 라고한다)

완전함수종속(Full Functional Dependency)

한 속성이 오직 기본키에만 종속

부분함수종속(Partial Functional Dependency)

한 속성이 기본키가 아닌 다른 속성에 종속 되거나 기본키가 2개이상의 합성키일경우 이중 일부 속성에 종속

이행적함수종속(Transitive Functional Dependency)

세가지 종속간의 종속이 (A → B) & (B → C) 일경우 A → C가 성립되는 종속


다치종속(MVD: Multivalued Dependency)

하나의 속성값과 어러개의 속성값이 종속된 관계(A → B, A → C)


조인종속(Join Dependency)

원래의 릴레이션을 분해한뒤 자연조인한 결과가 원래의 릴레이션과 같은 결과가 나오는 종속성


정규화(Normalization)

이상(Anomaly)현상의 문제점을 해결하기위해 속성들간의 종속관계를 분석후 여러개의 릴레이션으로 분해하는 과정


제1정규형 

모든 도메인이 원자값만으로 구성되도록하는 과정

제2정규형

1정규형을 만족하며, 모든속성이 기본키에 완전함수종속되도록 분해하는 과정

제3정규형

2정규형을 만족하며, 속성들간에 비이행적함수종속 되도록 분해하는 과정

BCNF

3정규형을 만족하며, 모든종속의 결정자가 후보키가 되도록하는 과정

제4정규형

다치종속관계가 성립되는경우 분해하는 과정

제5정규형

조인종속이 후보키를 통해서만 성립되도록하는 과정


정규화진행과정

제1정규형: 모든 도메인이 원자값이 되도록분해

제2정규형: 부분함수종속 관계 제거

제3정규형: 이행적함수종속 관계 제거

BCNF:       후보키가 아닌 결정자 제거

제4정규형: 다치종속 관계 제거

제5정규형: 후보키를 통하지않는 조인종속 제거


역정규화(비정규화, 반정규화: Denormalization)

정규화된 릴레이션은 외래키를 이용해 자주 참조하는현상이 발생. 이러한 현상은 자료를 검색하는 과정에서 성능저하를 가져올수 있기때문에 물리적데이터모델링 과정에서 성능을 향상시키기위해 중복을 허용하더라도다시 통합하거나 분할하여 구조를 재조정하는것


릴레이션 역정규화: 두 릴레이션을 합하거나 하나의 릴레이션을 분할하는 방법

수직분할: 속성기준으로 분할

수평분할: 튜플기분으로 분할

속성 역정규화: 성능향상을 위해 속성단위를 추가/생성하는것

속성추가: A의 외래키로 B의 특정속성값을 자주 참조할경우, B의 

  특정속성값을 A릴레이션에 추가하는방법

파행속성추가: 파생속성을 추가하여 성능향상

*파생속성: 한 속성으로부터 계산이나 기타가공에 

의해 파생되는속성