본문 바로가기
DB/DB_Modeling

정규화 INTRO

by Mr.DonyStark 2023. 10. 26.

□ 정규화 진행이유

 ○ 테이블 간 중복된 데이터를 방지하여 Anomaly현상 방지

 ○ 테이블 간 중복된 데이터를 방지하여 무결성(Integrity)을 유지하여 DB 안정화 및 최적화 도모

 

예제) 쇼핑리스트 테이블

 ○ 해당 테이블은 쇼핑리스트 정보가 적재되었음

 ○ 주문상품 필드를 보면 다가속성과 복합속성으로 구성되어 있어 정규화에 위배

 ○ 다가속성/복합속성 분리

   - 다가속성을 분리하면 행이 증가

   - 복합속성을 분리하면 필드가 증가됨

 ○ 위 테이블은 다가/복합속성인 필드를 분리하였지만 데이터 중복이 되어 있는 상황으로 1정규화가 필요한 상황임

   - 데이터 중복을 제거하기 위해 테이블 분할 진행

   - 테이블 분할을 통해 주분번호와 주문상세내역 테이블의 1:M 구조 형성

 ○ 위 처럼 1정규화를 진행했으나 두개 이상으로 구성된 PK에서 주로 발생되는 2정규화가 필요한 상황임

  - 식별자 일부에 종속되는 어트리뷰트, 즉, 속성은 제거하고 상품명은 상품코드에만 종속되고 주문번호와는 관계가 없으니 분리하는 작업 진행

  - 이 작업으로 상품테이블과 주문상세내역 테이블은 1:M 관계를 형성함

 ○ 위 처럼 1, 2 정규화를 진행했으나 식별자 이외의 속성간의 종속관계가 발생되는 테이블을 발견하게됨. 이는 3 정규화를 위배되는 행위이며 해당 테이블은 tb_주문번호 임

  - 종속관계가 있으면 중복 값이 생김. 이를 해결하기위해 이행 종속관계를 분해하는 3 정규화를 진행함

  - 이 작업을 통해 주문번호와 고객정보 테이블은 서로 1:M관계를 형성함

 ○ 1, 2, 3정규화를 시행하여 4개의 테이블이 형성되었으며 각 테이블간의 관계가 형성되었음

  - 마스터 테이블 고객, 상품 테이블은 행위 테이블인 주문번호, 주문상세내역 테이블과의 관계가 형성되었음을 알 수 있음. 

'DB > DB_Modeling' 카테고리의 다른 글

2 정규화  (0) 2023.10.26
1 정규화  (0) 2023.10.26
Anomaly : 데이터 이상현상  (1) 2023.10.25
1:1 관계  (1) 2023.10.24
M:N 관계  (0) 2023.10.16