1. 2정규형
2정규형은 주식별자가 두개이상인 릴레이션에서 발생함. 릴레이션의 모든 속성이 후보실별자 전체에 종속적이어야함
만약 일반속성 중에 후보식별자 전체에 종속되지 않고 일부에 종속된 속성이 있다면 2정규형이 아니다.
모든 비식별자 속성은 후보실별자 속성에 완전 함수 종속 되어야 함.
부분종속으로 발생한 종복데이터를 제거하는 것이 2정규화
2정규화는 후보식별자를 구성하는 속성이 두개 이상일때만 대상이 되고 단일 속성일때는 대상이 안됨
일반속성중에서 후보식별자 전체에 종속적이지 않은 속성을 찾아 기본엔티티에서 젝거하고, 그속성의 결정자를 주식별자로 하는 새로운 상위 엔티티를 생성하는 것이 2정규화
주문상품 엔티티의 상품명 속성은 중복속성[이다. 주문한 상품의 상품명을 알려면 상품엔티티와 조인해야 하지만 조인하지 않으려고 상품명을 주문상품엔티티에 중복시킴
상품엔티티가 없다면 부분함수 종속이발생했기 때문에 2정규형을 위반한 모델이지만 상품엔티티가 존재하기 때문에 단순히 중복속성을 사용한 비정규형 모델
(어떤모델이 중복속성을 사용한 비정규현 모델인지 판별가능하야함/ 중복데이터를 찾아서 제거하는 것이 데이터 모델리의 기본이라는 것을 염두해두어야함)
2. 2정규형 위반인가?
- 고객그룹엔티티는 고객별로 그룹을 만들어서 사용하도록 한 엔티티
고객그룹 #고객번호 #그룹번호 *그룹명
이 엔티티에서 그룹번호 속성의 의미를 전체 고객이 선택할 수 있는 공통 번호로 생각할수 있음
그러나 그룹번호가 같은 고객은 그룹명이 같다고 하면 2정규형을 위반한 모델임
고객그룹 #고객번호 #그룹순번 *고객그룹명
고객그룹 엔티티 단지 고객이 그룹명을 지정해서 사용할 수 있도록하는 엔터티다.
고객그룹명이 핵심속성이기 때문에 업무식별자는 고객번호+고객그룹명이 된다.
그러나 고객그룹명이 가변적인 텍스트라서 부분 인조 식별자인 "그룹순번"을 사용하는 것
고객그룹명 속성도 그룹순번속성에만 종속된게 아니라 고객번호 속성까지 포함해서 종속된것이기 때문에 속성명에 "고객"을 붙여 명확히 해야한다. 엔티티를 정확하기 분석해서 엔티티명과 속성명을 명확하기 사용하며 이런문제는 안생김
'관계형데이터모데링노트 요약' 카테고리의 다른 글
4정규형 (1) | 2023.10.22 |
---|---|
3정규형-BC정규형 (1) | 2023.10.20 |
1정규형 (1) | 2023.10.20 |
아노말리 (0) | 2023.10.17 |
정규화를 하면 좋아지는점 (0) | 2023.10.17 |