[DBMS]데이터 모델링(3)

Date:     Updated:

카테고리:

태그:

[6] 정규화

6.1. 정규화의 개념

  • 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스.
  • 함수적 종속성을 이용해서 연관성 있는 속성들을 분류하고, 각 릴레이션들에서 이상(anomaly)현상이 생기지 않도록 하는 과정.
  • 데이터의 일관성을 유지하고 데이터의 중복을 방지하며 데이터의 유연성을 유지하기 위해 데이터를 분해하는 과정.

6.2. 정규화의 목적

  • 데이터 중복을 최소화
  • 데이터베이스 구조 확장시 재 디자인을 최소화
  • 무결성 제약조건의 시행을 간단하게 하기 위해

6.3. 정규화 용어

  • 함수적 종속성 (FD : Functional Dependency)
    • 테이블의 특정 컬럼 A 의 값을 알면 다른 컬럼 B 의 값을 알수 있을 때 컬럼 B 는 컬럼 A 에 함수적 종속성이 있다고 함.
      • 예) 주민등록번호를 알면 고객명을 알수 있음
        • 고객명은 주민등록번호에 함수적 종속성이 있다.
  • 정규화 (Normalization)
    • 함수적 종속성 등과 같은 이론에 근거하여 관계형 데이터베이스 테이블의 삽입/삭제/갱신 이상(anomaly) 현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정임.
    • 정규화는 데이터 모델을 정규형에 맞도록 고치는 과정이라고 할수 있음.
  • 정규형 (NF : Normal Form)
    • 정규화된 결과

6.4. 정규화 이론

  • 1차 정규화
    • 한 속성에 여러 개의 속성값을 갖거나 같은 유형의 속성이 여러개인 경우 => 해당 속성을 분리시킴
    • 1차 정규화 작업으로 속성의 원자성을 학보하게 됨.
  • 2차 정규화
    • 주식별자에 완전 함수 종속되지 않은 속성을 분리 함
    • 2차 정규화 작업으로 부분 종속 속성(Partial Dependency Attribute)이 된 속성을 분리.
  • 3차 정규화
    • 일반 속성끼리 함수 종속이 발생한 속성을 분리함.
    • 3차 정규화 작업으로 이행적 종속 속성(Transitive Partial Dependency Attribute)을 분리.

6.5. 제 1 정규형

  • 한 속성에 여러 개의 속성값을 갖거나 같은 유형의 속성이 여러 개인 경우 해당 속성을 분리시켜야 함을 뜻함.

    예)
    기존의 회원 엔터티에 있었던 연락처 속성을 제거하고 회원연락처 엔터티를 추가해서 제 1 정규형을 만족하게 됨.
    

6.6. 제 2 정규형

  • 제 1 정규형을 만족하고 엔터티내에서 식별자가 아닌 속성은 식별자 전체에 종속되어야 함.
  • 식별자 전체에 종속적이지 않거나 복합식별자들 중 일부 식별자 속성(들)에만 종속적인 일반 속성은 분리 되어야 함
예)
고객주문 엔터티 식별자 : 고객아이디 + 주문순번
고객명 고객등급 속성은 위 엔터티에 복합식별자에 완전 종속되지 않음.
  - 고객아이디 컬럼에만 종속되고 있음. 일부에만 종속되고 있다
    => 고객 엔터티 추가하여 고객아이디를(만) 식별자로 하여 고객명과 고객등급 속성을 관리함
      ==> 제 2 정규형 작업을 통해 복합식별자의 일부 속성에만 함수종속하는 일반속성이 사라졌으며 제 2 정규형을 만족하게 됨.

6.7. 제 3 정규형

  • 제 2 정규형을 만족하고 일반 속성들 간에도 함수 종속관계가 존재하지 않아야 함
  • 제 3 정규형을 만족하려면 일반 속성들 간 종속관계가 존재하는 것들을 분리되어야 함
예)
고객 엔터티의 식별자는 고객아이디임.
고객아이디 속성을 제외하고 일반 속성인 직업코드와 직업명 속성간에 함수 종속이 발생함.
직업명은 직업코드가 정해져 있기때문에 직업명은 직업코드에 함수 종속된다고 할수 있음.
식별자를 제외한 일반 속성 간에 함수 종속이 발생하는 경우를 제 3 정규형을 위반이라고 함.
  ==> 직업 엔터티를 추가하여 일반 속성끼리의 함수 종속을 제거함

DBMS 카테고리 내 다른 글 보러가기

댓글 남기기