ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 모델링11 - 정규화 이론(2정규화, 3정규화)
    Data Base/관계형 데이터 모델링 2023. 9. 20. 14:10

    정규화 이론(2정규화)

    그림 7-4  2정규화 - 주 식별자 일부에 만 종속된 속성은 별도의 엔티티로 분리한다.

     

    2정규형에서는 모든 속성이 반드시 주 식별자에 전부 종속되어야 한다. 엔티티의 속성 중 일부만 주 식별자 종속될 경우 즉 주식별자가 아닌것에 종속되는 속성이 있을 경우 해당 관계를 가지는 개별 그룹을 분리해 엔티티로 생성해야 한다.  한가지 주목할 점은  1정규화로 생성된 집합은 자식(child)이 되지만, 2정규화로 분리된 집합은 부모(parent)가 된다는 것이다.

    그림 7-5 주 식별자 중 <단체번호>에만 종속된 속성을 별도 엔티티로 분리

    [그림 7-5]의 왼쪽 <계약> 엔티티에서 계약 주체는 <단체명> 혹은 <단체대표명>으로 표현된다고 하자. 이때 이들 값이 변경되면 해당 단체의 모든 계약을 찾아서 바뀐 정보로 변경해주어야 할 것이다. 이는 <단체번호> 에 종속된 <단체명>과<단체대표자명>속성이 <계약> 집합에 포함되어 있기 때문이며, 정규화하여 오른쪽과 같이 별도의 <단체>엔티티로 분리해야 한다.  이때 앞서 1정규화 예시에서 <사원보유자격증> 엔티티가 <사원>의 하위(자식) 엔티티로 부리된 것과 달리, <단체> 엔티티가 계약의 상위(부모)엔티티가 된다.

     

    덧붙여 <계약> 엔티티의 주 식별자가 <계약번호>와 <단체번호>의 조합으로 정의되어 있음에 주목하자. 둘이 결합되어야 결정자로서 유의미해지고, 다른 일반 속성을 종속시킬 수 있다는 의미이다. 즉, 계약 번호는 같지만, 계약 주체인 단체가 다를 경우에는 계약 내용 등이 다를 수 있음을 주 식별자가 설명하고 있다. 이렇듯 주 식별자는 집합 내속성의 결정자로서 집합의 성격을 규정하는 등 다양한 역할을 수행한다. 

     

    정규화 이론(3정규화)

    그림 7-6 정규화 - 주 식별자 외의 모든 속성은 상호 독립적이어야 한다.

    3정규형에서는 주 식별자가 아닌 각 속성들이 서로 종속 관계여서는 안 된다. [그림 7-6]에서 일반 속성인 Atrrib 1과 Atrrib 2 사이에 종속성이 존재한다면 이들은 별도 엔티티로 분리되어야 한다.

     

     

    그림 7-7 속성 간 종속성이 있으면 별도 엔티티로 분리한다.

    위 그림 [그림 7-7]의 왼쪽 <주문> 엔티티의 일반 속성 중 <고객명>과 <고객등급> 속성은 <고객번호>에 함수적으로 종속되어 있다. 따라서 오르쪽과 같이 고객 집합을 별도로 분리하여 <고객> 엔티티로 만드는 과정이 필요하다.

     

    참고로 3정규화까지 수행되었다 할지라도 다중 값 속성 등에 의한 데이터 이상 현산은 여전히 발생할 수 있어 4 또는 5정규화까지 수행할 수도 있으나, 통상 4 정규형 이상의 모델은 폭넓게 사용되지 않는다.

     

    함수적 종속(Functional Dependency)

    어떤 릴레이션 R이 있을 때 속성 X와 Y는  Y가 X의 부분 집합 관계라고 했을때, X값을 알면 바로 Y값을 식별할 수 있고, X값이 달라질때 Y값도 달라지면 , Y는 X에 함수적 종속이라고 한다. 이 경우를 X를 결정자, Y를 종속자 라고한다. 이를 기호로 표현하면 X →Y 이다. 

     

     

    정규화의 의의

    정규화 과정을 통해 정제된 정규형 모델은 다음과 같은 중요한 특징을 가진다.

     

    첫째, 속성 간의 종속성을 기준으로 성격이 유사한 속성들은 모이고 관계없는 속성들은 분리된다. 즉, 속성들끼리 자연스럽게 그룹화 되어 데이터 집합의 범주화가 이루어진다.

     

    둘째, 하나의 주제로 집약된 데이터 구조에서 제대로 된 엔티티가 도출된다. 정규화는 한 엔티티에 여러 그룹의 함수 종속이 있는 것을 없애고 밀접한 속성을 하나의 표에 집약시키는 방법이다. 따라서 데이터의 응집도는 옾고 결합도는 낮게 분리한다. 결국 데이터 본질에 충실한 엔티티를 도출할 수 있다.

     

    셋째, 데이터 중복이 최소화된 효율적이고 구조화된 모델이나온다. 중복에 따른 데이터 이상 현상이 사라지며, 저장 용량 측면에서도 당연히 이익을 보게된다.

     

    넷째, 데이터 간의 종속성을 분석하기 때문에 엔티티명과 더불어 엔티티의 정체성을 가장 잘 표현하는 주 식별자가 정확히 도출된다. 주 식별자는 인스턴스를 구분하는 기준이므로, 집합의 개체 발생 규칙도 검증되어 더 정확해진다.

     

    다섯째, 엔티티가 명확하고 정확해졌기 때문에 업무 변경에 따른 확장성이 좋아진다. 

     

    여섯째, 결국 데이터를 최적의 상태로 담게 된다. 데이터 중복을 최소화함으로써 데이터 무결성을 극대화한다.

     

     

    [출처 - 프로젝트의 성패를 결정짓는 데이터 모델링 이야기 , 김상래 저]

     

    댓글

Designed by Tistory.