SQL

[SQL] 비정규화 (De-Nomalization)

wwxs 2024. 9. 30. 10:59

비정규화 (De-Nomalization)

  • = 반정규화
  • 정규화된 DB를 성능 향상을 위해 의도적으로 다시 중복을 허용하는 과정

 

비정규화의 필요성

  • 조회 성능의 향상, 쿼리의 복잡성 감소
  • 시스템의 읽기 성능을 최적화
  • 쓰기 작업보다 읽기 작업이 많을 경우
더보기
더보기

(정규화 된 테이블)

-- 1) 주문 테이블 
create table orders (
	order_id int primary key,
    customer_id int,
    order_date date,
    total_amount int,
    foreign key(customer_id) references customers (customer_id)
);

-- 2) 고객 테이블
create table customers (
	customer_id int primary key,
    name varchar(100),
    address varchar(255)
);

-- 3) 주문 상세 테이블
create table order_details (
	order_details_id int primary key,
    order_id int,
    product_id int,
    quantity int,
    price int,
    foreign key (order_id) references orders (order_id),
	foreign key (product_id) references products (product_id)
);

-- 4) 제품 테이블
create table products (
	product_id int primary key,
    product_name varchar(100),
    price int
);

 

(비정규화 테이블)

# 통합 주문 테이블: 비정규화 적용
create table orders_denormalized (
	order_id int primary key,	-- 주문 번호
    customer_name varchar(100),
    customer_address varchar(255),
    order_date date,
    product_name varchar(100),
    quantity int,
    price int,
    total_amount int
);