inblog logo
|
soultree
    Database

    [DB] 정규화

    각 정규형에 대한 정규화 방법을 알아보자.
    Hi's avatar
    Hi
    May 06, 2024
    [DB] 정규화
    Contents
    ✅ 정규화란?✅ 정규형 ✅ 제 1정규형 (1NF)정의비정규 관계를 제 1정규형 관계로 정규화하는 방법제 1정규형의 문제점제 1정규형의 문제점을 해결하기 위해 정규화✅ 제 2정규형 (2NF)정의제 2정규형인지 점검하는 방법제 2정규형의 문제점제 2정규형을 충족하는 데도 위와 같은 이상이 발생하는 이유이행적 함수 종속성✅ 제 3정규형 (3NF)정의제 3정규형 점검 방법제 3정규형의 문제점제 3정규형을 충족하는 데도 위와 같은 이상이 발생하는 이유제 3정규형의 문제점 해결✅ 보이스코드 정규형 (BCNF)

    ✅ 정규화란?

    📋
    정규화는 데이터베이스 설계에서 중복을 최소화하고 데이터의 일관성과 무결성을 유지하기 위해 사용된다. 주로 엔터티 간의 중복 데이터를 줄이고, 데이터 이상 현상을 방지하기 위해 적용된다. 관계형 데이터베이스 설계에서는 주로 제 1정규화, 제 2정규화, 제 3정규화, Boyce-Codd 정규화 등이 사용된다.
     
     

    ✅ 정규형

    notion image
    • 정규화 과정에서 관계가 만족해야 하는 특정한 함수 종속성의 충족 조건
      • → 특정 정규형이 요구하는 충족 조건을 관계가 만족하면 해당 수준의 정규형을 충족함을 의미한다.
    • 제 3정규형 이상의 정규형을 충족하면 충분한 정규화가 이루어졌다고 본다.
      • → 보통 제 3정규형 또는 보이스-코드 정규형까지만 정규화를 진행한다.
         
     

    ✅ 제 1정규형 (1NF)

    정의

    📋
    관계 R에 속한 모든 속성의 도메인이 원자값을 갖는 경우에, 관계 R은 제 1정규형이라 한다.
     

    비정규 관계를 제 1정규형 관계로 정규화하는 방법

    notion image
    • n개의 다중값을 갖는 속성을 n개의 속성으로 분리한다.
    • 정규화 대상인 관계가 관계형 데이터 모델의 기본 원칙을 따르기만 한다면 제 1정규형에 속한다.
     

    제 1정규형의 문제점

    notion image
    1. 삽입 이상
      1. → 과목 번호가 c006인 과목의 개설학과가 통계학과라는 사실만 따로 삽입할 수 없다.
    1. 수정 이상
      1. → 컴퓨터학과의 학과장이 박유찬에서 홍길동으로 변경될 경우, 과목개설학과가 컴퓨터인 모든 튜플을 찾아 학과장 속성 값을 한꺼번에 홍길동으로 변경해야 함.
    1. 삭제 이상
      1. → 만약, 학번 s002 학생이 과목번호 c002 과목 수강을 취소하여 이 튜플을 삭제하면 c002 과목의 개설학과가 경영학과이고 학과장이 김철수라는 정보까지 데이터베이스에서 함께 삭제됨.
     

    제 1정규형의 문제점을 해결하기 위해 정규화

    notion image
    notion image
    이로써 부분 함수 종속성이 사라지게 된다.
     
     
     

    ✅ 제 2정규형 (2NF)

    정의

    📋
    관계 R이 제 1정규형이고, 기본 키에 해당하지 않는 모든 속성이 기본키에 완전 종속인 형태일 때, 이 관계 R을 제 2정규형이라 한다.
     

    제 2정규형인지 점검하는 방법

    notion image
    • 제 2정규형은 제 1정규형을 충족하는 관계의 기본키가 복합 속성(속성이 2개 이상)일 때, 기본키의 일부 속성이 결정자인지(즉, 부분 함수 종속성이 있는지)를 검사한다.
    • 만약 기본키가 단일 속성이면, 모든 속성이 완전 함수 종속이므로 검사할 필요가 없이 제 2정규형에 속한다.
     

    제 2정규형의 문제점

    notion image
    1. 삽입 이상
        • 과목 개설 학과인 통계학과의 학과장이 홍장미라는 사실만 따로 삽입할 수 없다.
    1. 수정 이상
        • 컴퓨터학과의 학과장이 박유찬에서 홍길동으로 변경될 경우, 여전히 과목 개설 학과가 컴퓨터인 모든 튜플을 찾아 학과장 속성 값을 한꺼번에 홍길동으로 변경해야 한다.
    1. 삭제 이상
        • 과목번호 c002의 등록을 취소하여 이 튜플을 삭제하면 경영학과의 학과장이 김철수라는 원하지 않은 정보까지 함께 삭제된다.
     

    제 2정규형을 충족하는 데도 위와 같은 이상이 발생하는 이유

    📋
    아직도 둘 이상의 의미적 연관성을 하나의 관계로 함께 표현했기 때문이다.
     

    이행적 함수 종속성

    • 기본키에 속하지 않은 일반 속성 값이 기본키에 속하지 않은 또 다른 일반 속성 값을 결정한다.
    • 해결방법: 이행적 종속 관계를 끊어 두 종속 관계를 각기 다른 관계에 표현한다. 즉, 2개의 관계로 분해한다.
    notion image
    notion image
     
     

    ✅ 제 3정규형 (3NF)

    정의

    📋
    어떤 관계 R이 제 2정규형이고, 기본 키에 속하지 않는 모든 속성이 기본키에 대해 이행적 종속이 아니면, 관계 R은 제 3정규형이다.
     

    제 3정규형 점검 방법

    • 제 3정규형은 제 2정규형을 충족하는 관계의 기본키가 아닌 일반 속성이 결정자인지를 검사한다.
    • 일반 속성이 기본키 속성이 아닌 일반 속성에 종속적일 때 제 3정규형에 위배된다.
    notion image
     

    제 3정규형의 문제점

    notion image
    1. 삽입 이상
        • 과목번호 c004의 강의담당교수가 p005라는 사실만 따로 삽입할 수 없다.
    1. 수정 이상
        • 강의담당교수 p001의 담당 과목번호가 c005로 변경될 경우, p001과 관련된 모든 튜플을 찾아 과목번호 속성 값을 한꺼번에 c005로 변경해야 한다.
    1. 삭제 이상
        • 학번 s002인 학생이 교과번호 c002의 수강을 취소하여 이 튜플을 삭제하면 p002 교수가 c002 과목을 강의한다는 정보까지 함께 삭제된다.
         

    제 3정규형을 충족하는 데도 위와 같은 이상이 발생하는 이유

    • 원인: 기본키가 아닌 속성이 기본키 일부 속성의 결정자가 되기 때문이다.
    • 관계의 후보 키가 둘 이상이고 기본 키가 둘 이상의 조합일 때 발생한다.
     

    제 3정규형의 문제점 해결

    📋
    이러한 문제를 해결하려면 기본키가 아닌 결정자를 분리하여 2개의 관계로 분해해야 한다.
    notion image
     
     

    ✅ 보이스코드 정규형 (BCNF)

    • 모든 결정자를 후보키로 만든다. 즉, 기본키가 아니면서 결정자 역할을 하는 속성과 그 결정자에 함수 종속이 되는 속성을 하나의 관계로 분리한다.
    • 이때, 결정자는 원 관계에도 남겨서 외래키 역할을 하도록 한다.
    notion image
    Share article

    soultree

    RSS·Powered by Inblog