본문 바로가기

Study/데이터베이스

[데이터베이스] #4 정규화

잘못된 데이터베이스 모델링

1. 데이터의 중복

  • 일관성 유지의 어려움
  • 저장 공간 낭비

2. 갱신이상

  • 삽입이상, 삭제이상, 수정이상

 

좋은 릴레이션의 개념

1. 컴퓨터 프로그래머적 관점에서의 모델링

2. 릴레이션의 스키마를 얼마나 효율적으로 반영하고 있는가

3. 고려사항

  • 한 릴레이션 내의 컬럼 간의 관계 분석
  • 원하지 않는 데이터의 종속과 중복 제거
  • 새로운 컬럼들이 데이터베이스에 추가될 때, 기존 컬럼과의 관계 수정을 최소화

 

함수적  종속성

1. 함수적 종속성의 정의

  • 릴레이션 인스턴스를 분석하여 속성들 간의 연관관계를 표현한 것
  • 릴레이션의 효율성을 향상시켜 좋은 릴레이션으로 변환하는데 이용되는 중요한 개념
  • {A} → {B} : 결정자 → 종속자
  • 서로 다른 두 개의 레코드에 대해서 컬럼 값이 같으면 다른 컬럼 값도 같아야 한다 

2. 함수적 종속성의 확장

  • 함수적 종속성은 릴레이션의 효율성 여부에 중요한 판단기준
  • 그러나 릴레이션의 인스턴스만으로 내제된 모든 함수적 종속성을 찾아내기 어려움
  • 판별되지 않은 모든 함수적 종속성을 찾기 위해 추론 규칙을 사용하여 함수적 종속성을 확장

3. 함수적 종속성 추론 규칙

-부분집합의 성질(Subset Property) (반사의 공리): Y가 X의 부분 집합이면, X → Y이다.
-확대(Augmentation) (확대의 공리): 만약 X → Y이면, XZ → YZ이다.
-이행성(Transitivity) (이행의 공리): 만약 X → Y이고 Y → Z이면 X → Z이다.
-합집합의 성질(Union): If X → Y이고 X → Z이면 X → YZ이다.
-분해의 성질(Decomposition): X → YZ이면 X → Y이고 X → Z이다.
-유사 이행적 성질(Pseudotransivity): 만약 X → Y이고 YZ → W이면, XZ → W이다.
  • 카노니컬 커버
함수적 종속적 추론 규칙으로 확장된 클로저에는 자명한 종속성(A→A)과 중복된 중속성(X→AB, X→B)을 포함
불필요한 함수적 종속성을 제거한 표준형으로 변환 후 정규화를 수행

표준형 조건

-F의 모든 함수적 종속성의 오른편 속성은 반드시 1개
-F에서 X→A를 X의 진부분집합 Y에 대하여 Y→A로 교체했을 때,그 집합이 F와 동등한 집합이 불가능
-F에서 어떤 함수적 종속성을 제거했을 때, 그 집합이 F와 동등한 집합일 수 없음

 

정규형

이상 현상을 최소화하도록 특정 조건을 갖춘 릴레이션의 형식

정규화의 목적

특정 정규형의 조건을 만족하도록 릴레이션과 속성을 재구성하는 과정

함수적 종속성 다이어그램(FDD)

릴레이션 내의 속성간의 종속 관계를 직관적이고 이해하기 쉽게 도식화 한 표현 방식

직사각형 : 속성 또는 속성 집합
화살표 : 함수적 종속성
정규화 종류

1. 제1정규형

  • 가장 조건이 단순한 정규형
  • 관계형 모델에 조건에 따라 자동 적용되는 정규형
  • 릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값을 갖는 상태

제1정규화가 필요한 릴레이션

  • 김규식이라고 하는 도크관리자가 입항시간이 언제고 출항시간이 언젠지 매칭할 수 없다
  • 항상 원자값을 만들어야한다

FDD

 

2. 제2정규형

  • 제1정규형을 만족하고 기본키의 부분집합이 특성 속성을 종속하고 있지 않은 상태
  • 릴레이션을 잘못 분해하면 손실분해 발생 > 원래의 릴레이션으로 돌아갈 수 없음

제2정규화 적용

 

3. 제3정규형

  • 릴레이션이 제2정규형을 만족하고, 기본키가 아닌 속성들이 어떤 키에도 이행적으로 종속되지 않은 상태
  • 중복 배제

제3정규화 적용

목적이 담당도선사를 종속하고 있던 것을 따로 빼낸다 

 

4. BC정규형

릴레이션이 제3정규형을 만족하고 릴레이션에 성립하는 X→Y 형태의 모든 함수적 종속서에 대하여 X가 수퍼키인 상태

분리된 릴레이션 전부를 조인을 하면 원래 릴레이션으로 보여줄 수 있음

 

역정규화의 개념
  • 정규화는 릴레이션 분할을 통해 데이터 중복성을 최소화한다는 장점이 있으나 사용과정에서 굉장히 많은 조인연산을 유발한다.
  • 역정규화는 정규화의 반대 개념으로 여러 개로 분리되었던 릴레이션을 통합하는 재조정을 수행
  • 정규화를 하고나서 다시 앞선 방식으로 앞당기는 작업
  • 데이터 접근 성능을 개선하는 목적으로 사용
  • 정규화되지 않은 스키마와 역정규화 스키마는 구별
반응형