I T H

[프로젝트] 6. Database 설정 및 테이블 설계 - 모델링 (Week 2) 본문

Spring ArtGallery Project

[프로젝트] 6. Database 설정 및 테이블 설계 - 모델링 (Week 2)

thdev 2024. 1. 23. 10:42

데이터베이스의 경우 이미 설치되어 있는 MariaDB(Mysql)를 사용.

(개인 스터디용 서버를 사용중임으로 별도의 데이터베이스 설치는 생략)

DB 접속 툴은 무료 툴인 Dbeaver를 사용. 

(https://dbeaver.io/download/ 경로에서 다운로드 및 설치 가능)

 

[ Dbeaver를 통한 데이터베이스 접속 확인 ]

 

 

접속하고자 하는 데이터베이스 종류 선택 후 다음 버튼 클릭

 

 

개인 접속 정보를 입력하여 접속

[ 데이터베이스 신규 생성 ]

 

 

신규 데이터베이스 생성

 

데이터베이스 생성 확인

 

 

다음은 테이블 설계 및 모델링을 진행.

테이블의 경우 아래와 같이 회원 정보 테이블을 비롯한 테이블이 설계될 예정.

순번 테이블명 비고
1 회원정보 테이블 일반사용자, 관리자 권한을 구분할 컬럼이 반드시 필요
2 상품정보 테이블 마스터 상품정보 테이블 / 디테일 상품정보 테이블로 구분
- 마스터 상품정보 테이블 : 상품에 대한 기본 정보 
- 디테일 상품정보 테이블 : 상품의 상세 이미지 정보
3 장바구니 테이블  
4 결제정보 테이블  
5 게시판 테이블  
6 로그 테이블 스프링 인터셉터를 활용하여
사용자 로그인 시 로그를 기록하기 위한 테이블

 

[ 테이블 생성 ]

- 회원정보 테이블 

CREATE TABLE `ART_USER` (
  `USER_ID` varchar(50) NOT NULL COMMENT '사용자 아이디',
  `AUTH_TYPE` char(1) DEFAULT NULL COMMENT '사용자 구분(관리자, 일반사용자)',
  `USER_PW` varchar(200) DEFAULT NULL COMMENT '비밀번호',
  `USER_NAME` varchar(20) DEFAULT NULL COMMENT '사용자 이름',
  `USER_SEX` char(1) DEFAULT NULL COMMENT '사용자 성별',
  `USER_PHONE` varchar(20) DEFAULT NULL COMMENT '전화번호',
  `USER_EMAIL` varchar(50) DEFAULT NULL COMMENT '이메일',
  `USER_ADDR` varchar(200) DEFAULT NULL COMMENT '주소',
  `ZIP_CODE` varchar(6) DEFAULT NULL COMMENT '우편번호',
  `OUT_YN` char(1) DEFAULT NULL COMMENT '탈퇴여부',
  `INPUT_DATETIME` datetime DEFAULT NULL COMMENT '가입일자',
  PRIMARY KEY (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

- 상품정보 테이블 (Master)

CREATE TABLE `ART_PROD` (
  `PROD_ID` varchar(36) NOT NULL COMMENT '상품 아이디',
  `PROD_NAME` varchar(200) DEFAULT NULL COMMENT '상품명',
  `PROD_DESC` varchar(500) DEFAULT NULL COMMENT '상품상세정보',
  `PROD_PRICE` int DEFAULT NULL COMMENT '가격',
  `PROD_CNT` int DEFAULT NULL COMMENT '수량',
  `USE_YN` char(1) DEFAULT NULL COMMENT '사용유무',
  `INPUT_DATETIME` datetime DEFAULT NULL COMMENT '등록일자',
  PRIMARY KEY (`PROD_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

- 상품정보 테이블 (Detail) : 이미지 정보를 담기 위한 테이블 

CREATE TABLE `ART_PROD_DETAIL` (
  `DETAIL_ID` varchar(36) NOT NULL COMMENT '디테일 아이디',
  `PROD_ID` varchar(36) NOT NULL COMMENT '상품 아이디',
  `PROD_IMG` varchar(200) DEFAULT NULL COMMENT '이미지경로명',
  `SORT` int(11) DEFAULT NULL COMMENT '이미지나열순서',
  `MAIN_IMG` char(1) DEFAULT NULL COMMENT '대표이미지',
  `USE_YN` char(1) DEFAULT NULL COMMENT '사용유무',
  `INPUT_DATETIME` datetime DEFAULT NULL COMMENT '등록일자',
  PRIMARY KEY (`DETAIL_ID`),
  KEY `ART_PROD_DETAIL_FK` (`PROD_ID`),
  CONSTRAINT `ART_PROD_DETAIL_FK` FOREIGN KEY (`PROD_ID`) REFERENCES `ART_PROD` (`PROD_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

- 장바구니 테이블

CREATE TABLE `ART_CART` (
  `CART_ID` varchar(36) NOT NULL COMMENT '장바구니 아이디',
  `USER_ID` varchar(50) NOT NULL COMMENT '사용자 아이디',
  `PROD_ID` varchar(36) NOT NULL COMMENT '상품 아이디',
  `CART_CNT` int DEFAULT NULL COMMENT '카트담은 수량',
  `INPUT_DATETIME` datetime DEFAULT NULL COMMENT '등록일자',
  PRIMARY KEY (`CART_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

- 결제정보 테이블

CREATE TABLE `ART_PAY` (
  `PAY_ID` varchar(36) NOT NULL COMMENT '결제 아이디',
  `USER_ID` varchar(50) NOT NULL COMMENT '사용자 아이디',
  `PROD_ID` varchar(36) NOT NULL COMMENT '상품 아이디',
  `PAY_CNT` int DEFAULT NULL COMMENT '결제 수량',
  `CANCEL_YN` char(1) DEFAULT NULL COMMENT '결제 취소여부',
  `SHIP_TYPE` char(1) DEFAULT NULL COMMENT '배송상태 (0:주문완료/1:상품준비중/2:배송중/3:배송완료)',
  `INPUT_DATETIME` datetime DEFAULT NULL COMMENT '결제일자',
  `CANCEL_DATETIME` datetime DEFAULT NULL COMMENT '취소일자',
  `COMPLETE_DATETIME` datetime DEFAULT NULL COMMENT '배송완료일자',
  PRIMARY KEY (`PAY_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

- 게시판 테이블

CREATE TABLE `ART_BOARD` (
  `BOARD_ID` varchar(36) NOT NULL COMMENT '게시판 아이디',
  `PARENT_ID` varchar(36) DEFAULT NULL COMMENT '부모 아이디 (NULL: 원글)',
  `BOARD_LEVEL` int DEFAULT NULL COMMENT '글 레벨(답글인지)',
  `WRITOR_ID` varchar(50) DEFAULT NULL COMMENT '작성자 ID (사용자)',
  `BOARD_TITLE` varchar(100) DEFAULT NULL COMMENT '제목',
  `BOARD_DESC` varchar(500) DEFAULT NULL COMMENT '내용',
  `USE_YN` char(1) DEFAULT NULL COMMENT '사용여부',
  `INPUT_DATETIME` datetime DEFAULT NULL COMMENT '등록일자',
  PRIMARY KEY (`BOARD_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

- 로그 테이블

CREATE TABLE `ART_LOG` (
  `LOG_ID` varchar(36) NOT NULL COMMENT '로그 아이디',
  `USER_ID` varchar(50) NOT NULL COMMENT '사용자 아이디',
  `INPUT_DATETIME` datetime DEFAULT NULL COMMENT '로그인일자',
  PRIMARY KEY (`LOG_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

[ 다이어그램 ]

 

* app_local 프로퍼티 파일 

- 신규 생성한 데이터베이스를 바라보도록 설정 변경할 것