정규화란?
데이터베이스에서 정규화는 관계형 데이터 모델 이론에서 중복 정보 정의를 최소화하여
논리 데이터 모델링의 목적인 정확성, 일관성, 단순성, 비 중복성, 안정성을 만족시키는
최적의(Optimal) 개념적 데이터를 만드는 것을 정규화라고 합니다.
1972년 E.F CODE 박사에 의해 제안된 이론으로 실세계에서 발생하는 데이터를 수학적인 방법에 의해
구조화시켜 체계적으로 관리할 수 있도록 한 이론
정규화 필요성
- 입력이상 : 데이터 입력시 필요없는 속성까지 입력
- 수정이상 : 데이터 수정시 원하지 않는 데이터까지 수정
- 삭제이상 : 데이터 삭제피 필요한 데이터까지 삭제
정규화 종류
- 1차 정규화 : 모든 속성은 원자값을 가짐 복수의 속성 값을 갖는 속성을 분리
- 2차 정규화 : 주식별자에 종속적이지 않은 속성의 분리, 부분 종속 속성을 분리
- 3차 정규화 : 속성에 종속적인 속성의 분리, 이전 종속 속성의 분리
1차 정규화 사례
모니터, 마우스가 여러개가 있어서 문제가 있음
- 입력 이상 : 주문이 발생되어야만 제품 정보를 등록할 수 있다.
- 수정 이상 : 마우스의 수량을 9702에서 15000으로 변경하고자 한다면 데이터를 3번 수정해야 한다.
- 삭제 이상 : 제품번호가 1201인 스피커를 주문한 내역을 삭제하면 제품명, 재고수량 정보도 모두 삭제된다.
이에 따라 주문 관련 정보와 제품 관련정보를 분리하여 1차 정규화 실시가 필요합니다.
이어서 2차 정규화에 대해서 알아보겠습니다.
- 입력 이상 : 고객정보 입력 시 주문정보도 입력해야 함
- 수정 이상 : 만약 주문번호 AB345의 우선순위를 1에서 10으로 수정할 경우, 1001+AB345와 1007+AB345를 같이 수정해야 함
- 삭제 이상 : 주문번호 삭제시 고객번호도 함께 삭제됨
2차 정규화는 모든 속성은 기본키에만 종속되어야 하고, 일부에만 종속되면 안된다는 개념입니다.
1차 정규화를 실시했지만, 여전히 아래와 같은 문제가 있습니다.
- 제품번호 + 주문번호에 종속적인 속성 : 주문수량
- 주문번호에 종속적인 속성 : 수출여부, 고객번호, 사업자번호, 우선순위
이에 따라 주문번호가 기본키임 테이블과 제품번호 주문번호가 기본키인 테이블인 주문목록으로 쪼개야 합니다.
마지막 3차 정규화는 기본키가 아닌 다른 속성들이 종속되면 안된다는 개념입니다.
- 입력 이상 : 새로운 고객 등록 시 주문이 없으면 입력이 안됨
- 수정 이상 : 한 고객이 여러 번 주문한 경우 고객 정보가 반복적으로 발생. 고객 정보 수정시 여러 개의 데이터를 수정해야 한다.
- 삭제 이상 : 고객번호 4520이 주문을 취소하면 주문 정보만 삭제되는 것이 아니라 고객 정보도 모두 삭제된다.
이 문제에서는 고객번호에 사업자번호가 포함되어 있는데요.
이 고객번호에 종속적인 속성을 분리하여 별도 테이블로 만드는 작업입니다.
이렇게 정규화에 대해서 알아보았는데요.
정리하면 아래와 같습니다.
구분 | 개념 | 확인사항 | 비고 |
1차정규화 | 모든 속성은 반드시 하나의 속성만 가져야 함(원자성) | 하나의 속성에 여러개 값이 있는지 확인 | |
2차정규화 | 부분함수 종속성을 제거 | 기본키의 일부 속성에 종속되는 케이스 찾기 | |
3차정규화 | 이행함수 종속성을 제거 | 식별자가 아닌 속성이 다른 속성을 결정하는지 확 |
정규화 참고 사이트
https://tech.devgear.co.kr/?mid=db_kb&page=4&document_srl=333
'Programming > SQLD' 카테고리의 다른 글
SQLD 자격증 취득 - 시험 등록하기 (0) | 2022.10.22 |
---|---|
Mariadb fulltext index 사용하기 (0) | 2022.10.14 |
SQL 명령어 종류 - DDL/DML/DCL/TCL (0) | 2022.09.18 |
데이터 모델링의 이해 (0) | 2022.09.09 |
SQLD 자격증 준비하기 (0) | 2022.08.28 |