DataBase

정규화

Z00_HWAN_99 2024. 8. 1. 17:58
728x90
반응형

이상(Anomaly)

  • 관계형 데이터베이스에서 데이터 삽입, 삭제 및 수정과 관련하여 발생할 수 있는 불일치 또는 오류.
  • 데이터베이스의 정상적인 동작을 방해하거나 데이터의 무결성과 일관성을 저해할 수 있음.

이상의 유형

  • 삽입 이상(Insertion Anomaly)
    • 데이터를 삽입할 때 발생하는 이상으로 데이터를 삽입할 때 원하지 않는 불필요한 데이터를 반복해서 입력해야 하는 경우.
  • 삭제 이상(Deletion Anomaly)
    • 데이터를 삭제할 때 발생하는 이상으로 테이블에서 일부 레코드를 삭제하면 삭제할 필요가 없는 다른 정보도 함께 삭제되는 경우.
  • 수정 이상(Update Anomaly)
    • 데이터를 변경할 때 발생하는 이상으로 테이블의 일부 레코드의 값만 수정되어 데이터 일관성이 깨지는 경우.

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

  • 관계형 데이터베이스의 릴레이션에서 속성 간의 관계
  • 특정 릴레이션에서 속성 X와 속성 Y 사이에 함수적 종속성이 존재함.
    • X의 값이 주어지면 Y의 값이 항상 유일하게 결정됨.
    • X > Y
    • X : 결정자(Determinant), Y : 종속자(Dependent)
  • 함수적 종속성 다이어그램(Functional Dependency Diagram, FDD)
    • 함수적 종속성을 나타내는 표기법.
    • 이것을 통해 속성 간의 관계를 쉽게 파악할 수 있음.

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

  • 기본키가 아닌 속성들이 기본키에 종속이 되는 종속 관계.
  • 만일 기본키가 복합키인 경우에는 기본키를 구성하는 속성 집합에 종속되어야 함.

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

  • 기본키가 아닌 속성들이 기본키의 일부에 종속되는 관계.

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

  • 세 개 이상의 속성이 연결되어 있을 때 발생하는 종속 관계.
  • X, Y, Z 라는 3개의 속성이 있을 때 X -> Y, Y -> Z와 같이 속성 간에 종속성이 연쇄적으로 전파되는 경우.
  • Y가 X에 함수적으로 종속되고 Z가 Y에 함수적으로 종속되면, Z는 X에 대해 이행 함수적으로 종속됨.

데이터베이스 정규화(Normalization)

  • 데이터베이스 설계의 중요한 개념으로 이상을 제거하여 데이터베이스를 효율적으로 구조화하는 과정.
  • 정규화를 통해 데이터베이스를 구조화하면 데이터 삽입 이상, 수정 이상, 삭제 이상이 최소화됨.
  • 그 결과 데이터의 중복을 줄일 수 있고, 데이터 무결성을 강화하며 일관성을 유지할 수 있음.
  • 또한, 데이터의 논리적 구조가 좀 더 간결하고 명확하게 표현되므로 데이터를 검색하는 데 효율적이며, 유지보수성이 향상됨.

제 1정규형(1NF)

  • 테이블의 각 속성 값은 반복 그룹이 없는 원자 값으로만 구성되어야 함.
  • 이를 위해서 중복되는 속성이나 속성 그룹은 별도의 테이블로 분리함.

제 2정규형(2NF)

  • 제 2정규형은 제 1정규형을 만족하면서 부분 함수적 종속성을 제거해야함.

제 3정규형(3NF)

  • 제 3정규형은 제 2정규형을 만족하면서 이행 함수적 종속성을 제거해야함.

추가적인 정규화 형식

  • 보이크-코드 정규형(Boyce-Codd NF, BCNF), 제 4정규형(4NF), 제 5정규형(5NF) 등
  • 실무에서 데이터베이스 정규화는 주로 제 3정규형까지 진행함.

반정규화(Denormalization)

  • 반정규화는 중복 저장으로 인해 더 많은 스토리지가 필요함.
  • 데이터 불일치가 발생할 수 있음.
  • 쓰기 작업에 추가적인 비용이 소요될 수 있음.

정리 요약

  • 정규화란?
    • "관계형 데이터베이스의 설계에서 중복을 최소화하기 위해 데이터를 구조화하는 프로세스"를 정규화라고 한다.
  • 정규화의 목표?
    • 데이터 간의 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 목표를 둔다.
  • 특징?
    • 하나의 테이블에 중복된 데이터가 최소화(없도록) 되도록 한다.
    • 엔티티를 충분히 도출하였는지, 그리고 엔티티 타입에 적절한 속성을 부여하였는지 검토한다.
    • 엔티티 타입에서 속성이 상호 종속적인 관계를 갖는 것을 전제로 종속관계를 이용한 엔티티 타입을 정리한다.
    • 각각의 속성이 데이터 모델에 포함될 수 있도록 정규화 원리를 이용하여 데이터 분석할 때 활용한다.
    • 데이터를 검증하고 데이터를 표현하기 위한 엔티티 타입을 정의한다.
  • 정규화 과정?
    • 1 -> 2 -> 3 -> BCNF -> 4 -> 5
    • 보통 3정규화 과정을 거치면 안티패턴(비효율적이거나 불필요한 패턴)이 해결된다.

https://github.com/bottomsUp-99?tab=repositories

 

bottomsUp-99 - Overview

Backend Developer. bottomsUp-99 has 12 repositories available. Follow their code on GitHub.

github.com

 

 

728x90
반응형

'DataBase' 카테고리의 다른 글

Stored Procedure(저장 프로시저)  (0) 2024.08.08
데이터 모델링  (2) 2024.08.01
무결성 제약 조건  (2) 2024.07.22
관계 데이터 모델  (0) 2024.07.22
데이터베이스란  (2) 2024.07.22