1. 정규화(Normalization)
정규화란 논리적 데이터 모델링 단계에서 데이터의 중복과 종속으로 인한 이상 현상(anomaly)을 방지하기 위해, 속성들 간의 종속 관계를 분석하여 무결성을 유지하면서 다수의 릴레이션으로 분리하는 과정을 말합니다. 장점으로는 이상의 발생 가능성을 줄이지만, 연산 시간이 증가한다는 단점이 있습니다.
정규화를 통해 분해된 결과를 정규형이라 하며, 이 정규형의 종류는 제1정규형, 제2정규형, 제3정규형, BCNF, 제4정규형, 제5정규형 등이 있습니다. 이 정규형들은 차수가 높아질 수록 제약조건이 증가된다는 특징을 갖춥니다.
1) 제1정규형(1NF, First Noraml Form)
한 릴레이션을 구성하는 모든 도메인이 원자값으로 된 정규형입니다.
2) 제2정규형(2NF, Second Normal Form)
제1정규형을 만족하면서 릴레이션에 존재하는 부분 함수적 종속을 제거하여, 모든 속성이 기본키에 완전 함수 종속이 되도록 만들어진 정규형입니다.
3) 제3정규형(3NF, Third Normal Form)
제2정규형을 만족하면서 릴레이션을 구성하는 속성들 간의 이행적 종속관계를 분해하여 속성들이 비이행적 함수 종속관계를 만족하도록 만들어진 정규형입니다.
4) 보이스-코드(BCNF, Boyce-Codd Normal Form)
제3정규형을 만족하면서 릴레이션의 모든 결정자가 후보키가 되도록 하는 정규형입니다.
5) 제4정규형(4NF, Fourth Normal Form)
BCNF를 만족하면서 릴레이션에서 다치 종속 관계를 제거한 정규형입니다.
※다치 종속(MVD, Multival Dependency): 두 속성이 1:다 대응이 되는 경우입니다.
[예시] 예를들어 '학번'과 '수강과목' 속성이 있다면, 한 학생은 여러 과목을 수강할 수 있는 경우 하나의 '학번'은 여러개의 '수강과목'에 대응하므로 다치 종속 관계입니다.
6) 제5정규형(5NF, Fifth Normal Form)
후보키를 통하지 않은 조인종속(Join Dependency)을 제거한 정규형입니다.
2. 역정규화(DeNormalization)
역정규화란 정규화를 통해 분리되었던 릴레이션에서 중복을 허용하고 다시 통합하거나 분할하여 구조를 재조정하는 과정입니다. 정규화된 릴레이션은 하나의 릴레이션을 분해하기 때문에 원하는 자료가 하나의 릴레이션에 존재하지 않아 외래키를 이용해 참조해야하는 상황이 잦아집니다. 이는 데이터베이스에 저장된 자료를 검색하는 시간을 증가시키며 성능을 저하시킬 수 있습니다. 따라서 데이터베이스의 물리적 설계 과정에서 성능을 향상시키기 위해 역정규화를 실행합니다. 역정규화의 종류로는 릴레이션 역정규화, 속성 역정규화가 있습니다.
1) 릴레이션 역정규화: 릴레이션의 역정규화에는 릴레이션을 병합하는 방법과 분할하는 방법이 있습니다.
- 릴레이션 병합: 두 릴레이션 간의 잦은 참조로 성능이 저하될 경우 이 문제점을 해결하기 위해 병합합니다.
- 릴레이션 분할: 릴레이션의 데이터를 검색할때는 목록중의 데이터를 순차적으로 조사하여 원하는 자료를 찾습니다. 그래서 자주 사용하지 않는 속성이나 튜플이 릴레이션에 있을 경우 검색시 성능을 저하하게 만듭니다. 이 경우에는 자주 사용하는 속성이나 튜플을 분해하여 성능을 향상시킵니다. 이 분할에는 수직 분할(자주 사용하는 속성과 그렇지 않는 속성을 구분해서 분할)과 수평 분할(자주 사용하는 튜플과 그렇지 않는 튜플을 구분해서 분할)이 있습니다.
2) 속성 역정규화: 릴레이션의 성능을 향상시키기 위해 속성 또는 파생속성을 추가합니다.
※파생 속성(Delivered Attribute): 현재 릴레이션에는 없는 속성이지만 작업의 효율을 위해 힌 속성으로부터의 계산이나 가공에 의해 파생되는 속성입니다.
'데이터베이스' 카테고리의 다른 글
13. 트랜잭션(Transaction) (0) | 2018.04.08 |
---|---|
12. 데이터베이스 순차접근(Full Table Scan)과 인덱스(Index) (1) | 2018.04.07 |
10. 함수적 종속(Functional Dependency) (6) | 2018.04.05 |
9. 데이터베이스 이상(Abnormal) (1) | 2018.04.05 |
8. 데이터베이스 키(Key)와 무결성 제약조건(Integrity Constraint) (0) | 2018.04.04 |