본문 바로가기

안녕하세요!

프로그래밍 언어/JSP

쇼핑몰 만들기(1)

출처 : https://happygram.tistory.com/entry/Spring-Boot-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%87%BC%ED%95%91%EB%AA%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%AA%A8%EB%8D%B8-%EC%84%A4%EA%B3%84

[ 테이블 목록 ]

사용자 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'

    - NOT NULL & UNIQUE 특징 모두 가짐

○ int 종류

   (출처 : https://heavening.tistory.com/85)

    - tinyint < smallint < int < bigint

    - tinyint

      1) 크기 : 0 ~ 255

      2) 비고 : 0을 시작으로 2^8(=2의8승=256)번째까지 정수

      3) 용량 : 1바이트

    - smallint

      1) 크기 : -32,768 ~ 32,767

      2) 비고 : -2^15 ~ (2^15 - 1) 사이의 정수. 2의15승에서 1을 빼는 이유는 0의 자리가 포함되기 때문

      3) 용량 : 2바이트

    - int

      1) 크기 : -2,147,483,648 ~ 2,147,483,647

      2) 비고 : -2^31 ~ (2^31 - 1) 사이의 정수. 역시 0의 자리를 위해 양수에서 -1 해줍니다.

      3) 용량 : 4바이트

    - bigint

      1) 크기 : -9,223,372,036,854,775,808‬ ~ 9,223,372,036,854,775,8087

      2) 비고 : -2^63 ~ (2^63 - 1) 사이의 정수. 0의 자리를 확보하기 위해 역시 뒤에서 -1 해줍니다.

      3) 용량 : 8바이트

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'

○ <users> 테이블의 'username' DELETE와 UPDATE 수행 시, <authorities>에서도 해당 수정 함께 이루어지는

   제약사항 존재

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'

○ 'category_id'는 <category> 테이블의 'id'로부터 제약사항 존재

○ AUTO_INCREMENT : id(상품)의 수가 증가 혹은 감소되었을 때 테이블 간의 데이터 중복을 피하기 위함

○ unsigned : 음숫값을 제외한 0과 양숫값만을 취급

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'

○ <basket> 테이블의 'product_id'는 <product> 테이블의 'id'에 제약사항 존재

<users> 테이블의 'username' DELETE와 UPDATE 수행 시, <basket> 테이블 에서도 해당 수정 함께 이루어지는

   제약사항 존재

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'

○ <order> 테이블의 'product_id'는 <product> 테이블의 'id'에 제약사항 존재

 <users> 테이블의 'username' DELETE와 UPDATE 수행 시, <order> 테이블 에서도 해당 수정 함께 이루어지는

    제약사항 존재

○ enum : status에 설정된 enum 괄호 안의 ready, delivery, complete 값만 허용

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
)

  <users> 테이블의 'username' DELETE와 UPDATE 수행 시, <board> 테이블 에서도 해당 수정 함께 이루어지는

    제약사항 존재

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 업데이트 날짜

[ EER Diagram ]

 

728x90
반응형

'프로그래밍 언어 > JSP' 카테고리의 다른 글

JSP_22-11-09  (0) 2022.11.09
JSP_22-11-08  (0) 2022.11.08
JSP_22-11-04  (0) 2022.11.04
JSP_22-11-02  (0) 2022.11.02

loading