Database

[Database] 함수 종속성(Functional Dependency)과 정규화(Normalization)

구루싸 2020. 11. 11. 17:13
반응형
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