SQL

SQL정리(비정규화)

goshek 2024. 9. 30. 12:30

/*
비정규화
    : 정규화된 DB를 성능 향상을 위해 의도적으로 다시 중복을 허용하는 과정
    
    비정규화의 필요성
    : 조회 성능의 향상, 쿼리의 복잡성 감소등
    >> 시스템의 읽기 성능을 최적화 | 쓰기 작업 보다 읽기 작업이 많을 경우
*/

drop database if exists `비정규화`;
create database `비정규화`;
use `비정규화`;

# 정규화 된 테이블 예시

# 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_detail_id int primary key,
    order_id int,
    product_id int,
    quantitiy 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
);









'SQL' 카테고리의 다른 글

SQL 정리(제 1정규화, 제 2정규화, 제3정규화, BCNF정규화)  (0) 2024.09.30
SQL정리(정규화 개요)  (1) 2024.09.30
SQL정리(ERD)  (0) 2024.09.27
SQL정리(trigger)  (2) 2024.09.27
SQL정리(동적SQL)  (0) 2024.09.27