티스토리 뷰

만들어보자!!

게시판 만들기 - 설계

김쓰로그 2022. 9. 21. 16:04

이번에 게시판기능을 만들어볼까 한다.

간단한 게시판을 두개 정도 만들어 보았지만 제대로된 설계없이 무작정 코드를 작성하였다.

그래서 나중에 내가 새로운 것을 공부하고 이를 적용시키려고해도 코드가 너무 뒤죽박죽이기에 적용시키기가 어려웠다. 이런게 소위 말하는 유지보수가 어려운 코드인거 같다.

그래서 이번에는 제대로된 요구사항을 작성하고 DB를 설계한 뒤에 코딩을 진행해볼까 한다.

 

1. 주제

기본적인 CRUD 기능을 가진 게시판(로그인, 로그아웃, 글쓰기, 댓글)


2. 요구사항

1) 회원가입

회원가입에는 유효성 검사와 중복확인이 필요하다.

  • 유효성 검사
    • 닉네임은 2~15자이고 특수문자가 들어갈 수 없다.
    • 아이디는 영어와 숫자로만 이뤄지고 20자 이하이여야 한다.
    • 비밀번호는 한개 이상의 특수문자가 들어가야하고 10~20자 사이여야 한다. 영어 소문자와 숫자로 구성되어야 한다.
    • 설정 비밀번호와 확인 비밀번호의 값이 일치해야 한다.
    • 위의 값들은 모두 필수입력값이며 입력되지않고 서버로 POST 되었을 때 오류메시지를 보여준다.
  • 중복확인
    • 아이디와 닉네임은 유니크한 값을 가져야하기 때문에 중복확인이 필요하다.
    • 아이디와 닉네임 중복확인이 통과된다면 회원가입을 시켜야한다.

 

2) 로그인 

로그인을 하지않은 사용자에 대해서는 몇몇 페이지에 대해서는 접근을 막을 필요가 있다. 

  • 로그인을 하지 않은 사용자
    • 글의 열람과 검색은 가능
    • 회원가입, 로그인 페이지 접근가능
    • 위 페이지 말고 다른 페이지로 접근하는 것을 시도할 때는 로그인 페이지로 이동시키기
  • 로그인
    • 아이디와 비밀번호가 전송되면 DB에 있는 값과 비교하여 일치하는지 확인하고 일치하지 않는다면 오류메시지 보여주기
    • 로그인 되었다면 홈 화면으로 이동

 

3) 회원정보 수정

비밀번호와 닉네임은 수정이 가능하도록 만들기

  • 비밀번호를 변경할 때 변경하고자하는 비밀번호와 현재 비밀번호가 동일하다면 변경이 불가능하도록 오류메시지 띄워주기
  • 닉네임을 변경할 때 중복확인을 중복이면 오류메시지를 보여주고 통과한다면 닉네임변경
  • 비밀번호와 닉네임을 변경할 때 회원가입에 적용된 동일한 유효성 검사 패턴을 사용

4) 게시판 글 작성

  • 제목과 내용을 적는 칸에 공백 금지
  • 본인이 작성한 글만 수정, 삭제 가능하게 하기
  • 조회할 때마다 조회수 1씩 증가
  • 글을 수정할 때 수정한 날짜 업데이트

5) 댓글

  • 댓글은 로그인한 사용자에 한해서 작성하도록 하기
  • 댓글은 공백입력 금지 
  • 댓글의 삭제는 해당 댓글 작성자만 가능하게 하기
  • 어떠한 게시글이 삭제되면 그 게시글에 있는 댓글 목록도 함께 삭제하기

3. DB 설계

 

- 회원과 게시글은 1:N 관계이다 > 한명의 회원은 여러 게시글을 작성할 수 있기 때문

- 회원과 댓글 또한 1:N 관계이다 > 한명의 회원이 여러 댓글을 작성할 수 있기 때문

- 게시글와 댓글은 1:N 관계이다 > 한개의 게시글에 여러 댓글이 작성될 수 있기 때문

 

1) Member(회원)

컬럼명 조건 설명
member_id PK 고유 값
id not null, unique 가입 아이디
password not null 비밀번호
nickname not null, unique 닉네임
create_date not null 가입날짜

2) Board(게시판)

컬럼명 조건 설명
board_id PK 고유 값
title not null 제목
content not null 내용
writer not null 작성자
hit not null 조회수
register_date not null 작성일
update_date nullable 수정일
member_id FK, not null 회원 고유 값

3) Comment(댓글)

컬럼명 조건 설명
comment_id PK 고유 값
comment not null 댓글 내용
register_date not null 등록 날짜
board_id FK, not null 게시글 번호
member_id FK, not null 회원 고유 값

4. API 설계

1) 회원 관련 API

기능 HTTP Method URL
회원가입 페이지 이동 GET /member
회원가입 POST /member
로그인 페이지 이동 GET /login
로그인 POST /login
로그아웃 GET /logout
회원정보 수정 페이지 이동 GET /member/edit
회원정보 수정 페이지 POST /member/edit

2) 게시판 관련 API

기능 HTTP Method URL
게시판 전체 글 조회 GET /board
게시판 페이징 글 조회 GET /board?page={num}
게시글 상세보기 GET /board/{id}
게시글 등록 페이지 이동 GET /board/new
게시글 등록  POST /board/new
게시글 수정 페이지 이동 GET /board/{id}/edit
게시글 수정 POST /board/{id}/edit
게시글 삭제 POST /board/{id}/delete

3) 댓글 관련 API

댓글은 AJAX 방식으로 만들 것이다.

기능 HTTP Method URL
댓글 등록 POST /comment/{board_id}/{member_id}
댓글 삭제 POST /comment/{board_id}/member_id}/delete

 


위에 설계한 내용을 토대로 코드를 작성해 나가겠다.

이전에는 무작정 코드로 작성을 했었는데 이번에는 처음으로 설계(?)라는 것을 해보았다. 내가 만들어야할 것이 눈에 확 보여 굉장히 괜찮은거 같다. 앞으로도 코딩을 하기에 앞서 이런식으로 설계하는 습관을 길러야겠다. 

 

아직 많이 부족합니다. 게시글에 오류나 틀린부분이 있다면 댓글에 언급 부탁드립니다!!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함