MySQL

쇼핑몰 서비스의 DB 구축

ryeonng 2024. 6. 12. 16:19

테이블 설계

 

User Table

Field Type Constraints description
id
INT
pk, auto..
사용자 고유 ID
username
VARCHAR(50)
not null
사용자 이름
email
VARCHAR(100)
not null, Unique
이메일 주소
password
VARCHAR(255)

not null
비밀번호
address
VARCHAR(255)
-
주소
created_at
TIMESTAMP
Default CURRENT_TIMESTAMP
계성 생성 시간

 

Product Table

Field Type Constraints description
id
int
pk, auto..
식별자
name
varchar(100)
not null
상품 이름
description
TEXT
-
상품 설명
price
DECIMARL(10, 2)
not null
가격
stock
int
default 0
재고 수량
created_at
TIMESTAMP
Default CURRENT_TIMESTAMP
상품 등록 시간

 

Order Table

Field Type Constraints description
id
int
pk, au-in..
주문 고유 ID
user_id
int
not null, fk
주문한 사용자에 ID
total_price
DECIMAL(10,2)
not null
총 주문 금액
created_at
TIMESTAMP
defualt C_T
주문 시간

 

Order Detail Table

Field Type Constraints description
id
int
pk, au_in
주문 상세 고유 ID
order_id
int
not null, fk
주문 ID
proudct_id
int
not null, fk
주문한 상품 ID
count
int
not null
주문 수량
price
DECIMAL(10,2)
not null
상품의 주문 가격

 

주문(orders) 테이블과 주문 상세 (order_details) 테이블을 분리하여 설계한 이유는 무엇일까?
→ 데이터베이스 정규화 원칙에 기반한 것

 

정규화는 데이터베이스 설계에서 중요한 과정으로, 데이터 중복을 최소화하고, 데이터 무결성을 향상시키며, 수정, 삽입, 삭제 등의 데이터베이스 작업 시 발생할 수 있는 문제점들을 방지하기 위해 사용된다.

 

주문과 주문 상세 테이블 분리의 목적

 

중복 제거 : 주문 정보와 주문 상세 정보를 하나의 테이블로 관리할 경우, 주문 정보 (예: 주문자 ID, 주문 날짜)가 각 주문 상품마다 반복적으로 저장된다.

이는 데이터 중복을 초래하고, 디스크 공간을 불필요하게 사용하게 한다.

 

'MySQL' 카테고리의 다른 글

제 1정규화(First Normal Form, 1NF)  (0) 2024.06.13
서브 쿼리(subquery)  (0) 2024.06.13
블로그 서비스의 DB 구축  (0) 2024.06.12
SELF JOIN  (0) 2024.06.12
정규화(1단계)  (1) 2024.06.11