개발자

게시판 데이터베이스 설계 질문

2023년 05월 05일조회 282

안녕하세요! 간단하게 게시판을 만들어보려고 데이터베이스 설계 중에 궁금한 점이 생겨서 질문 남깁니다! 1. 게시판의 종류를 여러 개(ex: 공지사항, qna 등) 만들려고 하면 각각 테이블을 따로 만들어야 하나요? 2. 만약 하나의 테이블로 관리를 한다고 가정하면, 게시판의 속성이 다른 경우에는 어떻게 하나요? 질문이 너무 추상적인 것 같네요ㅠㅠ 오늘도 즐거운 하루 보내세요~

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

인기 답변

손정현님의 프로필 사진

안녕하세요! 우선 "게시판의 종류가 여러 개"를 저는 게시판 자체가 분리된 것이 아닌 하나의 게시판에 게시글이 여러 유형 "qna, 공지사항, 일반 글" 등으로 나뉘고 게시글을 저장할 테이블을 만드는거라고 가정을 했습니다. ex) 네이버 카페처럼 하나의 게시판에 공지와 일반글이 섞여있는걸 상상했어요. 위 가정으로 답변을 하자면, 1. 요구사항에 따라 다를것 같습니다. 어느 정도의 읽기, 쓰기 요청이 예상되는지, 기능적으로 각 게시판 별로 특별히 달라지는게 있는지, 저장되는 데이터 유형이 유사한지 등에 따라서 테이블을 나눌지 하나의 테이블로 관리할지 정하면 될 것 같아요. 확장성과 유지보수 측면에서 고민해보시면 좋을 것 같습니다. 사용자가 적고 각 게시판이 기능적으로 크게 다르지 않다면 하나의 테이블에서 모든 게시판의 데이터를 관리하는 것도 방법입니다. 다만, 어차피 서비스가 커지게 되면 게시판을 나누는게 좋기 때문에 처음부터 나눠서 개발하는 것도 좋은 방법입니다. 2. 하나의 테이블에서 관리를 한다면 게시글 종류를 식별할 수 있는 필드를 추가할 것 같습니다. 정답은 없는 것 같아요. 요구사항에 따라 달라질 것 같습니다. 간단한 예시 첨부했습니다 :)

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// 예시 1 - 게시판 정보를 저장하는 테이블, 게시글을 저장하는 테이블로 관리
// Dashboards <- Posts
type Dashboards = {
  id: number;
  title: string;
  description: string;
  dashboardType: number; // 1: qna, 2: 공지, 3: 일반 등등
}

const entity = {
  id: 1,
  title: "개발자 Q&A",
  description: "현직자의 조언을 구할 수 있는 Q&A 게시판입니다",
  dashboardType: 1,
}

// 게시글 테이블
type Posts = {
  id: number;
  dashboardID: number;
  title: string;
  content: string;
}

const qnaPost = {
  id: 1,
  dashboardID: 1,
  title: "이건 어떻게 하나요?",
  content: "이러쿵저러쿵 하려고 하는데 잘 안돼요. 어떻게 하나요?"
}
// 예시 1 - 끝

// 예시 2 - 하나의 테이블로 모든 게시글 관리
type DashboardPosts = {
  id: number;
  title: string;
  content: string;
  dashboardType: number; // 1: qna, 2: 공지, 3: 일반 등등
}

const posts = {
  id: 1,
  title: "이건 어떻게 하나요?",
  content: "이러쿵저러쿵 하려고 하는데 잘 안돼요. 어떻게 하나요?",
  dashboardType: 1,
}
// 예시 2 - 끝

// 예시 3 - 각 게시판 별로 게시글 테이블 분리, 각 게시판 별로 게시글의 데이터 유형이 달라질 수 있음
type QnaPosts = {
  id: number;
  title: string;
  content: string;
  codeBlock: string;
}

const qnaPost = {
  id: 1,
  title: "이건 어떻게 하나요?",
  content: "이러쿵저러쿵 하려고 하는데 잘 안돼요. 어떻게 하나요?",
  codeBlock: "console.log('hello world')"
}

type NoticePosts = {
  id: number;
  title: string;
  content: string;
  isVisible: boolean;
}

const noticePost= {
  id: 1,
  title: "게시판 사용 주의 사항",
  content: "1. 어쩌구 2. 저쩌구",
  isVisible: true
}

type Posts = {
  id: number;
  title: string;
  content: string;
}

const post = {
  id: 1,
  title: "무료나눔 합니다~~",
  content: "이러쿵저러쿵",
}
// 예시 3 - 끝
커리어리 AI 봇님의 프로필 사진

안녕하세요! 게시판 데이터베이스 설계에 대한 질문이시군요. 1. 게시판의 종류를 여러 개 만들려면 각각 테이블을 만드는 것이 일반적입니다. 예를 들어, 공지사항 게시판과 Q&A 게시판은 각각 다른 종류의 게시글이 올라오기 때문에 따로 테이블을 만들어서 관리하는 것이 좋습니다. 2. 하나의 테이블로 관리할 경우, 게시판의 속성이 다르다면 해당 속성을 구분할 수 있는 컬럼을 만들어서 관리해야 합니다. 예를 들어, 게시판 종류를 나타내는 board_type 컬럼을 만들어서 각각의 게시판 종류를 구분하고, 해당 종류에 맞는 속성들을 컬럼으로 추가해서 관리할 수 있습니다. 좀 더 자세한 설명이 필요하시다면, 게시판 데이터베이스 설계에 대한 좋은 참고 자료가 많이 있으니 참고하시면 도움이 될 것입니다. 즐거운 개발되세요!

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!