[sql] 반정규화의 예시: 조인 효율화
관계형 데이터베이스에서는 정규화 과정을 통해 중복을 제거하고 데이터를 구조화하여 저장합니다. 그러나 때로는 이 정규화된 구조로 인해 조회 성능이 저하될 수 있습니다. 이때 반정규화를 사용하여 성능을 개선할 수 있습니다.
예시: 주문 및 제품 정보
예를 들어, 주문 관련 정보와 제품 관련 정보가 다음과 같이 분리되어 있다고 가정해 봅시다.
CREATE TABLE 주문 (
주문번호 INT PRIMARY KEY,
고객번호 INT,
주문일자 DATE
);
CREATE TABLE 제품 (
제품번호 INT PRIMARY KEY,
제품명 VARCHAR(50),
가격 DECIMAL(10, 2)
);
이 구조에서는 주문 정보와 제품 정보를 조회하기 위해 조인 연산을 사용해야 합니다.
반정규화
이때 반정규화를 통해 주문 테이블에 제품 정보를 포함하여 저장한다면 조인 연산을 줄일 수 있습니다.
CREATE TABLE 주문 (
주문번호 INT PRIMARY KEY,
고객번호 INT,
주문일자 DATE,
제품번호 INT,
제품명 VARCHAR(50),
가격 DECIMAL(10, 2)
);
이렇게 주문 테이블에 제품 정보를 포함시킴으로써 조인 연산의 효율을 개선할 수 있습니다.
결론
반정규화의 목표는 데이터베이스 성능 향상이며, 주로 읽기 작업이 많은 시스템에서 유용합니다. 그러나 이는 데이터 중복과 데이터 일관성에 대한 책임을 사용자가 직접 관리해야 한다는 단점이 있습니다.