Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨

[ MySQL ] RESTful한 게시판 만들기1 / 데이터 베이스 설계 본문

REST API

[ MySQL ] RESTful한 게시판 만들기1 / 데이터 베이스 설계

낫쏘링 2023. 9. 6. 15:07
728x90

[ 1. 데이터 베이스 생성 ]

- DB 명 : rest_api
- 아이디 : restapiid
- 비밀번호 : restapipw
-- DB 생성
CREATE DATABASE rest_api DEFAULT CHARACTER SET UTF8;
-- 사용자 추가 (일반 사용자 계정 생성)
CREATE USER 'restapiid'@'%' IDENTIFIED BY 'restapipw';
-- 사용자 권한 설정 
GRANT ALL PRIVILEGES ON rest_api.* TO 'restapiid'@'%';
-- 변경된 내용을 메모리에 반영
FLUSH PRIVILEGES;​

 

[ 2. 테이블 생성 (게시글) ]

CREATE TABLE t_board(
   board_idx INT(11) NOT NULL AUTO_INCREMENT COMMENT '글 번호',
   title VARCHAR(300) NOT NULL COMMENT '제목',
   contents TEXT NOT NULL COMMENT '내용',
   hit_cnt SMALLINT(10)NOT NULL DEFAULT'0' COMMENT '조회수',
   created_datetime DATETIME NOT NULL COMMENT '작성시간',
   creator_id VARCHAR(50) NOT NULL COMMENT '작성자 아이디',
   updated_datetime DATETIME DEFAULT NULL COMMENT'수정시간',
   updater_id VARCHAR(50) DEFAULT NULL COMMENT '수정자 아이디',
   deleted_yn CHAR(1) NOT NULL DEFAULT 'N' COMMENT '삭제여부',
   PRIMARY KEY (board_idx)
);

board_idx INT(11) NOT NULL AUTO_INCREMENT COMMENT '글 번호'
- PK : board_idx
- AUTO_INCREMENT : INSERT 할 때 1부터 시작해서 자동으로 증가 된 번호를 부여한다.
                                      만약 1부터 10까지 번호가 부여된 후 5부터 10까지의 번호를 삭제 했을 때
                                      다음 INSERT에서 부여되는 번호는 5가 아니라 11이 된다.
// 테이블을 이미 생성했는데 AUTO_INCREMENT 옵션을 넣고자 할 때
ALTER TABEL 't_board' MODIFY 'board_idx' INT NOT NULL AUTO_INCREMENT;

 

[ 3. 테이블 생성 (첨부파일) ]

CREATE TABLE t_file(
   idx INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '일련번호',
   board_idx INT(10) UNSIGNED NOT NULL COMMENT '게시글 번호',
   original_file_name VARCHAR(255) NOT NULL COMMENT '원본 파일 이름',
   stored_file_path VARCHAR(500) NOT NULL COMMENT '파일 저장 경로',
   file_size INT(15) UNSIGNED NOT NULL COMMENT '파일 크기',
   created_datetime DATETIME NOT NULL COMMENT '작성시간',
   creator_id VARCHAR(50) NOT NULL COMMENT '작성자 아이디',
   updator_id VARCHAR(50) DEFAULT NULL COMMENT '수정자 아이디',
   updated_datetime DATETIME DEFAULT NULL COMMENT '수정시간',
   deleted_yn char(1) NOT NULL DEFAULT 'N' COMMENT '삭제여부',
   PRIMARY KEY (idx)
);



- PK : idx
- UNSIGNED : 숫자 중에서 양수만 사용

original_file_name VARCHAR(255) NOT NULL COMMENT '원본 파일 이름',
stored_file_path VARCHAR(500) NOT NULL COMMENT '파일 저장 경로',​

- original_file_name : 사용자가 지정한 원본 파일 이름
- stored_file_path : 데이터베이스에 저장된 파일 이름(경로)
- 만약 동일한 원본 파일 이름을 가진 파일이 업로드 될 경우 사용 중인 운영체제에 따라서
  저장되지 않거나 파일명이 바뀐다고 한다.
  윈도우 같은 경우 파일 이름에 (1), (2) 같은 번호가 붙는다. 
  이런 식으로 파일 이름이 수정되어 저장되면 원하는 파일을 찾을 수 없다.
  그래서 파일을 저장할 때 각 프로젝트에서 정한 규칙에 따라 새로운 이름으로 데이터 베이스에 저장한다.

 

 

* 참고 서적 : 인사이트 스프링부트 시작하기

728x90