자료실 (reference) / 전사공지 (notice) / 커뮤니티 (community)
거의 같은 기능을 하는 게시판이 세 개라서 게시판 테이블을 하나로 만들고 각 게시판의 메뉴 코드를 부여하기로 했다.
각 게시판마다 다른 기능 :
- 자료실 : 게시판 목록에서 첨부파일 아이콘 클릭하면 바로 다운 가능
- 전사공지 : 중요글은 게시판 목록 최상단에 위치(바탕색 + 확성기 아이콘)
- 커뮤니티 : 좋아요 기능, 비밀글 기능, 카테고리 선택 (자유, 건의)
테이블 생성
BOARD_MENU 테이블:
| 컬럼명 | 데이터 타입 | 제약조건 |
| BOARD_MENU_CODE | VARCHAR2(20) | PRIMARY KEY |
| BOARD_MENU_NAME | VARCHAR2(50) | NOT NULL |
BOARD_CATEGORY 테이블:
| 컬럼명 | 데이터 타입 | 제약조건 |
| BOARD_CATE_CODE | VARCHAR2(20) | PRIMARY KEY |
| BOARD_CATE_NAME | VARCHAR2(50) | NOT NULL |
BOARD 테이블:
| 컬럼명 | 데이터 타입 | 제약조건 |
| BOARD_NUM | VARCHAR2(50) | PRIMARY KEY |
| BOARD_TITLE | VARCHAR2(50) | NOT NULL |
| BOARD_CONTENT | VARCHAR2(100) | |
| BOARD_WRITER | NUMBER | FOREIGN KEY (EMPNO) |
| BOARD_DATE | DATE | DEFAULT SYSDATE |
| BOARD_VIEW | NUMBER | DEFAULT 0 |
| BOARD_STATUS | NUMBER | DEFAULT 1 |
| IS_IMPORTANT | VARCHAR2(5) | |
| IS_PRIVATE | VARCHAR2(5) | |
| BOARD_PW | VARCHAR2(20) | |
| BOARD_LIKE | NUMBER | DEFAULT 0 |
| BOARD_MENU_CODE | VARCHAR2(20) | FOREIGN KEY (BOARD_MENU_CODE) |
| BOARD_CATE_CODE | VARCHAR2(20) | FOREIGN KEY (BOARD_CATE_CODE) |
BOARD_REPLY 테이블:
| 컬럼명 | 데이터 타입 | 제약조건 |
| REPLY_NUM | VARCHAR2(50) | PRIMARY KEY |
| REPLY_CONTENT | VARCHAR2(100) | NOT NULL |
| REPLY_DATE | DATE | DEFAULT SYSDATE |
| BOARD_NUM | VARCHAR2(50) | FOREIGN KEY (BOARD_NUM) |
BOARD_FILE 테이블:
| 컬럼명 | 데이터 타입 | 제약조건 |
| FILE_NUM | VARCHAR2(50) | PRIMARY KEY |
| ORIGIN_FILE_NAME | VARCHAR2(100) | NOT NULL |
| ATTACHED_FILE_NAME | VARCHAR2(100) | NOT NULL |
| BOARD_NUM | VARCHAR2(50) | FOREIGN KEY (BOARD_NUM) |
고민
외래키를 지정할 때 ON DELETE CASCADE를 어떻게 할지 고민했는데, 직원 같은 경우 글을 쓴 직원이 퇴사하더라도 데이터가 없어지는 것이 아니라 상태값이 ‘퇴사’로 나타나기 때문에 CASCADE를 넣을 필요가 없다고 생각했다. 대신 개발 차원에서 글 작성자 데이터가 없어진다면 수동으로 게시판 글을 삭제해줘야 한다. (근데.. 하다가 바뀔 수도 있을듯)
글 작성자 컬럼을 사원 테이블의 사번과 외래키로 연결했는데, 게시판 페이지에서는 해당 사원의 사번이 아닌 이름을 띄워주려면 조회 시 마다 JOIN을 해야할지.. VO에는 사원 이름 변수를 따로 만들어야 하는지.. 가 고민이다. 그렇다고 이름으로 외래키를 지정할 수는 없으니.
게시판마다 관리자 권한을 다르게 주고, 그 권한을 수정 및 삭제가 가능하게 하고 싶다. 사원 테이블의 ROLE 컬럼에 권한 여러 개를 쉼표로 연결하는 방법이 있을 것 같은데..
ex) ROLE_DATA, ROLE_NOTICE, ROLE_COMMUNITY 이런 식으로…
어떤 게시판에 속하는 글인지 나타낼 게시판 메뉴 테이블에 데이터를 삽입했다.
해당 메뉴에 속하는 데이터만 불러오고, 글을 쓸 때도 자동으로 메뉴 코드를 삽입한다.
게시판 메뉴
BOARD_MENU 테이블:
| BOARD_MENU_CODE | BOARD_MENU_NAME |
| BOARD_MENU_001 | 자료실 |
| BOARD_MENU_002 | 전사공지 |
| BOARD_MENU_003 | 커뮤니티 |
커뮤니티 게시판에 쓰일 카테고리 테이블에 데이터를 삽입했다.
커뮤니티 게시판에서 글을 쓸 때 카테고리 중 하나를 선택해야 등록이 가능하다.
게시판 카테고리
BOARD_CATEGORY 테이블:
| BOARD_CATE_CODE | BOARD_CATE_NAME |
| BOARD_CATE_001 | 자유 |
| BOARD_CATE_002 | 건의 |
'프로젝트' 카테고리의 다른 글
| 6. 프로젝트 시 깃허브 작업 사이클 (0) | 2023.05.18 |
|---|---|
| 5. 깃허브 Branch (0) | 2023.05.17 |
| 4. 깃허브 Push & Pull (0) | 2023.05.17 |
| 3. 스프링 프로젝트 세팅 (0) | 2023.05.17 |
| 1. 주제 선정 및 모듈 설계, 역할 분담 (0) | 2023.05.16 |