정규화 Flashcards
정규화
[리드] Anomaly 현상 제거위한 무손실 분해
[정의] 데이터의 Anomaly를 제거하기 위해 함수적 종속성, 조인 속성을 활용 분리/통합 과정
[목적] 데이터의 중복 최소화, 이상현상(Anomaly) 발생 방지, 데이터 구조의 안정성 유지, 종속성 제거
[정규화 3원칙] (무중분)
1. 정보의 무손실(분해 전후 동일), 2.중복 제거(이상 현상 방지), 3. 분리의 원칙(연속 속성(종속성) 그룹화)
[방법] (중-완부이결다조)
1. 1NF : 중복(반복) 제거
2. 2NF : 완전/부분함수 종속성 제거
3. 3NF : 이행함수 종속성 제거, 의존자에 FD 관계가 있다면 Table 분리
4. BCNF : 결정자함수 종속성 제거, 결정자에 FD 관계가 있다면 Table 분리
5. 4NF : 다중값 종속성 제거, 다치 종속(MVD) 속성 Table 분리
6. 5NF : 조인 종속(FD) 제거
* 정규화로 인한 조회 성능 감소와 데이터 관리의 어려움으로 인하여 역정규화 수행
반정규화
[정의] 성능 향상과 개발/운영 단순화를 위해 중복/통합/분리등을 수행하는 데이터 모델링 기법
[필요성] 검색 성능 향상, 개발 편의성 향상, 모델링 이해 용이
[프로세스] 대다반
1. 반정규화 대상 조사 : 범위처리 빈도수 조사, 대량의 범위처리 조사, 통계성 프로세스 조사, 테이블 조인 개수
2. 다른 방법 유도 검토 : 뷰 테이블, 클러스터링, 인덱스 조정, 응용어플리케이션
3. 반정규화 적용 : 테이블, 속성, 관계 반정규화
[주요기법] (테병분추 컬중이파 관중)
1. 테이블 반정규화 : 테이블 병합(1:1, 1:M, 슈퍼/서브타입), 테이블 분할(수직, 수평 분할), 테이블 추가(중복, 통계, 이력, 부분테이블) –> Partitioning, Clustering
2. 컬럼 반정규화 : 중복컬럼(Join 성능 향상), 파생컬럼(계산된 값 컬럼 추가), 이력컬럼(날짜, 최신값)
3. 관계 반정규화: 중복관계 추가(조인경로 단순화, 조인관계가 많을 때 관계 추가 통해 성능 향상)
[차별화] 반정규화 적용 시 고려사항
- 정규화가 수행된 상태에서 반정규화 적용
- 반정규화는 성능개선을 위한 마지막 수단으로 사용
- 테이블, 속성중복시 Application에서의 무결성 확보 방안 필요
- SQL문이 복잡해지는 경향이 있어 가독성 및 유지보수성에 주의 필요
함수적 종속성
[리드] 데이터 일관성 보장의 이해, 함수적 종속성
[정의] 테이터 애트리뷰트들의 의미와 애트리뷰트들 간의 상호관계로부터 유도 되는 제약조건
* 결정자(X)와 종속자(Y)의 릴레이션 R에서 X값에 반드시 하나의 Y값만 대응되는 관계
[원리] 암스트롱 공리
[유형] (완부이결다조)
1. 완전 함수 종속성 - XY→Z에서, X→Z, Y→Z 모두 미성립, 2NF
2. 부분 함수 종속성 - XY→Z에서, X→Z, Y→Z중 하나만 성립, 2NF
3. 이행 함수 종속성 - X→Y, Y→Z에서 X→Z인경우, 3NF
4. 결정자 함수 종속성 : 함수적 종속의 결정자가 후보키가 아닌 경우 종속, BCNF
5. 다중값 종속성 : 결정자가 여러 종속자 결정, 4NF
6. 조인(결합) 종속성 : 각각의 관계는 존재하나 전체는 관계가 없음, 5NF
[사례]
- 완전 : 학번,과목 → 이름,성적, 학번,과목 → 성적
- 부분 : 학번,과목 → 이름,성적, 학번 → 이름
- 이행 : 학번 → 지도교수, 학번 → 학과, 지도교수 → 학과
- 결정자 : 학번,과목 → 교수 BCNF (학번 → 교수, 교수 → 과목)
암스트롱 공리
[정의] 결정자와 종속자간 함수 종속의 성질을 유도해 낼수 있는 정규화에 사용되는 추론 규칙
[추론] (재확이 합분유)
<기본>
1. 재귀적 규칙 : Y가 X의 부분 집합이면 X→Y
2. 확대의 공리 : X→Y 이면 XZ→YZ
3. 이행의 공리 : X→Y, Y→Z이면 X→Z
<부수적>
1. 합집합의 성질 : X→Y, X→Z이면 X→YZ
2. 분해 규칙 : X→YZ이면 X→Y, X→Z
3. 유사 이행적 성질 : X→Y, YZ→W이면 XZ→W
</부수적></기본>
이상현상
[정의] 불필요한 데이터 중복으로 데이터 삽입/수정/삭제시 발생할 수 있는 비합리적인 현상
[원인/현상] (원인) 복수 정보, 정규화 미수행 (결과) 무결성 침해, Data 품질저하
[이상현상]
1. 삽입 이상 : 불필요한 데이터도 함께 삽입
2. 갱신 이상 : 일부만 변경되는 이상
3. 삭제 이상 : 필요한 데이터도 함께 삭제 되는 이상
* 정규화 실행으로 함수적 종속성 제거 및 DB 이상현상 해결
연결함정
[정의] 정규화 과정에서 무손실 분해의 원칙이 지켜지지 않아 원래 있던 관계성을 잃어버리는 현상
[현상] A-B, B-C, A-C로 A-B-C 추론 불가 (3항 관계 추론 불가)
[유형]
1. 부채꼴 함정(Fan Trap) : 관계성 모호
- 사례 : A(교수,N)-B(단과대학,1), B(단과대학,1)-C(학과,N)
- 해결 : B와 C 위치 변경
2. 균열 함정(Chasm Trap) : 관계성 미존재
- 사례 : A(학과,1)-B(교수,N), B(교수,1)-C(학생,N)
- 해결 : A와 C 관계 설정
[연결함정 예방 방안]
- CRUD Matrix활용 모델링 검증
- M:N인 경우 무손실분해와 릴레이션 관례 추론 가능 여부 확인
- 새로운 객체 추가