본문 바로가기

MySQL

쇼핑몰 서비스의 DB 구축

회원가입에 대한 테이블 설계가 필요하다.

상품에 대한 정보를 저장하는 테이블이 필요하다.

주문테이블, 주문 상세 테이블이 필요하다.

 

 

User Table 설계 도면
Field
Type
Constraints
desc
id
INT
pk, auto_increment
사용자 고유 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
desc
id
int
pk, auto_increment
식별자
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, auto_increment 주문 고유 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, auto_increment 주문 상세 고유 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, 주문 날짜)가 각 주문 상품마다 반복적으로 저장된다. 이는 데이터 중복을 초래하고, 디스크 공간을 불필요하게 사용하게 한다.

 

728x90

'MySQL' 카테고리의 다른 글

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