ErdForge데이터 모델링 워크스페이스 · v1.0.2

Board example

게시판 ERD 예시

게시판, 게시글, 댓글, 첨부파일, 좋아요를 분리해 커뮤니티 게시판을 설계하는 ERD 예시입니다.

상황

게시판 ERD 예시

사용자가 게시글을 작성하고 댓글, 첨부파일, 좋아요를 남길 수 있는 커뮤니티 게시판입니다.

핵심 테이블

boards, posts, comments, attachments

중요 관계

posts 1:N comments

주의점

댓글 계층과 첨부파일 소유 대상

요구사항

요구사항

  • 게시판은 여러 게시글을 포함하고, 게시글은 작성자와 연결됩니다.
  • 댓글은 게시글에 속하며 대댓글을 지원할 수 있습니다.
  • 첨부파일은 게시글에 붙고, 좋아요는 사용자별 중복을 막아야 합니다.

테이블 설계

테이블 설계

users작성자
  • id PK
  • nickname UNIQUE
  • email
  • created_at
boards게시판 분류
  • id PK
  • name
  • slug UNIQUE
  • visibility
posts게시글
  • id PK
  • board_id FK
  • author_id FK
  • title
  • status
comments댓글
  • id PK
  • post_id FK
  • author_id FK
  • parent_comment_id FK
  • body
attachments첨부파일
  • id PK
  • post_id FK
  • file_url
  • file_name
  • size_bytes
post_likes게시글 좋아요
  • post_id PK/FK
  • user_id PK/FK
  • created_at

관계

관계

boards 1:N postsusers 1:N postsposts 1:N commentscomments 1:N commentsposts 1:N attachmentsposts N:M users through post_likes

설계 포인트

설계 포인트

좋아요는 연결 테이블로 둡니다

post_likes는 post_id와 user_id를 복합 PK로 두면 한 사용자가 같은 게시글에 중복 좋아요를 누르는 것을 막을 수 있습니다.

대댓글은 자기 참조 FK로 표현합니다

comments.parent_comment_id가 같은 comments.id를 참조하면 1단계 또는 다단계 댓글 구조를 확장할 수 있습니다.

삭제 정책을 먼저 정합니다

게시글 삭제 시 댓글과 첨부파일을 함께 숨길지, 작성자 탈퇴 후 익명화할지에 따라 FK와 상태 컬럼 설계가 달라집니다.

구현 전 체크

구현 전 체크

  • boards.slug와 users.nickname은 UNIQUE 인덱스를 둡니다.
  • post_likes(post_id, user_id)를 복합 기본키로 둡니다.
  • 목록 조회가 많으면 posts(board_id, created_at) 인덱스를 추가합니다.

다른 ERD 예시

다른 ERD 예시

예시를 그대로 따라 그리거나, 가입 전 데모 캔버스에서 테이블과 관계를 먼저 만져볼 수 있습니다.