본문 바로가기
프로젝트/Recipository

[DataBase] 22.09.13. Recipository Project DB 구상

by 규글 2022. 9. 13.

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 : 관리자 권한 여부
        •  

댓글