데이터베이스 모델 설계를 진행합니다.
MySQL 5.7을 사용합니다.
테이블 목록
논리명 | 물리명 |
사용자 | users |
권한 | authorities |
상품 | product |
장바구니 | basket |
주문 | order |
게시판 | board |
카테고리 | category |
테이블 정의
users
CREATE TABLE `users` (
`username` varchar(50) NOT NULL,
`password` varchar(500) NOT NULL,
`enabled` tinyint(4) NOT NULL,
`create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`username`)
)
논리명 | 물리명 |
username | 사용자 식별자 |
password | 비밀번호 |
enabled | 사용 여부 |
create_timestamp | 생성 날짜 |
update_timestamp | 업데이트 날짜 |
authorities
CREATE TABLE `authorities` (
`username` varchar(50) NOT NULL,
`authority` varchar(50) NOT NULL,
`create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`username`,`authority`),
CONSTRAINT `authorities_FK` FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
)
논리명 | 물리명 |
username | 사용자 식별자 |
authority | 권한 |
create_timestamp | 생성 날짜 |
update_timestamp | 업데이트 날짜 |
product
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(500) NOT NULL,
`price` int(10) unsigned NOT NULL,
`description` varchar(2000) NOT NULL,
`image_url` varchar(200) NOT NULL,
`color` varchar(200) NOT NULL,
`size` varchar(200) NOT NULL,
`discount` int(11) NOT NULL,
`category_id` int(11) NOT NULL,
`create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `product_FK` (`category_id`),
CONSTRAINT `product_FK` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`)
)
논리명 | 물리명 |
id | 상품 식별자 |
name | 상품명 |
price | 상품 가격 |
description | 상품 설명 |
image_url | 상품 이미지 URL |
color | 색상 |
size | 사이즈 |
discount | 할인율 |
category_id | 메뉴 식별자 |
create_timestamp | 생성 날짜 |
update_timestamp | 업데이트 날짜 |
basket
CREATE TABLE `basket` (
`username` varchar(50) NOT NULL,
`product_id` int(11) NOT NULL,
`count` int(10) unsigned NOT NULL,
`create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`username`),
KEY `basket_FK_product_id` (`product_id`),
CONSTRAINT `basket_FK` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`),
CONSTRAINT `basket_FK_username` FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
)
논리명 | 물리명 |
username | 사용자 식별자 |
product_id | 상품 식별자 |
count | 갯수 |
create_timestamp | 생성 날짜 |
update_timestamp | 업데이트 날짜 |
order
CREATE TABLE `order` (
`id` varchar(20) NOT NULL,
`username` varchar(50) NOT NULL,
`product_id` int(11) NOT NULL,
`status` enum('ready','delivery','complete') NOT NULL,
`create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `order_FK` (`product_id`),
KEY `order_FK_1` (`username`),
CONSTRAINT `order_FK` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`),
CONSTRAINT `order_FK_1` FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
)
논리명 | 물리명 |
id | 주문 식별자 |
username | 사용자 식별자 |
product_id | 상품 식별자 |
status | 상태 |
create_timestamp | 생성 날짜 |
update_timestamp | 업데이트 날짜 |
board
CREATE TABLE `board` (
`id` varchar(20) NOT NULL,
`username` varchar(50) NOT NULL,
`type` varchar(20) NOT NULL,
`content` blob NOT NULL,
`create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `board_FK` (`username`),
CONSTRAINT `board_FK` FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
)
논리명 | 물리명 |
id | 게시판 식별자 |
username | 사용자 식별자 |
type | 유형 |
content | 내용 |
create_timestamp | 생성 날짜 |
update_timestamp | 업데이트 날짜 |
category
CREATE TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_parent` int(11) NOT NULL DEFAULT '0',
`title` varchar(200) NOT NULL,
`icon` varchar(200) NOT NULL,
`description` varchar(2000) DEFAULT '',
`create_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
논리명 | 물리명 |
id | 카테고리 식별자 |
id_parent | 부모 카테고리 식별자 |
title | 카테고리 명칭 |
icon | 카테고리 아이콘 |
description | 설명 |
create_timestamp | 생성 날짜 |
update_timestamp | 업데이트 날짜 |
ERD
References
'IT 프로젝트 > 쇼핑몰 만들기' 카테고리의 다른 글
[Spring Boot] 스프링 부트 프로젝트/쇼핑몰 만들기 - 화면 구성 (0) | 2020.01.05 |
---|---|
[Spring Boot] 스프링 부트 프로젝트/쇼핑몰 만들기 - 개발 환경 구성 (Visual Studio Code) (2) | 2020.01.02 |
[Spring Boot] 스프링 부트 프로젝트/쇼핑몰 만들기 - 개발 환경 (1) | 2020.01.02 |
[Spring Boot] 스프링 부트 프로젝트/쇼핑몰 만들기 - 기능 목록/유즈케이스 다이어그램 (0) | 2019.05.19 |
[Spring Boot] 스프링 부트 프로젝트/쇼핑몰 만들기 - 프롤로그 (0) | 2019.05.18 |