/*
비정규화
: 정규화된 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 |