Recipository Project DB 구상
구상한 페이지를 기반으로 DataBase와 객체를 구상해볼 것이다.
구상 과정
게시글 작성 form
- Menu class
- num : 게시글 번호
- title : 게시글 제목
- writer : 게시글 작성자
- content : 게시글 내용
- category : 카테고리
- link : 참고 링크
- image_path : 이미지 저장 경로
- private/public : 게시글 공개 여부
모든 페이지는 이렇게 작성한 게시글 데이터를 기반으로 돌아간다.
Menu 객체를 만들어, 그 안에 데이터가 담기도록 한다. 그리고 그 data를 저장할 table도 필요하다.
게시글 확인
- Menu class
- num : 게시글 번호
- title : 게시글 제목
- writer : 게시글 작성자
- content : 게시글 내용
- category : 카테고리
- link : 참고 링크
- view_count : 조회수
- like_count : 좋아요 수
- image_path : 이미지 저장 경로
- private/public : 게시글 공개 여부
- regdate : 작성 시간
그리고 고민해봐야할 내용이 퍼간 게시글을 어떤 방식으로 관리할 것인지에 대한 것이다. 생각나는 방법은 다음과 같다.
- 유저 정보를 저장하는 table에 copy한 글을 담는 column을 만든다.
- 복사한 게시글을 만들되, 해당 table과 객체에 그를 구분할 수 있는 항목을 추가한다.
첫 번째 방식을 사용하면 하나의 게시물을 여러 사람이 복사해갔을 때, 중복되는 정보가 Menu table에 계속해서 추가되는 일이 없다. 두 번째 방식을 사용하면 중복되는 정보가 Menu table에 계속해서 추가된다. 하지만 마이 페이지에서 게시글을 출력하는 것이 간단해진다. 대신 마이 페이지에서 유저가 작성한 게시글과 퍼온 게시글의 데이터를 출력하는 방식이 조금 복잡해질 수 있다.
필자는 첫 번째 방식을 사용하려고 한다. DB에 굳이 공통된 내용을 계속해서 늘릴 필요는 없다고 생각한다.
댓글 정보를 저장할 table과 그 데이터를 담을 객체도 필요할 것이다.
- Comment class
- num : 댓글 번호 (primary key)
- writer : 댓글 작성자
- content : 댓글 내용
- target_num : 댓글의 target. 게시글의 num을 target으로 한다.
- group_num : 댓글의 group number. 댓글의 num을 target으로 한다.
- regdate : 작성 시간
메인 페이지
작성한 게시글들을 기반으로 데이터를 불러오는 페이지이다. 랭킹 목록을 불러올 List. List에는 Menu 항목이 담겨야 한다. 별점으로 표시되어 있으나, 별점 대신 좋아요 수를 노출하도록 할 생각이다.
메뉴에 대한 카테고리 정보를 표출하려고 한다. 해당 카테고리 정보를 담을 table이 필요할 것 같다.
- Category class
- num : 카테고리 번호 (primary key)
- name : 카테고리 이름
회원 가입 페이지
회원 가입 페이지회원 정보를 저장할 table과 그 정보를 담을 객체가 필요하다.
- User class
- num : 회원 정보 번호 (primary key)
- email : 이메일 정보
- name : 회원이 사용할 이름
- password : 계정 비밀번호
- copy_content : 퍼온 게시글 번호
- author : 관리자 권한 여부
'프로젝트 > Recipository' 카테고리의 다른 글
[DB] 22.09.17. MySQL 설치 (0) | 2022.09.18 |
---|---|
[Dev] 22.09.15. Thymeleaf 를 사용하는 이유 (0) | 2022.09.15 |
[Dev] 22.09.14. static과 templates directory (0) | 2022.09.14 |
[Dev] 22.09.14. index.html 띄우기 (0) | 2022.09.14 |
[Design] 22.09.11. 'Recipository' 구성 Design (0) | 2022.09.11 |
댓글