SQLD
SQLD 정규화
비숑주인
2025. 7. 1. 21:11
정규화
1. 데이터 중복을 최소화한다.
자료가 분산되어서, 자료 처리가 일관적이지 않게 됨.
비효율적인 데이터
데이터의 저장 공간이 낭비됨.
2. 이상 현상이 발생하는 것을 방지
데이터를 변경하는 INSERT/UPDATE/DELETE 작업 시,
정리를 해두지 않으면 이상현상이 발생할 수 있다.
3. 논리적이고 직관적인 테이블 구성
정규화 vs 반정규화
정규화
중복을 최소화하도록 설계하는 기법.
반정규화
"성능 저하가 예상될 때 주로 사용"
- 읽기 성능을 최적화하도록 설계하는 기법
- 데이터를 중복시키거나, 그룹핑.
(Join 비용이 줄어들어서, "빠른 데이터 조회"가 가능)
종류
1차 정규화
속성이 원자값(Atomic Value)을 갖도록 함. "기본키" 보유.
같은 성격과 내용의 속성이 중복될 때,
1. 중복 값은 제거
2. 새로운 테이블 추가 (PK 추가)
3. (기존 테이블과) 1:M 관계 형성
(PK가 잡혀 있으면 1차 정규화는 된 것)

2차 정규화
기본키가 2개 이상의 속성일 때. "부분 함수 종속성 제거"
PK(Primary Key)가 2개 이상일 때,종속되는 관계가 있다면 분리한다.
주문 상품 코드에 따라서 주문 상품이 무조건 따라오면(종속성) 2차 정규화가 필요한 상태이다.

설명
기본키 '관서번호', '납부자번호'가 2개 이상이므로, 이를 복합키라고 한다.복합키 일부분에 종속되는 속성이 있으므로, 이를 구분하여 분리해준다.

설명
관서번호/ 관서번호,납부자번호로 분리하여,
"2차 정규화"를 진행

