2-1. 정규화 ( 제 1 정규형, 제 2 정규형 )
정규화가 왜 이루어져야 하는지 ? 왜 필요로 하는지 알아야한다..ㅎ
정규화가 우선 DB 를 어떻게 해야 효율적으로 설계할 수 있는지, 구현할 수 있는지에 대한 것이다.
1. 제 1정규형 : 모든 속성은 반드시 하나의 값을 가져야한다.
- 예를 들면) 연락처 속성에서 다중 값이 들어가는 경우를 생각해보자
이럴 경우에는 1 고객 당 여러 연락처가 저장된 케이스이다.
하지만 이럴 경우에는 '정우진'이라는 고객에서 어떤 속성을 가져가야 하는지 해당 값을 추출하기가 매우 어렵다.
연락처 정보에서 집전화 번호와 또한 핸드폰 번호를 구별하기가 상당히 어렵다.
정규화 이후
이럴 경우에는 나누어서 해당 정규화를 나누어서 저장 할 수가 있다.
이런식으로 정규화를 나누어서 설정할 수 있다. 그런식으로 우선 연락처 테이블과 고객 테이블을 나누어서 하면 더 좋다. 이 뿐만 아니라 제 1 정규형은 다중 값 말고도 다른 유형의 중복 데이터도 적용할 수 있다.
제2 정규형 : 엔터티의 일반 속성은 주식별자 전체에 종속적이어야 한다.
이게 무슨 말일까??
해당 주문 상세 데이터를 확인해보면 'SQL 전문가 가이드' 라는 데이터가 반복되는 것을 볼 수 있다. 이런식으로 상품번호와 상품명이 서로 ( 결정자 와 / 종속자 ) 의 관계임을 볼수 있다.
- 결정자 : 기준 값
- 종속자 : 결정자에 종속되는 값.
따라서 위의 주문 상세 데이터에 대한 정규화를 진행한다면 상품 테이블과 주문상세 데이터 테이블로 나눌 수 있을 것이다.
이렇게 데이터를 관리하면 주문상세 테이블에서는 "상품번호" 만 들고 있고 상품번호는 매핑키로 상품 엔터티에서 원하는 상품정보 데이터를 가져올 수 있다. 위의 정규화된 전 테이블 같이 정보를 뽑아오고 싶을 경우 "JOIN"으로 뽑아오면 된다.