1. 정규화 순서도
* 4, 5 정규형은 생략
2. 제 1 정규형(First Normal Form)
▶ 반복그룹(repeating group)이란?
- 복합 애트리뷰트(composite attribute)
- 다치 애트리뷰트(multivalue attribute)
- 중첩 릴레이션(nested relation)
▶ Example 분석
<고객테이블 - 2>에 대한 갱신이상 분석
◑ 수정이상(Modification Anomaly)
- 고객명이 취미의 수만큼 중복되어 저장 -> 취미의 수가 많을 경우 수정이상이 발생할
가능성 높다
◑ 삭제이상(Deletion Anomaly)
- 등산을 취미로 갖는 고객이 홍길동 1명인 경우, 홍길동 고객정보를 삭제하면 등산의
취미정보도 삭제되고, 등산정보를 삭제하는 경우 홍길동 고객정보도 같이 삭제된다.
◑ 삽입이상(Insertion Anomaly)
- 고객번호가 주키이므로 테니스라는 취미정보를 추가하는 경우, 테니스를 취미로 갖는
고객이 아직 없으므로 삽입이 불가능하다(주키는 null값을 못가지므로).
<고객테이블 - 2>에 대한 갱신이상 발생 원인
고객번호와 고객명은 (고객번호) -> (고객명) 으로 함수적 종속관계를 갖으나
고객번호와 취미는 함수적 종속관계가 아니다.
★ 보충 - L자형 테이블 ★
테이블의 데이터를 null값을 가지고 있는 데이터를 위쪽으로 정리했을 때 위쪽의 컬럼들이 null값을 가지는 관계로 빈 공간이 되어 전체적 모양이 L자 형태로 나타나는 테이블
위에서 보는 바와 같이, 반복그룹을 column을 추가하여 제거하는 <고객테이블 - B>경우, L자형 테이블이 나타난다. <고객테이블 - A>의 경우는 앞서 설명한 바와 같이 불필요한 데이터의 중복이 나타나고 있다.
L자형 테이블은 일반적으로 가장 많이 나타나는 테이블구조로서, 모든 정보를 한꺼번에 한 테이블에 넣도록 설계하는 경우에 자주 나타난다. 규모가 작은 웹사이트에서 회원정보를 적절히 분리하지 않고 한 테이블에 모조리 다 넣는 경우가 그 대표적 예이다.
A, B 두 테이블 모두 비효율적인 테이블구조이며 앞서 본 바와 같이 두 개의 테이블로 분해하는 것이 바람직하다.
[출처] 11. 정규화(Normalization)2 - 제 1 정규형|작성자 행인