반응형
SMALL
함수 종속성(Functional Dependency)
- 데이터들이 어떤 기준값에 의해 항상 종속되는 현상
- Attribute X의 값 각각에 대해 Attribute Y의 값이 하나만 연관되면 "Y는 X에 함수적으로 종속된다" 또는 "X는 Y를 함수적으로 결정한다"라고 정의하고 X→Y로 표기하며 X는 결정자, Y는 종속자를 의미함
- 각 데이터를 종속된 테이블에 배치하여 데이터의 반복을 차단할 수 있고, 이상 현상 제거 시에 데이터의 정합성을 유지하는 역할을 함
함수 종속 다이어그램(Functional Dependency Diagram)
- 속성 간의 함수 종속 관계를 도식으로 표현하는 것
함수 종속성의 유형
1) 완전 함수 종속(Full Functional Dependency)
- X'⊂X 이고 X'→Y를 만족하는 Attribue X'이 존재하지 않음
2) 부분 함수 종속(Partial Functional Dependency, 2FN)
- X'⊂X 이고 X'→Y를 만족하는 Attribue X'이 존재함
3) 이행 함수 종속성(Transitive Dependence, 3FN)
- 속성 A→X이고 X→Y이면 A→Y
4) 결정자 함수 종속성(Boyce-code Normalization)
- X→Y에서 X가 후보키가 아님
함수 종속성의 주요 추론 규칙
구분 | 추론 | 내용 |
기본 | 재귀 (Reflective) |
Y가 X의 부분집합이면 X→Y이다 |
증가 (Augmentation) |
X→Y이면 XZ→YZ이다 | |
이행 (Transitivity) |
X→Y이고 Y→Z이면 X→Z이다 | |
부가 | 연합 (Union) |
X→Y이고 Y→Z이면 X→YZ이다 |
분해 (Decomposition) |
X→YZ이고 X→Y이고 X→Z이다 | |
가이행 (Pseudo-Transitivity) |
X→Y이고 YW→Z이면 XW→Z이다 |
이상 현상
- 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상
- 정규화되지 않은 경우 데이터의 중복이 원인이 되어 발생
- 이상 현상의 해결을 위해서는 Attribute 간의 종속성을 분석해서 하나의 릴레이션에 하나의 종속성이 표현되도록 분해해야하고 스키마 변환의 원리는 아래의 세 가지를 포함함
- 정보의 무손실 표현
- 최소의 데이터 중복성(Minial data redundancy)만을 허용
- 분리의 원칙(Principle of separation)
- 이상 현상의 종류는 아래와 같음
종류 | 주요 개념 |
갱신 이상 (Update Anomaly) |
릴레이션 R에서 특정 속성값 갱신 시 중복 저장되어 있는 속성 값 중 하나만 갱신하고 나머지는 갱신하지 않아서 발생하는 데이터 불일치 현상 |
삭제 이상 (Deletion Anomaly) |
릴레이션 R에서 특정 튜플을 삭제할 경우 원하지 않는 정보까지도 삭제되는 현상 |
삽입 이상 (Insertion Anomaly) |
릴레이션 R에서 특정 투플을 삽입할 경우 원하지 않는 불필요한 정보까지도 삽입해야 하는 현상 |
정규화
- 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지하고 데이터의 일관성과 정확성을 유지하기 위한 과정
- Attribute간의 종속성을 분석하여 기본적으로 하나의 종속성이 하나의 릴레이션으로 표현되도록 분해해 나가는 과정
- 중복의 제거로 저장 공간을 최소화할 수 있고 종속성 제거로 일관성 및 무결성 보장이 가능하며 자료의 삽입, 갱신 및 삭제에 따른 이상 현상을 제거할 수 있음
- 정규화는 아래와 같은 원칙을 따름
구분 | 설명 |
정보의 무손실 | 분해된 릴레이션이 표현하는 정보는 분해되기 전의 정보를 모두 포함하고 있어야 함 |
데이터 중복성 감소 | 중복으로 인한 이상 현상의 제거 |
분리의 원칙 | 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리하여 표현(1차 정규화 예외) |
정규화의 유형
구분 | 단계 | 내용 |
기초적 정규화 | 1차 정규화(1NF) | ☞ 반복되는 속성 제거 ☞ 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있는 경우 |
2차 정규화(2NF) | ☞ 부분함수 종속성을 제거 ☞ 릴레이션이 1NF이고 릴레이션의 기본키가 아닌 속성들이 기본키에 완전히 함수적으로 종속할 경우 ☞ 결정자가 2개 이상일 때, 2개 중에서 하나의 결정자에 의해서만 함수 종속성인 경우 |
|
3차 정규화(3NF) | ☞ 이행함수 종속성을 제거 ☞ 릴레이션이 2NF이고 기본키가 아닌 모든 속성들이 기본키에 대하여 이행적 함수 종속성의 관계를 가지지 않는 경우로 기본키 외의 속성들 간에 함수적 종속성을 가지지 않는 경우 ☞ 종속자들 간의 함수종속성이 있는 경우 |
|
Boyce/Code NF(BCNF) | ☞ 결정자 함수 종속성 제거 ☞ 릴레이션의 모든 결정자가 후보키일 경우 ☞ 결정자들 간의 함수적 종속이 있는 경우 |
|
진보적 정규화 | 4차 정규화(4NF) | ☞ 다중값 종속성 제거 ☞ BCNF이고 릴레이션의 모든 Attribute X에 대해 A→X이고 A가 후보키인 경우 |
5차 정규화(5NF) | ☞ 결함 종속성 제거 ☞ 릴레이션에 존재하는 모든 조인 종속이 릴레이션의 후보키를 통해서만 성립되는 경우 |
반정규화
- 정규화된 엔터티, 속성, 관계에 대해 시스템의 조회 성능 향상과 개발과 운영의 단순화를 위해 데이터 모델을 통합하는 프로세스를 의미
- 반정규화를 하기 위해 엔터티와 속성, 관계에 대해 데이터의 정합성 및 무결성을 우선할지 아니면 데이터베이스 구성의 단순화와 조회 성능을 우선할지를 고려해야 함
- 반정규화는 먼저 범위 처리 빈도수, 집계성 프로세스, 테이블 조인 개수로 반정규화를 적용할 대상을 조사하고 뷰, 클러스터링, 인덱스, 응용 어플리케이션과 같은 다른 방법 검토한 후 진행함
- 테이블, 컬럼, 관계의 반정규화가 있음
1. 테이블의 반정규화
종류 | 설명 |
병합 | 자주 변경되지 않고, 함께 조회되는 경우가 많은 경우 통합 ☞ 1:1 관계의 테이블 병합 ☞ 1:M 관계의 테이블 병합 ☞ 수퍼/서브타입 테이블 병합 |
분할 | 프로세스 별로 서로 다른 특정 컬럼들에 트랜잭션이 발생할 경우 병합 ☞ 수직 분할 ☞ 수평 분할 |
추가 | 통계의 검색 속도를 높이기 위해 추가 ☞ 중복 테이블 추가 ☞ 집계 테이블 추가 ☞ 이력 테이블 추가 ☞ 부분 테이블 추가 |
2. 컬럼의 반정규화
종류 | 설명 |
중복 컬럼 추가 | 자주 사용하는 컬럼은 조인하지 않고 컬럼을 추가 |
파생 컬럼 추가 | 합계 등을 미리 계산해 놓기 위해 파생 컬럼 추가 |
Primary Key에 의한 컬럼 추가 | Primary Key가 많은 컬럼으로 구성되었을 경우 일련번호로 Primary Key를 대체하고 기존 Primary Key 컬럼들을 일반 컬럼으로 사용하도록 함 |
오입력 처리를 위한 컬럼 추가 | 이전 상태로 돌아가는 것을 허용하기 위하여 이전 상태를 저장하는 컬럼을 추가 |
3. 관계의 반정규화
- 접근 경로가 복잡하여 조인이 많이 필요하게 될 경우 조회 경로를 단축하기 위해 관계를 중복하는 컬럼을 추가
이번 학습을 마치겠습니다
그럼 이만-_-
반응형
LIST
'Database' 카테고리의 다른 글
[Database] 성능 개선 (0) | 2020.11.13 |
---|---|
[Database] 데이터 품질과 표준화 (0) | 2020.11.12 |
[Database] ER(Entity-Relationship) Model과 IE(Information Engineering) (0) | 2020.11.11 |
[Database] 데이터베이스와 모델링 (0) | 2020.11.06 |
[Big Data] 데이터 적재 및 저장 (0) | 2020.10.27 |