본문으로 바로가기

쇼핑몰 서비스의 DB 구축

category MySQL 2024. 10. 1. 11:49

User Table

 

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

 

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

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

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) 테이블을 분리하여 설계한 이유는 뭘까? → 
데이터베이스 정규화 원칙에 기반한 것
💡 정규화는 데이터베이스 설계에서 중요한 과정으로, 데이터 중복을 최소화하고, 데이터 무결성을 향상시키며, 수정, 삽입, 삭제 등의 데이터베이스 작업 시 발생할 수 있는 문제점들을 방지하기 위해 사용됩니다.

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

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

'MySQL' 카테고리의 다른 글

쇼핑몰과 카테고리 2단계  (3) 2024.10.01
쇼핑몰과 카테고리 1단계  (0) 2024.10.01
블로그 서비스의 DB 구축  (1) 2024.10.01
SELF JOIN  (0) 2024.10.01
정규화란(1단계)  (4) 2024.10.01