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