[sql] 반정규화를 적용한 예시: 상품과 카테고리 테이블

관계형 데이터베이스의 반정규화는 데이터 중복성을 허용하여 성능을 향상시키는 과정입니다. 이번 예시에서는 상품과 카테고리 테이블을 사용하여 반정규화를 살펴보겠습니다.

1. 초기 테이블 구조

우선 초기에는 상품과 카테고리가 각각의 테이블로 분리되어 있습니다.

상품(Product) 테이블

| ProductID | ProductName | CategoryID | |———–|—————|————| | 1 | iPhone | 1 | | 2 | Galaxy | 2 | | 3 | iPad | 1 | | 4 | Pixel | 2 |

카테고리(Category) 테이블

| CategoryID | CategoryName | |————|————–| | 1 | 전자제품 | | 2 | 가전제품 |

2. 반정규화 적용

이제 반정규화를 적용하여 상품 테이블에 카테고리 정보를 중복해서 포함시키겠습니다.

반정규화된 상품(Product) 테이블

| ProductID | ProductName | CategoryID | CategoryName | |———–|—————|————|————–| | 1 | iPhone | 1 | 전자제품 | | 2 | Galaxy | 2 | 가전제품 | | 3 | iPad | 1 | 전자제품 | | 4 | Pixel | 2 | 가전제품 |

위와 같이 반정규화를 적용하면 카테고리 테이블의 정보를 중복으로 가지고 있지만, 조인 연산을 피할 수 있어 조회 성능을 향상시킬 수 있습니다.

이렇게 반정규화는 데이터 중복성을 포함하지만 성능 향상을 가져오는 중요한 기법 중 하나입니다.

이상으로 상품과 카테고리 테이블을 사용하여 반정규화를 적용한 예시를 살펴보았습니다.

참고 자료: w3schools