<db 설계>

-- 사용자 테이블
CREATE TABLE members (
member_id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
name VARCHAR(100),
membership VARCHAR(50), --사용자인지 관리자인지 확인하기 위해
PRIMARY KEY (member_id)
);
-- 상품 테이블
CREATE TABLE items (
item_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
size VARCHAR(100),
tip VARCHAR(100),
delivery_price INT,
price INT NOT NULL,
stock_quantity INT,
category VARCHAR(50),
PRIMARY KEY (item_id)
);
-- 이미지 테이블
CREATE TABLE upload_images (
image_id INT AUTO_INCREMENT PRIMARY KEY,
item_id INT,
qna_id INT,
review_id INT,
original_filename VARCHAR(255),
saved_filename VARCHAR(255),
PRIMARY KEY (image_id),
FOREIGN KEY (item_id) REFERENCES items(item_id),
FOREIGN KEY (qna_id) REFERENCES qna(qna_id),
FOREIGN KEY (review_id) REFERENCES reviews(review_id)
);
-- 주문 테이블
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
total_price DECIMAL(10, 2) NOT NULL,
status VARCHAR(50), -- status: 발송전, 발송완료
PRIMARY KEY (order_id),
FOREIGN KEY (member_id) REFERENCES members(member_id)
);
-- 주문 상세 테이블
CREATE TABLE order_details (
order_detail_id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT,
item_id INT,
order_price INT,
quantity INT NOT NULL,
PRIMARY KEY (order_detail_id),
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (item_id) REFERENCES items(item_id)
);
-- 배송지 테이블
CREATE TABLE deliverys (
delivery_id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT,
order_id INT,
delivery_name VARCHAR(100) NOT NULL,
member_name VARCHAR(100) NOT NULL,
zipcode VARCHAR(255) NOT NULL, --우편번호
street_address VARCHAR(255) NOT NULL, --도로명주소
detail_address VARCHAR(255) NOT NULL, --상세주소
phone_number VARCHAR(20) NOT NULL,
PRIMARY KEY (delivery_id),
FOREIGN KEY (member_id) REFERENCES members(member_id)
FOREIGN KEY (order_id) REFERENCES orders(order_id)
);
-- 위시리스트 테이블
CREATE TABLE wishlists (
wishlist_id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT,
item_id INT,
PRIMARY KEY (wishlist_id),
FOREIGN KEY (member_id) REFERENCES members(member_id),
FOREIGN KEY (item_id) REFERENCES items(item_id)
);
-- 장바구니 테이블
CREATE TABLE carts (
cart_id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT,
item_id INT,
quantity INT NOT NULL,
PRIMARY KEY (cart_id),
FOREIGN KEY (member_id) REFERENCES members(member_id),
FOREIGN KEY (item_id) REFERENCES items(item_id)
);
-- 리뷰 테이블
CREATE TABLE reviews (
review_id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT,
item_id INT,
rating INT NOT NULL, --별점
title VARCHAR(50),
content TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (review_id),
FOREIGN KEY (member_id) REFERENCES members(member_id),
FOREIGN KEY (item_id) REFERENCES items(item_id)
);
-- Q&A 테이블
CREATE TABLE qna (
qna_id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT,
item_id INT,
title VARCHAR(50),
content TEXT,
answer TEXT, --답변하면 answer에 기록되며 answer_status COMPLETE으로 변경
answer_status VARCHAR(50), --answer_status: READY, COMPLETE
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (qna_id),
FOREIGN KEY (member_id) REFERENCES members(member_id),
FOREIGN KEY (item_id) REFERENCES items(item_id)
);
'web > Bakery Shop Project' 카테고리의 다른 글
| 쇼핑몰 구현 6 - 라이브러리 설치, Entity 생성 (0) | 2024.02.23 |
|---|---|
| 쇼핑몰 구현 5 - 설계 & 결과 (0) | 2024.02.22 |
| 쇼핑몰 구현 4 - API 엔드포인트 설계 (0) | 2024.01.31 |
| 쇼핑몰 구현 1 - 주요기능 (0) | 2024.01.31 |
| 쇼핑몰 구현 2 - UI설계 (0) | 2024.01.31 |