2024. 2. 17. 19:59ㆍcs및 소프트스킬/데이터베이스
1. 정규화(Normaliztion)
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
2. 정규화 목적
- 최대한 중복을 제거하여 삽입, 속성, 갱신 이상의 발생 가능성 줄이는 것
3. 정규화 종류
- 제 1정규화(1NF) / 제 2정규화(2NF) / 제 3정규화(3NF) / BCNF / 제 4정규화(4NF) / 제 5정규화
4. 제 1정규화(1NF)
- 해당 테이블에 속한 모든 소성의 도메인(Domain)이 원자 값(Atomic Value)만으로 되어 있는 정규형
- 테이블의 모든 속성 값이 원자 값으로만 되어 있음
5. 제 2정규화(2NF)
- 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
6. 제 3정규화(3NF)
- 기본키가 아닌 모든 속성이 기본키에 대하여 이행적 함수적 종속을 만족하지 않는 정규형
- 이행적 함수적 종속 약어 : Transitive Functional Dependency
7. BCNF(Boyce-Codd Normal Form)
- 해당 테이블에서 모든 결정자가 후보키(Candidate Key)인 정규형
- 보통 제 3정규형에 후보키가 여러개 존재하고, 이러한 후보키들이 서로 중첩되어 나타나는 경우 적용 가능
8. 제 4정규화(4NF)
- 해당 테이블에 다중 값 종속(MVD; Multi Valued Dependency) A → B가 존재할 경우 해당 테이블의 모든 속성에 A에 함수적 종속 관계를 만족하는 정규화
- 다중 값 종속(다치 종속) : 테이블 A, B, C 3개의 속성을 갖춘경우, 복합속성(A,C)에 대응하는 B값의 집합이 A값에만 종속되고, C값에 무관 시 B는 A에 다중 값 종속, A → B로 표기
9. 제 5정규화(5NF)
- 해당 테이블의 모든 조인 종속(JD; Join depencency)가 해당 테이블 후보키를 통해서만 성립되는 정규형
- 조인 종속 : 해당 테이블 속성 부분 집합(X, Y, Z) 있을 경우, 자신의 프로젝션(Projection) X, Y, Z 모두 조인한 결과와 동일 시 해당 테이블은 조인 종속(JD(X,Y,Z))를 만족시킴
10. 정규화 과정 간단 정리
- 비정규 릴레이션
- 1NF : 도메인이 원자값 상태
- 2NF : 부분적 함수 종속 제거 상태
- 3NF : 이행적 함수 종속 제거 상태
- BCNF : 결정자이면서 후보키가 아닌 것 제거 상태
- 4NF : 다치 종속 제거 상태
- 5NF : 조인 종속성 이용 상태
11. 반정규화(Denormalization)
- 정규화된 데이터 모델을 의도적으로 통합/중복/분리하여 정규화 원칙을 위배하는 행위
=> 시스템의 성능을 향상 및 개발/운영의 편의성 등 높이기 위함
- 장점 : 1) 시스템 성능 향상, 2) 관리 효율성 증가
- 단점 : 1) 데이터의 일관성 및 정합성 저하, 2) 과도한 반정규화는 오히려 성능 저하
- 종류 : 1) 테이블 통합 / 2) 테이블 분할 / 3) 중복 테이블 추가 / 4) 중복 속성 추가
12. 중복 테이블 추가
- 반 정규화 기법 중 하나
- 작업의 효율성을 향상 시키기 위해 테이블 추가
- 방법
1) 집계 테이블의 추가 : 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거(Trigger)를 설정하여 사용하는 것
2) 진행 테이블의 추가 : 이력 관리 등의 목적으로 추가하는 테이블
3) 특정 부분만을 포함하는 테이블의 추가 : 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성
13. 테이블 분할
- 반 정규화 기법 중 하나, 테이블을 수직 or 수평으로 분할 기법
- 수평분할(Horizontal Partitioning) : 레코드별로 사용 빈도의 차이가 클때, 사용 빈도에 따라 테이블을 분할
- 수직분할(Vertical Partitioning) : 하나의 테이블에 속성이 너무 많을 때, 속성을 기준으로 테이블 분할
14. 테이블 통합
- 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우, 두 개의 테이블을 이용해 항상 조회를 수행하는 경우 테이블 통합을 고려
'cs및 소프트스킬 > 데이터베이스' 카테고리의 다른 글
[DB] 9. DDL / DML / DCL 의 개요 및 트리거(Trigger) 란? (0) | 2024.02.17 |
---|---|
[DB] 8. 트랜잭션, 시스템카탈로그, CRUD 분석, 인덱스, 뷰 (0) | 2024.02.17 |
[DB] 6. 이상과 함수적 종속 (0) | 2024.02.14 |
[DB] 5. 관계대수, 관계해석 (0) | 2024.02.14 |
[DB] 4. 데이터베이스 Key의 개념과 종류, 무결성이란? (1) | 2024.02.12 |