35강 - 정규화
- 데이터베이스의 테이블을 규정된 올바른 형태로 변경하고 분할하는 것. (데이터베이스의 설계 단계에서 행해짐)
- 경우에 따라서 기존 시스템을 재검토할 때 정규화하는 경우도 있음.
1. 정규화
- 정규화는 단계적으로 실시. 그 첫번째 단계가 제1 정규화로, 이를 시행하면 제1 정규형 테이블을 만들 수 있음.
2. 제1 정규형
- 관계형 데이터베이스의 테이블에는 하나의 셀에 하나의 값만 저장할 수 있다는 제약이 있음.
예) 적어도 상품코드와 상품명, 개수 데이터를 담는 세 개의 열로 나누어야 함.
; 하나의 셀에 하나의 값만 저장할 수 있도록 하고, 반복되는 부분을 세로(행) 방향으로 늘려나가는 것이 제1정규화의 제1단계.
- 제1정규화에서 중복을 제거하는 테이블의 분할도 이루어짐.
- 주문번호에는 중복된 값이 존재하지 않기 때문에 기본키로 지정할 수 있음.
- 한편 주문상품 테이블에서는 주문 번호와 상품코드를 한데 묶어 기본키로 지정할 수 있음.
제2정규형
- 데이터가 중복하는 부분을 찾아내어 테이블로 분할해 나감.
- 이때 기본키에 의해 특정되는 열과 그렇지 않은 열로 나누는 것으로 정규화가 이루어짐.
- 부분 함수종속성을 찾아내서 테이블을 분할하는 것이 제2정규화.
4. 제3정규형
- 중복하는 부분ㅇ르 찾아내어 테이블을 분할하는 수법.
- 네모난 상자(엔티티)가 테이블을 의미.
- 테이블 간의 선이 연계(릴레이션십)을 의미, 1 대多, 多대 1 등과 같은 다중도로도 표시.
예) 주문 상품 테이블 쪽의 데이터에서 상품 테이블을 보면 상품 테이블의 하나의 행을 특정하는 것. (이는 상품코드가 기본키인 만큼 당연한 일)
- 그 밖에 주문상품의 상품코드에 (FK)라고 적혀 있는 것은 외부키 속성을 가진다는 의미.
5, 정규화의 목적
- 정규화에서는 중복하거나 반복되는부분을 찾아내서 테이블을 분할하고 기본키를 작성해 사용하는 것을 기본 개념으로 삼음.
; 하나의 데이터는 한 곳에 있어야 한다