[ 테이블 목록 ]
사용자 | 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 ]
'프로그래밍 언어 > 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 |