MySQL/MySQL 활용

쇼핑몰 서비스의 DB 구축 - 3

CNOW 2024. 6. 11. 21:03

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) 테이블을 분리하여 설계한 이유는 뭘까? → 데이터베이스 정규화 원칙에 기반한 것

 

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

 

 

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

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