본문 바로가기
CS/데이터베이스

[데이터베이스] 정규화

by merona99 2021. 10. 28.
반응형

CH10. 정규화(Normalization)

 

 

01) 정규화의 개념과 이상 현상

 

이상(anomaly) 현상: 불필요한 데이터 중복으로 인해 릴레이션(table)에 대한 데이터 삽입,수정,삭제 연산을 수행할 때 발생할 수 있는 부작용

정규화: 이상현상을 제거하면서 데이터베이스를 올바르게 설계해 나가는 과정

 

 

이상 현상의 종류

삽입 이상 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
갱신 이상 중복 튜플중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
삭제 이상 튜플을 삭제하면 꼭 필요한 데이터까지 함꼐 삭제되는 데이터 손실의 문제

 

※ 삽입 이상(insertion anomaly)

새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제

 

 

 

※ 갱신 이상(update anomaly)

릴레이션의 중복된 튜플들 중 일부만 수정하여 데이터가 불일치하게 되는 모순이 발생하는 문제

 

※ 삭제 이상(deletion anomaly)

릴레이션에서 튜플을 삭제하면 꼭 필요한 데이터까지 손실되는 연쇄 삭제 현상이 발생하는 문제

 

 

정규화

  • 이상 현상이 발생하지 않도록, 릴레이션을 관련 있는 속성들로만 구성하기 위해 릴레이션을 분해(decomposition) 하는 과정
  • 함수적 종속성을 판단하여 정규화를 수행함

 

 

함수적 종속성 (FD; Functional Dependency)

  • 속성들 간의 관련성
  • 함수 종속성을 이용하여, 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해하여 이상 현상이 발생하지 않는 바람직한 릴레이션으로 만들어 나가는 과정

 

 

02) 함수 종속

※ 함수 종속

  • "X가 Y를 함수적으로 결정한다"
  • 릴레이션 내의 모든 투플을 대상으로 하나의 X 값에 대한 Y 값이 항상 하나임
  • X와 Y는 하나의 릴레이션을 구성하는 속성들의 부분 집합
  • "Y가 X에 함수적으로 종속되어 있다"와 같은 의미
  • X->Y로 표현 (X: 결정자 Y: 종속자)

 

 

※ 함수 종속 관계 판단

함수 종속 다이어그램: 함수 종속 관계를 도식화 하여 표현한 것

 

 

※ 함수 종속 관계 판단 시 유의 사항

  • 속성 자체의 특성과 의미를 기반으로 함수 종속성을 판단해야 함
  •   - 속성 값은 계속 변할 수 있으므로 현재 릴레이션에 포함된 속성 값만으로 판단 하면 안됨
  • 일반적으로 기본키와 후보키는 릴레이션의 다른 모든 속성들을 함수적으 로 결정함
  • 기본키나 후보키가 아니어도 다른 속성 값을 유일하게 결정하는 속성은 함수 종속 관계에서 결정자가 될 수 있음

 

 

 

 

완전 함수 종속(FFD; Full Functional Dependency)

  • 릴레이션에서 속성 집합Y가 속성 집합X에 함수적으로 종속되어 있지만, 속성 집합X의 전체가 아닌 일부분에는 종속되지 않음을 의미
  • 일반적으로 함수 종속은 완전 함수 종속을 의미함
  • ex) 당첨여부는 {고객아이디, 이벤트번호}에 완전 함수 종속됨 -> '고객아이디와 이벤트번호가 있어야 당첨여부를 알 수 있기 때문'

 

부분 함수 종속(PFD; Partial Functional Dependency)

  • 릴레이션에서 속성 집합Y 가 속성 집합X 의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미
  • ex) 고객이름은 {고객아이디, 이벤트번호}에 부분 함수 종속됨 -> '고객이름이 고객아이디로 알 수 있기 때문'

 

고려할 부분이 없는 함수 종속 관계

  • 결정자와 종속자가 같거나, 결정자가 종속자를 포함하는 것처럼 당연한 함수 종속 관계는 고려하지x
  • ex) {고객아이디, 이벤트번호} -> 이벤트번호 

 

 

03) 기본 정규형과 정규화 과정

 

정규화 과정

 

정규형 (NF; Normal Form)

  • 릴레이션이 정규화된 정도
  • 각 정규형마다 제약조건이 존재
  •   - 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해짐
  • 릴레이션의 특성을 고려하여 적합한 정규형을 선택

정규형의 종류

 

 

 

제 1 정규형(1NF; First Normal Form)

  • 릴레이션의 모든 속성이 더는 분해되지 않는 원자 값 (atomic value)만 가지면 제 1 정규형을 만족함
  • 제 1 정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있음
  • 하나의 값만 들어가야 함
  • 릴레이션에 속한 모든 속성의 도메인 원자 값으로만 구성되어 있으면 제 1 정규형에 속함

 

제 1 정규형에 속하는 이벤트참여 릴레이션

 

※ 제 1 정규형은 만족하지만 이상 현상이 발생하는 릴레이션 예시

 

이상 현상의 발생 이유: 기본키인 { 고객아이디 , 이벤트번호 } 에 완전 함수 종속되지 못하고 일부분인 고객아이디에 종속되는 등급과 할인율 속성이 존재하기 때문

문제 해결 방법: 부분 함수 종속이 제거되도록 이벤트참여 릴레이션을 분해 -> 분해된 릴레이션은 제 2 정규형에 속하게 됨

 

 

제 2 정규형 (2NF; Second Normal Form)

  • 릴레이션이 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제 2 정규형을 만족함

 

 

 

※ 제 2 정규형은 만족하지만 이상 현상이 발생하는 릴레이션 예시

 

이상 현상의 발생 이유: 이행적 함수 종속이 존재하기 때문

문제 해결 방법: 이행적 함수 종속이 제거되도록 고객 릴레이션을 분해 ->분해된 릴레이션은 제 3 정규형에 속하게 됨

 

 

이행적 함수 종속 (transitive FD)

  • 릴레이션을 구성하는 세 개의 속성 집합 X, Y, Z 에 대해 함수 종속 관계
  • X → Y 와 Y → Z 가 존재하면 논리적으로 X → Z 가 성립되는데 , 이것을 Z 가 X 에 이행적으로 함수 종속되었다고 함

 

 

제 3 정규형 (3NF; Third Normal Form)

  • 릴레이션이 제 2 정규형에 속하고 , 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속되지 않으면 제 3 정규형을 만족함
  • 제 2 정규형을 만족하지만 제 3 정규형은 만족하지 않는 릴레이션 (고객아이디가 등급을 통해 할인율을 결정하는 이행적 함수 종속 관계가 존재하기 때문)

제 3 정규형을 만족하도록 분해된 두 개의 릴레이션

 

 

 

보이스/코드 정규형(BCNF; Boyce/Codd Normal Form)

- 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속함

 

필요성

  • 하나의 릴레이션에 여러 개의 후보키가 존재하는 경우 , 제 3 정규형까지 모두 만족해도 이상 현상이 발생할 수 있음

의미

  • 강한 제 3 정규형 (strong 3NF) 
  • 후보키를 여러 개 가지고 있는 릴레이션에 발생할 수 있는 이상 현상을 해결하기 위해 제 3 정규형보다 좀 더 엄격한 제약조건을 제시
  • 보이스 / 코드 정규형에 속하는 모든 릴레이션은 제 3 정규형에 속하지만 , 제 3 정규형 에 속하는 모든 릴레이션이 보이스 / 코드 정규형에 속하는 것은 아님

 

 

제 4 정규형

  • 릴레이션이 보이스 / 코드 정규형을 만족하면서 , 함수 종속이 아닌 다치 종속 (MVD; MultiValued Dependency) 를 제거하면 제 4 정규형에 속함

v 제 5 정규형

  • 릴레이션이 제 4 정규형을 만족하면서 , 후보키를 통하지 않는 조인 종속 (JD; Join Dependency) 을 제거하면 제 5 정규형에 속함

 

※ 정규화 시 주의 사항

  • 모든 릴레이션이 제 5 정규형에 속해야만 바람직한 것은 아님
  • 일반적으로 제 3 정규형이나 보이스 / 코드 정규형에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상 현상을 해결하는 경우가 많음

 

 

 


 

// 데이터베이스 9주차

 

반응형

댓글