MySQL

쇼핑몰 서비스의 DB 구축

H_u 2024. 6. 24. 10:17
728x90
반응형
SMALL

1. 설계

회원가입에 대한 테이블 설계가 필요
상품에 대한 정보를 저장하는 테이블이 필요
주문테이블, 주문상세테이블이 필요하다

 

User Table 설계 도면

Field Type Constraints Desc
user_id INT pk, auto.. 사용자 고유 ID
user_name VARCHAR(50) not null 사용자 이름
email VARCHAR(100) not null, Unique 이메일 주소
password VARCHAR(255) not null 비밀번호
address VARCHAR(255) - 주소
created_at TIMESTAMP Deault
CURRENT_TIMESTAMP
계정 생성 시간

 

Product Table

Field Type Constraints Desc
product_id INT pk, auto.. 상품 고유 ID
product_name VARCHAR(100) not null 상품 이름
description TEXT - 상품 설명
price DECIMARL(10, 2) not null 가격
stock int default 0 재고 수량
created_at TIMESTAMP Deault
CURRENT_TIMESTAMP
상품 등록 시간

 

Orders Table

Field Type Constraints Desc
id INT pk, auto.. 주문 고유 ID
user_id INT not null, FK 사용자 ID
total_price DECIMARL(10, 2) not null 총 주문 금액
created_at TIMESTAMP Deault
CURRENT_TIMESTAMP
주문 시간

 

Order Detail Table

Field Type Constraints Desc
id INT pk, auto.. 주문 상세 고유 ID
order_id INT not null, fk 주문 ID
product_id VARCHAR(100) not null, foreign key 상품 ID
count INT not null 주문 수량
price DECIMARL(10, 2) not null 상품의 주문 가격
주문(orders) 테이블과 주문 상세(order_details) 테이블을 분리하여 설계한 이유는 뭘까?
 데이터베이스 정규화 원칙에 기반한 것
정규화는 데이터베이스 설계에서 중요한 과정으로, 데이터 중복을 최소화하고, 데이터 무결성을 향상시키며, 수정, 삽입, 삭제 등의 데이터베이스 작업 시 발생할 수 있는 문제점들을 방지하기 위해 사용됩니다.

 

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

  • 중복 제거 : 주문 정보와 주문 상세 정보를 하나의 테이블로 관리할 경우, 주문 정보(예: 주문자 ID, 주문 날짜)가 각 주문 상품마다 반복적으로 저장된다. 이는 데이터 중복을 초래하고, 디스크 공간을 불필요하게 사용하게 한다.
728x90
반응형
SMALL

'MySQL' 카테고리의 다른 글

쇼핑몰과 카테고리 1단계  (0) 2024.06.24
블로그 서비스의 DB 구축  (0) 2024.06.24
SELF JOIN  (0) 2024.06.24
정규화란(1단계)  (0) 2024.06.24
DML, DDL, DCL 이란?  (0) 2024.06.24