Spring 게시판 만들기(2)-테이블생성

정원모·2021년 9월 21일
0

Spring 게시판

목록 보기
2/2
post-thumbnail


기본적인 자유게시판 디비 설정이고 첨부파일은 여러개를 등록할 수 있게하도록 테이블을 따로 생성하였다.
첨부파일의 순번은 한게시물에서 첨부파일을 여러개 업로드 할 때 순번을 정해주기위해 만들었다.
댓글도 따로 만들었는데 대댓글을 따로 테이블을 만들까 고민 해봤지만 부모댓글번호 컬럼으로도 해결 할 수 있을것 같아 컬럼만 추가해주었다.( 보통의 경우에는 어떻게 할까? )

나는 VARCHAR2를 사랑한다. 자바VO에서도 String 으로 다때려박는 스타일..(빨리 고쳐야하는데...)
키값들을 NUMBER로 한 이유 는 글 생성시 시퀀스 생성이아닌 그냥 +1 해주는 것으로 생성을 하기위해 NUMBER로 설정함.
키값들은 NOT NULL 이고 나머지들은 글 등록시 유효성 처리로 막아줄 것이기에 귀찮아서 테이블설정은 따로 안할 예정이다..

테이블 생성 쿼리

/* 자유게시판 */
CREATE TABLE FREEBOARD (
	BOARD_NO NUMBER NOT NULL, /* 게시글번호 */
	TITLE VARCHAR2(100), /* 제목 */
	CONTENT CLOB, /* 내용 */
	WRITER VARCHAR2(100), /* 작성자 */
	REGDATE VARCHAR2(50), /* 작성일 */
	UPDATE_DATE VARCHAR2(50), /* 수정일 */
	DELETE_YN VARCHAR2(5) /* 삭제여부 */
);
COMMENT ON TABLE FREEBOARD IS '자유게시판';
COMMENT ON COLUMN FREEBOARD.BOARD_NO IS '게시글번호';
COMMENT ON COLUMN FREEBOARD.TITLE IS '제목';
COMMENT ON COLUMN FREEBOARD.CONTENT IS '내용';
COMMENT ON COLUMN FREEBOARD.WRITER IS '작성자';
COMMENT ON COLUMN FREEBOARD.REGDATE IS '작성일';
COMMENT ON COLUMN FREEBOARD.UPDATE_DATE IS '수정일';
COMMENT ON COLUMN FREEBOARD.DELETE_YN IS '삭제여부';
CREATE UNIQUE INDEX PK_FREEBOARD
	ON FREEBOARD (
		BOARD_NO ASC
	);
ALTER TABLE FREEBOARD
	ADD
		CONSTRAINT PK_FREEBOARD
		PRIMARY KEY (
			BOARD_NO
		);
/* 첨부파일 */
CREATE TABLE ATCHFILE (
	ATCHFILE_NO NUMBER NOT NULL, /* 첨부파일번호 */
	BOARD_NO NUMBER, /* 게시글번호 */
	SN VARCHAR2(5), /* 순번 */
	FILENAME VARCHAR2(1000), /* 파일이름 */
	EXTSN VARCHAR2(100), /* 확장자 */
	SAVE_FOLDER VARCHAR2(1000) /* 저장경로 */
);
COMMENT ON TABLE ATCHFILE IS '첨부파일';
COMMENT ON COLUMN ATCHFILE.ATCHFILE_NO IS '첨부파일번호';
COMMENT ON COLUMN ATCHFILE.BOARD_NO IS '게시글번호';
COMMENT ON COLUMN ATCHFILE.SN IS '순번';
COMMENT ON COLUMN ATCHFILE.FILENAME IS '파일이름';
COMMENT ON COLUMN ATCHFILE.EXTSN IS '확장자';
COMMENT ON COLUMN ATCHFILE.SAVE_FOLDER IS '저장경로';
CREATE UNIQUE INDEX PK_ATCHFILE
	ON ATCHFILE (
		ATCHFILE_NO ASC
	);
ALTER TABLE ATCHFILE
	ADD
		CONSTRAINT PK_ATCHFILE
		PRIMARY KEY (
			ATCHFILE_NO
		);
/* 댓글 */
CREATE TABLE FB_COMMENT (
	COMMENT_NO NUMBER NOT NULL, /* 댓글번호 */
	BOARD_NO NUMBER, /* 게시글번호 */
	WRITER VARCHAR2(100), /* 작성자 */
	REGDATE VARCHAR2(50), /* 작성일 */
	CONTENT VARCHAR2(1000), /* 내용 */
	UPDATE_DATE VARCHAR2(50), /* 수정일 */
	DELETE_YN VARCHAR2(5), /* 삭제여부 */
	P_COMMENT_NO VARCHAR2(50) /* 부모댓글번호 */
);
COMMENT ON TABLE FB_COMMENT IS '댓글';
COMMENT ON COLUMN FB_COMMENT.COMMENT_NO IS '댓글번호';
COMMENT ON COLUMN FB_COMMENT.BOARD_NO IS '게시글번호';
COMMENT ON COLUMN FB_COMMENT.WRITER IS '작성자';
COMMENT ON COLUMN FB_COMMENT.REGDATE IS '작성일';
COMMENT ON COLUMN FB_COMMENT.CONTENT IS '내용';
COMMENT ON COLUMN FB_COMMENT.UPDATE_DATE IS '수정일';
COMMENT ON COLUMN FB_COMMENT.DELETE_YN IS '삭제여부';
COMMENT ON COLUMN FB_COMMENT.P_COMMENT_NO IS '부모댓글번호';
CREATE UNIQUE INDEX PK_FB_COMMENT
	ON FB_COMMENT (
		COMMENT_NO ASC
	);
ALTER TABLE FB_COMMENT
	ADD
		CONSTRAINT PK_FB_COMMENT
		PRIMARY KEY (
			COMMENT_NO
		);
ALTER TABLE ATCHFILE
	ADD
		CONSTRAINT FK_FREEBOARD_TO_ATCHFILE
		FOREIGN KEY (
			BOARD_NO
		)
		REFERENCES FREEBOARD (
			BOARD_NO
		);
ALTER TABLE FB_COMMENT
	ADD
		CONSTRAINT FK_FREEBOARD_TO_FB_COMMENT
		FOREIGN KEY (
			BOARD_NO
		)
		REFERENCES FREEBOARD (
			BOARD_NO
		);

0개의 댓글