본문 바로가기
CS/DB

[DB - 데이터베이스 개론] Chapter 09. 정규화

by 원만사 2022. 2. 5.
반응형

 

목차

     

    01. 정규화의 개념과 이상 현상

    1. 정규화의 개념 

     데이터베이스를 잘못 설계하면 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입·수정·삭제 연산을 수행할 때 부작용이 발생할 수 있다. 이러한 부작용을 이상(anomaly) 현상이라 한다. 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해나가는 과정이 정규화다.

     

    2. 이상 현상의 종류 

     이상 현상에는 아래와 같은 세 가지 종류가 존재한다.

    • 삽입 이상(insertion anomaly)
      - 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 

    • 갱신 이상(update anomaly)
      - 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제 

    • 삭제 이상(deletion anomaly)
      - 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제 

    3. 정규화의 필요성

     이상 현상이 발생하는 이유는 관련이 없는 데이터, 즉 관련 없는 속성들을 하나의 릴레이션에 모아두고 있기 때문이다. 정규화는 이상 현상이 발생하지 않도록, 릴레이션을 관련이 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이다. 

     

     정규화를 수행하려면 먼저 릴레이션을 구성하는 속성들 간의 관련성을 판단할 수 있어야 하는데, 속성들 간의 관련성을 함수적 종속성(FD: Functional Dependency)이라고 한다. 일반적으로 릴레이션에 함수적 종속성이 하나 존재하도록 정규화를 통해 릴레이션을 분해한다. 

     

     

    02. 함수 종속

     하나의 릴레이션을 구성하는 속성들의 부분 집합을 X와 Y라 할 때, 어느 시점에서든 릴레이션 내의 모든 튜플에서 하나의 X 값에 대한 Y 값이 항상 하나면 아래와 같이 표현할 수 있다.

     

    함수 종속의 표현

     

     함수 종속 관계를 판단할 때 유의할 점은, 현재 시점에 릴레이션에 포함된 속성 값만으로 판단하면 안 된다는 것이다. 릴레이션에서 속성 값은 계속 변할 수 있기 때문에 속성 자체가 가지고 있는 특성과 의미를 기반으로 판단해야 한다. 

     

     일반적으로 튜플을 유일하게 구별하는 기본키와 후보키는 그 특성 때문에 릴레이션을 구성하는 다른 모든 속성들을 함수적으로 결정한다. 하지만 이러한 특성으로 인해 함수 종속 관계 X -> Y에서 기본키나 후보키만 결정자인 X가 될 수 있는 것은 아니다. 기본키나 후보키가 아니더라도 속성 Y 값을 유일하게 결정하는 속성 X는 함수 종속 관계에서 모두 결정자가 될 수 있다. 물론 릴레이션 내의 여러 튜플에서 속성 X 값이 같으면 이 값과 연관된 속성 Y 값도 모두 같아야 결정자로 인정받을 수 있다. 

     

     완전 함수 종속(FFD: Full Functional Dependency)은 릴레이션에서 속성 집합 Y가 속성 집합 X에 함수적으로 종속되어 있지만, 속성 집합 X 전체에 종속된 것이지 일부분에 종속된 것이 아님을 의미한다. 일반적으로 함수 종속이라고 하면 완전 함수 종속을 의미한다. 

     부분 함수 종속(PFD: Partial Functional Dependency)은 속성 집합 Y가 속성 집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨을 의미하므로, 부분 함수 종속 관계가 성립하려면 결정자가 여러 개의 속성들로 구성되어 있어야 한다. 

     

     

    03. 기본 정규형과 정규화 과정 

    1. 정규화의 개념과 정규형의 종류 

     함수 종속성을 이용하여 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서, 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어나가는 과정을 정규화(normalization)라고 한다. 정규화의 기본 목표는 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것이다. 

     

     릴레이션이 정규화된 정도는 정규형(NF: Normal Form)으로 표현한다. 정규형의 종류는 다음과 같다.

    정규형의 종류 

     

     일반적으로 차수가 높은 정규형에 속하는 릴레이션일수록 데이터 중복이 줄어 데이터 중복에 의한 이상 현상이 발생하지 않는 바람직한 릴레이션일 수 있다. 하지만 모든 릴레이션이 제5정규형에 속해야 되는 것은 아니므로 릴레이션의 특성을 고려해서 적합한 정규형을 선택해야 한다. 일반적으로 기본 정규형에 속하도록 릴레이션을 정규화하는 경우가 대부분이다. 

     

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

    릴레이션에 속한 모든 속성의 도메인이 원자 값(atomic value)으로만 구성되어 있으면 제1 정규형에 속한다.

     

     릴레이션이 제1 정규형에 속하려면 릴레이션에 속한 모든 속성이 더는 분해되지 않는 원자 값만 가져야 한다. 관계 데이터베이스의 릴레이션은 모든 속성이 원자 값을 가지는 특성이 있다. 그러므로 최소한 제1 정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있다고 말할 수 있다.

     

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

    릴레이션이 제1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제2 정규형에 속한다.

     

     제1 정규형에 속하는 릴레이션이 제2 정규형을 만족하게 하려면, 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 릴레이션을 분해하는 정규화 과정을 거쳐야 한다. 

     

     정규화 과정에서 릴레이션을 분해할 때 주의할 점은, 분해된 릴레이션들을 자연 조인하여 분해 전의 릴레이션으로 다시 복원할 수 있어야 한다는 것이다. 즉, 릴레이션이 의미상 동등한 릴레이션들로 분해되어야 하고, 릴레이션을 분해했을 때 정보 손실이 발생하지 않아야 한다. 자연 조인을 하면 원래의 릴레이션으로 다시 복원할 수 있도록, 정보의 손실 없이 릴레이션을 분해하는 것을 무손실 분해(nonloss decomposition)라고 한다. 

     

     제2 정규형을 만족하는 릴레이션도 이상 현상이 발생할 수 있는데, 이는 함수적 종속 관계를 여러 개 포함하고 있어 결과적으로 이행적 함수 종속이 생기기 때문이다. 릴레이션을 분해하여 이행적 함수 종속을 제거하면, 분해된 릴레이션들은 제3 정규형에 속하게 된다.

     

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

    릴레이션이 제2 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제3 정규형에 속한다.

     

     먼저 이행적 함수 종속(transitive FD)을 알아보자. 릴레이션을 구성하는 3개의 속성 집합 X, Y, Z에 대해 함수 종속 관계 X -> Y와 Y -> Z가 존재하면 논리적으로 X -> Z가 성립한다. 이때 속성 집합 Z가 속성 집합 X에 이행적으로 함수 종속되었다고 한다.

     

     제2 정규형을 만족하더라고 하나의 릴레이션에 함수 종속 관계가 여러 개 존재하고, 논리적으로 이행적 함수 종속 관계가 유도되면 이상 현상이 발생할 수 있다. 릴레이션에서 이행적 함수 종속을 제거해서, 모든 속성이 기본키에 이행적 함수 종속이 되지 않도록 릴레이션을 분해하는 정규화 과정을 거쳐야 제3 정규형을 만족할 수 있다. 

     

     일반적으로 3개의 X, Y, Z 속성 집합으로 구성된 릴레이션에 X->Y와 Y->Z라는 함수 종속 관계와 이로 인한 X->Z라는 이행적 함수 종속 관계가 존재한다면, 이 같은 함수 종속 관계의 의미가 유지되도록 분해해야 한다. 즉, X와 Y 속성 집합의 릴레이션과 Y와 Z 속성 집합의 릴레이션으로 분해한다. 

     

    5. 보이스/코드 정규형(BCNF: Boyce/Codd Normal Form)

    릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.

     

     하나의 릴레이션에 여러 개의 후보키가 존재하면 제3 정규형까지 모두 만족하더라도 이상 현상이 발생할 수 있다. 후보키를 여러 개 가지고 있는 릴레이션에 발생할 수 있는 이상 현상을 해결하기 위해 제3 정규형보다 좀 더 엄격한 제약조건을 제시한 것이 보이스/코드 정규형이다. 

     

     보이스/코드 정규형을 강한 제3 정규형(strong 3NF)이라고도 한다. 이유는 보이스/코드 정규형에 속하는 모든 릴레이션은 제3 정규형에 속하지만, 제3 정규형에 속하는 릴레이션이라고 해서 다 보이스/코드 정규형에 속하는 것은 아니기 때문이다. 

     

    6. 제4 정규형과 제5 정규형

     제4 정규형은 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속(MVD: Multi Valued Dependency)을 제거해야 만족할 수 있다.

     

     제5 정규형은 릴레이션이 제4 정규형을 만족하면서 후보키를 통하지 않는 조인 종속(JD: Join Dependency)을 제거해야 만족할 수 있다.

     

    7. 정규화 과정 정리 

     정규화를 수행하는 각 단계를 간단히 요약하면 다음과 같다.

    정규화 과정

     

    Reference

     

     

    데이터베이스 개론 - 교보문고

    [요약]①데이터베이스 기초 이론 : 1장에서 데이터베이스를, 2장에서 DBMS를 소개합니다. 3장에서는 이들을 조합한 데이터베이스 시스템을 소개합니다.②데이터 모델과 연산 : 4장에서 데이터 모

    www.kyobobook.co.kr

     

    반응형

    댓글