정규화와 반정규화

Doya·2025년 1월 6일

1. 이상(Anomaly)

  • 데이터의 중복이 발생하여 테이블 조작 시 문제가 발생하는 현상

2. 함수적 종속(Funtional Dependency)

  • 어떤 릴레이션 R이 있을때 X와 Y를 가각 속성의 부분집합이라 가정했을 때, X의 값 각각에 대해 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다 함
  • X → Y로 표기

1. 완전 함수적 종속(Full Functional Dependency)

  • 정의: 속성 Y가 속성 X에 함수적으로 종속되어 있고, X의 모든 부분 집합에서도 Y가 함수적으로 종속되지 않을 때, Y는 X에 완전 함수적 종속
  • 설명: 기본키 X의 모든 구성 요소가 Y 값을 결정짓는 데 필요할 때, 즉 X의 모든 구성 요소가 없어지면 Y 값을 결정할 수 없을 때 완전 함수적 종속.
  • 예시:
    • 학생 테이블(Student)의 (학번, 과목코드) → 성적

2. 부분 함수적 종속(Partial Functional Dependency)

  • 정의: 속성 Y가 속성 X에 함수적으로 종속되어 있고, X의 일부 부분 집합에서도 Y가 함수적으로 종속될 때, Y는 X에 부분 함수적 종속
  • 설명: 복합 키의 일부 속성에 의해 다른 속성이 종속될 때 부분 함수적 종속이라고 합니다. 이는 제2정규형(2NF) 위반으로 이어짐
  • 예시:
    • 학생 테이블(Student)의 (학번, 과목코드) → 과목명

3. 이행적 함수적 종속(Transitive Functional Dependency)

  • 정의: 속성 X가 속성 Y를 결정하고, 속성 Y가 속성 Z를 결정할 때, X가 Z를 결정하는 관계를 이행적 함수적 종속이라고 합니다. 단, X가 후보 키가 아닐 때 적용
  • 설명: 중간 매개체를 통해 간접적으로 이루어지는 종속성을 의미
  • 예시:
    • 학생 테이블(Student)의 학번 → 학과, 학과 → 학과 사무실

3. 정규화

  • 테이블의 속성들이 상호 족속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해 하는 과정
  • 가능한 중복을 제거하여 삼입, 삭제, 이상의 발생 가능성을 줄이는 것이 목적

1. 제 1정규형

  • 테이블 R에 속한 모든 속성의 도메인이 원자 값으로만 되어 있는 정규형
  • 테이블의 모든 속성 값이 원자 값으로만 되어 있는 정규형

2. 제 2정규형

  • 테이블이 제1 정규형(1NF)을 만족하고, 기본키가 아닌 모든 속성이 기본키의 일부가 아닌 전체에 대해 완전 함수적 종속을 만족하는 정규형이다. 즉, 부분 함수 종속이 제거된 상태

3. 제 3정규형

  • 테이블 R이 제 2정규형이고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수적 종속을 만족하지 않는 정규형

4. BCNF

  • 테이블 R에서 모든 결정자가 후보키인 정규형
  • 일반적으로 제 3정규형에 후보키가 여러 개 존재하고, 이러한 후보키들이 서로 중첩되어 나타나는 경우 적용 가능

5. 제 4정규형

  • 테이블 R에 다중 값 종속이 존재할 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형

6. 제 5정규형

  • 제 5정규형은 테이블 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형

4. 반정규화(Denormalization)

  • 시스템 성능 향상 및 개발, 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
  • 성능향상, 관리 효율성은 증가 하지만 데이터의 일관성 및 정합성이 저하될 수 있음
  • 과도한 반정규화는 오히려 성능 저하를 시킴

1. 테이블 통합

  • 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 하나의 테이블로 만들어 사용
  • 고려하는 경우
    두개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우
    항상 두 개의 테이블을 이용하여 조회를 수행하는 경우
  • 종류
    1:1 관계 테이블 통합
    1:N 관계 테이블 통합
    슈퍼타입/서브타입 테이블 통합

2. 테이블 분할

  • 테이블 분할은 테이블을 수직 또는 수평으로 분할하는 것
  • 수평분할: 레코드를 기준으로 테이블을 분할
  • 수직분할: 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블을 분할하는 것

3. 중복 테이블 추가

  • 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것

4. 중복 속성 추가

  • 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것

연습 문제

1. 이상 현상 3 종류를 모두 쓰시오.

정답
삽입 이상, 삭제 이상, 갱신 이상

2. 시스템 성능 향상 및 개발, 운영의 편의성 등을 높이기 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위가 무엇인지 쓰시오

정답
반정규화

profile
안녕하세요. 도야입니다

0개의 댓글