데이터 모델 정규화 단계

박수민·2024년 3월 28일
0

정규화

정규화 개념

  • 관계형 데이터 베이스에서 데이터의 중복성을 제거하여 이상현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정

이상현상

  • 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적인 현상

    	릴레이션 : 행(Row)과 열(Column)로 구성된 테이블 

데이터베이스 이상현상

이상현상설명
삽입 이상정보 저장시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우
삭제 이상정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우
갱신 이상중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

데이터베이스 정규화 단계

단계조건
1정규형(1NF)원자값으로 구성
2정규형(2NF)부분 함수 종속 제거 (완전 함수적 종속 관계)
3정규형(3NF)이행함수 종속 제거
보이스-코드 정규형(BCNF)결정자 후보키가 아닌 함수 종속 제거
4정규형(4NF)다치(다중 값) 종속 제거
5정규형(5NF)조인 종속 제거

함수 종속

  1. 릴레이션에서 속성의 의미와 속성 간 상호 관계로부터 발생하는 제약조건이다.
  2. 결정자/종속자
    X -> Y 관계일때 X는 결정자(DeterMinant), Y는 종속자(Dependent)이다.
  3. 함수 종속 종류
    함수 종속에는 부분 함수 종속, 완전 함수 종속, 이행 함수 종속이 있다.
    • 부분 함수 종속 : 릴레이션에서 기본키가 복합키일 경우 기본 키를 구성하는 속성 중 일부에게 종속된 경우
    • 완전 함수 종속 : 릴레이션에서 X -> Y 관계가 있을 때, Y는 X의 전체속성에 대해 종속하고 부분 집합 속성에 종속하지 않는 경우
    • 이행 함수 종속 : 릴레이션에서 X -> Y,Y -> Z 종속 관계가 있을 때, X -> Z가 성립되는 경우

정규화 상세단계

  1. 1차 정규화(1NF)

    • 테이블 내의 속성값을 원자값(중복된 데이터X)을 가지고 있어야 한다.
    • 속성에 2개 이상을 가지고 있는 경우 원자값이 아니기 때문에 속성 1개만 가지도록 저장하면 1차 정규화를 만족한다.
  2. 2차 정규화(2NF)

    • 기본키가 복합 키(2개 이상의 컬럼으로 하나의 행을 식별)로 구성된 경우, 모든 속성은 이 복합 키에만 의존적이어야 한다.

    • 복합 키에 의존적이지 않고, 복합 키를 구성하는 하나의 컬럼에만 의존적인 컬럼이 있으면, 이 속성은 별도의 테이블로 분리하거나, 복합키에 의존적이도록 변경해야 합니다.

    • 이렇게 복합키에 의존적이지 않은 속성이 있으면 이 테이블은 2차 정규화 대상이 됩니다.

    • 주문 정보를 저장하는 주문 테이블에 주문 코드로 식별하는 여러 개의 주문이 있고, 한 주문자가 여러 개의 상품을 주문했다면, 하나의 주문 코드로 여러 행의 주문 목록이 등록됩니다.

    • 따라서 각각의 주문 행은 주문 코드 + 상품코드로 구성되는 복합키로만 식별할 수 있게 됩니다.

      이때 주문행에 상품명이 저장된 컬럼이 있을 경우, 이 상품명 컬럼은 복합 키에 의존적인 것이 아니라 상품코드에만 의존적이 됩니다. 주문 코드 없이 상품 코드만으로 상품명이 식별되기 때문에 해당 정보는 중복 정보가 되고, 상품정보 테이블(또는 주문 상품의 상품명을 저장하는 테이블)을 추가해 상품코드로 식별되는 상품명을 가지도록 분리해야 합니다.

  1. 3차 정규화(3NF)

    • 제3 정규화는 기본키 이외의 일반 컬럼들끼리 의존성이 있는지를 확인해서 분리를 하는 것입니다.

    • 테이블의 속성(컬럼)들이 기본키에 의존적이지 않고, 일반 컬럼들끼리만 의존적인 관계가 생성될 경우, 3차 정규화 대상이 됩니다.

    • 판매 대리점의 발주 정보를 담는 주문 정보 테이블은 기본 키, 또는 복합 키에 의해서 주문행이 식별됩니다.

    • 그리고 관리되는 지점 주소록 목록에서 배송 주소를 선택하는 방식으로 주문 시스템 기능이 구현되어 있지만, 주문 정보 테이블에 지점 코드와 배송 주소 정보를 모두 저장했다면, 이 주문 테이블은 제3 정규화의 대상이 됩니다.

    • 지점 코드에 의해서 이미 배송 주소 정보를 확인할 수 있지만, 실제 배송 주소를 저장한 주문 정보의 배송 주소 컬럼은 배송지 식별 코드 컬럼에 의존적인 중복 정보가 됩니다.

      따라서, 주문 정보 테이블의 기본키, 또는 복합 키가 아니면서 배송지 식별 코드 컬럼에 의존적인 배송 주소 컬럼을 별도의 테이블로 분리하거나 삭제해서 이행 함수 종속성을 해소해야 합니다.

반 정규화(비 정규화)

반정규화 개념

  • 정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법이다.

반 정규화 기법

  • 테이블
    • 테이블 추가(중복, 통계, 이력, 부분 테이블)
    • 테이블 분할(파티셔닝)
      • 파티셔닝 : 테이블을 수직, 수평으로 분할 하는 것
    • 병합(조인이 빈번한 테이블 통합)
  • 컬럼
    • 중복, 파생, 이력 컬럼 추가
  • 관계
    • 중복 관계 추가

참조
https://apost.dev/1162/

0개의 댓글