[sql] 반정규화를 사용한 실제 사례: e커머스 플랫폼
e커머스 플랫폼은 많은 양의 거래 데이터와 상품 정보를 다루기 때문에 반정규화가 도움이 될 수 있습니다. 반정규화는 데이터베이스의 성능을 향상시키고 데이터 모델을 단순화하는 데 도움이 됩니다. 이를테면, e커머스 플랫폼의 제품 카탈로그 데이터베이스를 살펴보면, 다음과 같은 반정규화 사례를 발견할 수 있습니다.
1. 카테고리와 제품 정보
기본적으로 정규화된 데이터베이스 설계에서는 제품과 카테고리 정보를 따로 저장합니다. 그러나 e커머스 플랫폼에서는 자주 함께 사용되는 제품과 카테고리 정보를 하나로 결합하여 저장함으로써 성능을 향상시킬 수 있습니다.
예시:
CREATE TABLE Products (
product_id INT PRIMARY KEY,
product_name VARCHAR(255),
category_id INT,
...
);
CREATE TABLE Categories (
category_id INT PRIMARY KEY,
category_name VARCHAR(255),
...
);
반정규화된 방식:
CREATE TABLE Product_Category (
product_id INT,
product_name VARCHAR(255),
category_id INT,
category_name VARCHAR(255),
...
);
2. 주문 정보와 제품 정보
주문 정보와 제품 정보도 자주 함께 사용되기 때문에 이를 하나의 테이블로 결합하여 저장함으로써 조인 연산을 줄일 수 있습니다.
예시:
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
...
);
CREATE TABLE Order_Details (
order_id INT,
product_id INT,
quantity INT,
...
);
CREATE TABLE Products (
product_id INT PRIMARY KEY,
product_name VARCHAR(255),
...
);
반정규화된 방식:
CREATE TABLE Order_Items (
order_id INT,
customer_id INT,
order_date DATE,
product_id INT,
product_name VARCHAR(255),
quantity INT,
...
);
반정규화는 적절하게 사용될 경우 성능 향상을 가져올 수 있지만, 지나치게 사용할 경우 데이터의 무결성이 줄어들고 중복 데이터가 발생할 수 있으므로 신중한 고려가 필요합니다.
참고 자료
- Fowler, M. (2018). Patterns of Enterprise Application Architecture. Addison-Wesley.
- Ambler, S. W. (2013). Refactoring Databases: Evolutionary Database Design. Addison-Wesley.