쇼핑몰 DB 테이블 설계 - syopingmol DB teibeul seolgye

데이터베이스 모델 설계를 진행합니다.

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상품 이미지 URLcolor색상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

쇼핑몰 DB 테이블 설계 - syopingmol DB teibeul seolgye

References

[Spring Boot] 스프링 부트 Web Security 설정 방법

https://dbeaver.io/

ERD를 그려서 의존관계를 표현하면서 설계하기가 쉽지 않았다


쇼핑몰 DB 테이블 설계 - syopingmol DB teibeul seolgye


쇼핑몰을 참고해서 이것저것 테이블을 만들다가 너무 복잡해져버렸다;;

그래서 일단 고객, 주문, 상세 위주로 간단하게 작성하고 필요한 부분은 구현하면서 채워 넣기로....


쇼핑몰 DB 테이블 설계 - syopingmol DB teibeul seolgye

첫번째로 고객 테이블은 고객들의 고유 코드번호, 비회원이 아닐경우 아이디, 비밀번호, 이름, 이메일주소 까지만 간단히 만들었고

두번째로 주문 테이블은 주문 아이디, 고객 고유 코드번호는 고객테이블을 참조하는 외래키로 설정 하였고, 주문 날짜, 총 가격, 주문 상태를 만들었다.

세번째로 상품 테이블은 상품 아이디, 상품 이름, 상품 이미지, 상품 상태, 상품가격 등 상품정보를 담는 테이블을 만들었다.

그리고 주문 상세 테이블을 만들어 각 주문 아이디에 해당하는 상품과 상품 갯수와 상품가격을 표시하는 테이블 따로 설계하였다.


공유하기

게시글 관리

구독하기서울쌍둥이

'프로젝트' 카테고리의 다른 글

01. 쇼핑몰(전자상거래, B2C) 프로젝트 개발환경  (0)2018.10.06