정보처리기사/데이터베이스 구축

논리 데이터베이스 설계 6

RangA 2023. 5. 26. 02:52

05. 데이터베이스의 정규화

01. 정규화의 개념

1) 정규화의 개념

  • 하나의 릴레이션에 하나의 의미만 존재할 수 있도록 릴레이션을 분해해 나가는 과정
    • 데이터베이스의 설계는 결합하는 것이 아니라 분해하는 것이 원칙
  • 데이터 모델링의 단계 중 가장 중요한 단계로써 논리 데이터 모델링을 상세화하는 단계
  • 중복성을 최소화하고 정보의 일관성을 보장하기 위한 개념
  • 정규형(Normal Form)이란 특정 조건에 만족하는 릴레이션 스키마의 형태를 의미
  • 기본 정규형에 1NF, 2NF, 3NF, BCNF가 있고 고급 정규형에는 4NF, 5NF가 있음

2) 정규화의 목적

  • 구성되는 모든 릴레이션이 중복되지 않게 효과적으로 데이터베이스 내에 표현이 가능하도록 함
  • 보다 간단한 연산자에 의해 효과적인 연산이 가능하도록 구성함
  • 새로운 형태의 데이터가 삽입될 때 릴레이션을 재구성할 필요성을 감소시키도록 함
  • 자료 검색과 추출의 효율성을 추구할 수 있음
  • 전체적인 성능 향상에 기여하기 위함
  • 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하도록 만듦

3) 정규화의 필요성

  • 자료의 저장 공간을 최소화함
  • 자료의 불일치를 최소화함
  • 자료 구조를 안정화함
  • 자료의 삽입, 삭제, 갱신 시 이상 현상을 방지함

4) 정규화의 특징

  • 어떠한 관계 구조가 바람직한 것인지, 바람직하지 못한 관계를 어떻게 분해하여야 하는지에 관한 구체적인 판단 기준을 제공
  • 정규화된 데이터 모델은 정확성, 일치성, 단순성, 비중복성, 안정성을 보장함

5) 정규화의 장단점

  1. 정규화의 장점
    • 정규화 수준이 높으면 유연한 데이터 구축이 가능함
    • 정규화 수준이 높으면 데이터의 정확성이 높아짐
  2. 정규화의 단점
    • 정규화 수준이 높으면 물리적 접근이 복잡해짐
    • 정규화 수준이 높으면 길이가 짧은 데이터 생성으로 많은 조인이 발생함

6) 정규화 과정

  • 비정규형
    ▼ -> 도메인을 원자 값만 갖도록 분해함
  • 제1NF(제1정규형)
    ▼ -> 부분 함수 종속을 제거함
  • 제2NF(제2정규형)
    ▼ -> 이행적 함수 종속을 제거함
  • 제3NF(제3정규형)
    ▼ -> 결정자가 후보키가 아닌 함수 종속을 제거함
  • 보이스 코드 정규형
    ▼ -> 다중치 종속을 제거함
  • 제4NF(제4정규형)
    ▼ -> 후보키를 통하지 않은 조인 종속을 제거함
  • 제5NF(제5정규형)



02. 정규화의 단계

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

  • 하나의 튜플에서 여러 개의 값이 들어와 원자성을 가지지 못하는 경우(비정규형)에 도메인 값을 분해하면 제1정규형이라고 함
  • 반복 그룹(Repeat Group) 속성을 제거함
  • 새로운 실체와 1:N의 관계를 추가함
  • 모든 속성은 반드시 하나의 값을 가져야 하며, 반복 형태가 없어야 함
  • 개체에 존재하는 속성들 중에서 반복되는 속성들을 하위 개체로 도출함
  • 릴레이션에 속한 모든 도메인 혹은 속성이 원자 값만으로 되어 있다면 제1정규형에 속함

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

  • 릴레이션이 제1정규형에 속하고 기본키에 속하지 않는 모든 속성들이 기본키에 완전 함수 종속이면 제2정규형에 속함
  • 제1정규형을 만족하고 모든 도메인이 원자 값인 상태에서 제2정규형이 만들어짐
  • 주 식별자 전체에 완전 기능 종속(Full Function Dependency)이 되지 않는 속성을 제거함
    • 완전 함수 종속
      • X -> Y가 성립할 때
      • X'⊂X이고, X' -> Y를 만족하는 X'가 존재하지 않음
    • 부분 함수 종속
        • X'⊂X이고, X' -> Y를 만족하는 X'가 존재함
    • A -> C, B -> C를 만족하는 B가 있다면 부분 함수 종속이고, 없다면 완전 함수 종속
  • 주 식별자 속성 일부에만 함수적 종속되는 속성들을 상위 개체로 도출함

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

  • 릴레이션이 제2정규형에 속하고 기본키에 속하지 않는 모든 속성이 기본키에 이행적 함수 종속이 아니면 제3정규형에 속함
  • 주 식별자에 이행 종속(Transitive Dependency)되는 속성을 제거함
    • A -> B, B -> C, A -> C 관계를 이행적 함수 종속이라고 함
    • 이행적 함수 종속은 데이터베이스의 이상 현상이 발생하므로 이를 제거하려면 두 개의 릴레이션으로 분리해야 함
  • 주 식별자를 제외한 일반 속성들 중에서 함수적 종속 속성들을 상위 개체로 도출함

4) 보이스 코드 정규형(BCNF : Boyce-Codd NF)

  • 비결정자에 의한 함수 종속을 제거하여 모든 결정자가 후보키가 되도록 함
  • 주 식별자에 다가 종속(Multi-Valued Dependency)되는 속성을 두 가지 이상 두지 않도록 함
  • 특정 조건에 대해 제공되는 결과 값에 같은 데이터 값이 두 번 이상 발생하는 속성을 하위 개체로 도출함
  • 실제로 거의 고려되지 않는 정규화
  • 2차 정규화된 테이블은 다대다 관계를 가질 수 없음
  • 어떤 관계 구조가 바람직한 것인지, 바람직하지 못한 관계를 어떻게 분해하여야 하는지에 관한 구체적인 판단 기준을 제공함"
  • 다양한 정의가 있음
    • 결정자가 후보키가 아닌 함수 종속 제거
    • 비결정자에 의한 함수적 종속 제거
    • 비식별자 속성 간의 종속 제거
    • 결정자이면서 후보키가 아닌 것을 제거

5) 제4정규형(4NF : Four Normal Form)

  • 제4정규형은 고급 정규화 과정으로 다중치 종속 관계를 제거하는 것
    • 1:1인 함수 종속 관계가 아닌 1:N 형태로 종속되는 관계를 다중치 종속 관계라고 함
    • A -> B, A -> C 또는 X -> Y, X -> Z, X -> W의 형태의 함수적 종속 관계를 다중치 종속 관계라고 함
  • 릴레이션의 다중치 종속은 함수 종속 A -> B의 일반 형태라고 할 수 있음
  • 다중치 종속은 A -> B로 표현되며 A -> B의 의미는 릴레이션 R의 속성 A가 속성 B의 값의 집합을 결정한다는 것
  • 릴레이션 R(A, B, C)에서 종속 A -> B가 성립한다면 릴레이션 R에서 다중치 종속 A -> B가 성립하므로 A -> C도 성립하며, 릴레이션 R은 언제든지 프로젝션을 통해 R1(A, B)과 R2(A, C)로 무손실 분해할 수 있음

6) 제5정규형(5NF : Five Normal Form)

  • 어떤 릴레이션 R에 존재하는 모든 조인 종속성이 릴레이션 R의 후보키를 통해서만 성립됨
  • 정규화를 통해서 분해된 각 릴레이션들은 처음의 릴레이션으로 재구성될 수 있다면 조인 종속성을 만족시킴
  • 후보키로 통하지 않은 조인 종속은 제거하므로 제5정규형이 완성된 것