728x90

정규화(Normalization) :

데이터 처리에 관한 특정의 절차를 설정하는 것으로, 일반적으로 테이블 설계 시, 대상 엔티티(Entity)의 구체적인 속성을 고려하여 테이블을 분류하는 작업의 단계를 의미하며, 제1정규화(1NF), 제2정규화(2NF), 제3정규화(3NF), 제3정규화의 변형(BCNF), 제4정규화(4NF), 제5정규화(5NF)로 분류된다. 정규화는 깊어질수록 데이터 중복성이 줄어드는 반면 테이블 접근(Access)속도는 느려진다. 따라서 일반적인 정규화는 속도 및 데이터 중복성의 Trade-off를 고려하여 제3정규화(3NF) 또는 BCNF 단계에서 결정된다.

 

 

제1정규형 : 하나의 속성에는 하나의 값을 가져야 한다

제2정규형 :  엔터티의 일반속성은 '주식별자 전체'에 종속적이어야 한다

제3정규형 :  엔터티의 일반속성 간에는 서로 종속적이지 않는다. (3정규화는 주식별자를 제외한 칼럼 간에 종속성을 확인해서 종속성이 있으면 분할하는 과정이다.)

 

 

 

SQL전문가가이드 p87.

'상품명' 속성이 '주식별자'가 아닌 상품번호에 대해서만 반복되어 쌓이게 되는 구조.

정리하면 상품명은 주문상세의 식별자인 '주문번호 + 상품번호'가 아닌 상품번호에만 종속적이다. (상품번호에 의해서 식별되는 상황인데 이렇게 되면 안되어서 정규화를 해줘야 한다는 것. 즉 '인터티의 일반속성은 주식별자 전체에 종속적이어야 한다는 제2정규형을 위배한 것. 그래서 '부분 종속성'을 제거해줘야 한다.)

 

 

상품테이블 하나 더 생성해서 상품테이블에서 상품번호에 매칭되는 상품명에서의 상품명만 변경되면 다른 테이블에서 이 테이블의 칼럼을 '참조'하니 변경사항이 생겼을 시 방대한 변경에 대응할 수 있게 된다.

 

 

 

 

 

 

 

 

 

참고:

https://www.youtube.com/watch?v=RXQ1kZ_JHqg 

20:00 분 부터 

 

+ Recent posts