정규화 (Normalization)
정규화란 데이터 정합성(데이터의 정확성과 일관성을 유지하고 보장)을 위해 Entity(이하 테이블)를 작은 단위로 분리하는 과정이다.
장점
- 이상 현상 제거 및 방지
- 데이터베이스 구조 확장시 재 디자인 최소화
- 데이터 입력/수정/삭제 성능 향상
단점
- Join 연산 증가
- 데이터 조회 성능 저하
단, 항상 조회 성능을 저하시킨다는 것은 아님. 기본적으로 중복된 데이터를 제거함으로써 조회성능을 향상시킬 수 있음을 알아야한다.
성능을 고려한 데이터 모델링의 순서는
정규화 수행 → DB 용량 산정 → 트랜잭션 유형 파악 → 반정규화(역정규화) → PK/FK 조정 → 데이터 모델 검증
정규화의 종류
1. 1차 정규화
같은 성격과 내용의 속성이 중복될 때,
1. 중복 값은 제거
2. 새로운 테이블 추가 (PK 추가)
3. (기존 테이블과) 1:M 관계 형성
'기능분류코드' 속성 차원에서, 같은 속성인데
칼럼 단위로 반복되고 있다.
→ 1차 정규화 대상으로,
새 테이블을 추가하여
오른쪽 표와 같이 분리할 수 있다.
(모델, 모델유형기능분류는 1:M 관계를 형성한다.)
1:1 관계
- 1:1 관계는 두 개의 엔터티(테이블) 간에 서로 유일한 관계를 갖는 것을 의미한다.
- 예를 들어, 주문 테이블과 배송 정보 테이블 간에 1:1 관계가 있을 수 있다. 각 주문은 한 개의 배송 정보를 갖고 있고, 한 개의 배송 정보는 한 개의 주문에 대응한다.
- 이러한 경우에는 주문 테이블의 기본 키가 배송 정보 테이블의 외래 키가 되거나, 그 반대로 배송 정보 테이블의 기본 키가 주문 테이블의 외래 키가 될 수 있다.
1:M 관계
- 1:M 관계는 한 개의 엔터티가 다른 엔터티와 여러 개의 관계를 갖는 것을 의미한다.
- 예를 들어, 고객 테이블과 주문 테이블 간에 1:M 관계가 있을 수 있다. 한 명의 고객은 여러 개의 주문을 할 수 있지만, 각 주문은 하나의 고객에 대응된다.
- 이러한 경우에는 주문 테이블에는 고객의 식별자인 외래 키가 저장된다. 한 개의 주문이 한 명의 고객과 연결되어 있다.
따라서 1:1 관계는 두 개의 엔터티 간에 서로 유일한 관계를 가지고 있으며, 1:M 관계는 한 개의 엔터티가 다른 엔터티와 여러 개의 관계를 가지고 있다.
2. 2차 정규화
PK(Primary Key)가 2개 이상일 때,종속되는 관계가 있다면 분리한다.
기본키가 '관서번호', '납부자번호'가 2개 이상이므로 이를 구분하여 분리해준다.
이러한 현상을 복합키라고 한다.
함수종속성(FD)
데이터들이 어떠한 기준에 의해서 종속되는 것을 의미.
- 완전 함수적 종속
기본키에 대해서 그 속성이 완전히 종속될 때
- 부분 함수적 종속
기본키 전체가 아니라, 일부에 대해 종속될 때
3. 3차 정규화
기본 키에 의존하지 않고, 일반 컬럼에 의존하는 컬럼이 있다면 이를 제거한다.
직원 테이블에 기본 키인 '사원번호' 외에 의존하는 컬럼이 있다.
부서코드와 부서이름은 '부서' 테이블에 속해야 할 사항이다.
→ 데이터가 중복되어, 저장 공간이 낭비되고 있다.
3차 정규화로 해결한 모습.
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] 비전공자 합격 후기 (0) | 2024.04.02 |
---|---|
[SQLD] SQL 활용 (4) | 2024.03.16 |
[SQLD] SQL 기본 (0) | 2024.03.15 |
[SQLD] 데이터 모델과 SQL (2) | 2024.03.15 |
[SQLD] 데이터 모델링의 이해 (2) | 2024.03.15 |