정규화
관계형 데이터베이스(테이블 간에 관계를 맺는) 에서 불필요한 데이터 중복을 최소화함으로써 저장공간을 최소화하고 데이터 변경 시 데이터의 불일치성을 최소화하기 위해 엔티티를 분리하는 작업이다.
제 1 정규형
‘모든 속성은 반드시 하나의 값을 가진‘ 정규형이며, 1 정규형과 관련된 속성은
다가 속성(multivalued attributes), 복합 속성(composite attributes), 반복 속성 등이 있다.
- 다가 속성(multivalued attributes)
같은 종류의 깂을 여러 개 가지는 속성을 뜻하며 아래와 같이 전화번호가 2개의 값들을 가지고 있다. 엔티티의 속성은 단일 값을 가져야 하므로 별도의 엔티티로 분리하여야 한다.
- 반복 속성
전화번호1, 전화번호 2 속성은 전화번호의 종류일 뿐이다. 하나의 속성에 여러 개의 값을 다른 표현으로 한 것뿐이다. 반복되는 속성은 오른쪽 아래의 그림과 같이 전화구분으로 구분하여 전화번호에 대해 하나의 속성으로 관리하도록 분리하여야 한다.
제 2 정규형
‘엔터티의 모든 속성이 주 식별자 전체에 종속적인‘ 정규형이며,
일반 속성 중에 주 식별자 전체에 종속적이지 않고 주 식별자를 구성하는 속성 일부에
부분 종속(Partial Dependency)적인 속성이 있다면 그 속성을 엔터티에서 분리해야 한다.
- 부분 함수적 종속성 제거
주문상품상세 엔터티에서 주문수량은 주문번호+상품코드 주식별자 전체에 종속적이지만 상품명은 주문번호+상품코드가 아닌 상품코드에만 부분 종속적인 속성이다. 따라서 부분 종속적인 관계의 속성을 따로 분리해야 하므로 주문상세 엔터티, 상품 엔터티로 분리할 수 있다.
▽ 주문번호로만 주문수량을 알 수 없다. 주문번호와 상품코드를 알아야 어떤 상품을 얼마큼 주문했는지 알 수 있다. 즉 주문수량은 주문번호+상품코드 주 식별자 전체에 종속적이라고 확인할 수 있다. 상품명은 상품코드만 알고 있어도 판별할 수 있다. 즉 상품명은 주 식별자를 구성하는 속성 일부에 부분 종속적인 속성이다.
제 3 정규형
‘일반 속성 간에는 서로 종속되지 않은‘ 정규형이며,
3 정규형의 대상이 되는 속성을 이행 종속 속성(Transitive Dependency Attribute) 이라고 한다.
- 이행 종속 속성 제거
주문고객 엔터티의 일반 속성인 고객명이 또 다른 일반 속성인 고객번호에 종속적이므로 엔터티로 분리해야 한다.
▽ 제 2 정규형의 부분 함수 종속과 다른 점은 제 2 정규형은 상품명이 식별자(주문번호+상품코드)에 부분 종속(상품코드)적인 속성이였고 제 3 정규형은 고객명이 일반 속성(고객번호)에 종속적인 관계이다.
▶ DBTechBiz 끄적끄적
모델 검토를 진행할 때 제 1, 2, 3 정규형이 어떤 위반인지 파악하기보다는 엔터티의 속성들의 관계를 보면서 계속 종속 관계를 제거(엔터티 분리)하면서 진행하다 보면 데이터 기반의 모델링을 수행하게 됩니다.
반응형
'Database > SQL 기초교육' 카테고리의 다른 글
SQL 기초 교육과정 4 (관계형 데이터베이스와 SQL) (0) | 2022.08.26 |
---|---|
SQL 기초 교육과정 2 (데이터베이스 정의) (0) | 2022.08.19 |
SQL 기초 교육과정 1 (0) | 2022.08.19 |
댓글