어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨
[ MySQL ] RESTful한 게시판 만들기1 / 데이터 베이스 설계 본문
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) );
- PK : board_idxboard_idx INT(11) NOT NULL AUTO_INCREMENT COMMENT '글 번호'
- 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