Webプログラミング

2ch風のスレッド式掲示板を使いたい。
YouTubeのように、サムズアップダウンボタンを付けたい。

2chの仕様

データベース設計のため、2chの仕様、データ構造を検討する。
データの階層は、大きく分けると4階層になっている。

参考

データの構造

(参考)2chの掲示板一覧
http://menu.2ch.net/bbstable.html

2chのデータは階層構造になっており、トップページからたどると、

  1. カテゴリー
  2. スレッド
  3. レス
    という4階層になっている。
階層内容
カテゴリー2chの掲示板は、「カテゴリー」と呼ばれる大きな分野単位(ニュース、食文化、ネット関係など)で区切られている。
カテゴリーは、さらに「板」(いた、ばん)という細かいジャンルで分けられている。
スレッド一つの板の中に、いろいろなたくさんの掲示板が設けられている。2ちゃんねるでは掲示板のことを「スレッド」という。「スレッド」を略して「スレ」という。
レス2ちゃんねるでは書き込みのことを「レス」という。「レス」は、レスポンス(response)、すなわち返信を意味する。

データベース設計

MySQLで

  1. カテゴリー
  2. スレッド
  3. レス
    を格納するテーブルを用意する。

カテゴリー

テーブル名:bbs_category

カラム名データ型内容
idint主キーのID。auto_incrementの連番でOK
categoryvarchar(255)カテゴリー名。重複なし
sortint並び順を指定する数値
create_dtdatetime作成日時
update_dtdatetime更新日時
delete_dtdatetime削除日時=論理削除

#code(sql){{
CREATE TABLE IF NOT EXISTS `bbs_category` (

 `id` int(11) NOT NULL AUTO_INCREMENT,
 `category` varchar(255) NOT NULL,
 `sort` int(11) NOT NULL,
 `create_dt` datetime NOT NULL,
 `update_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `delete_dt` datetime DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `category` (`category`),
 KEY `sort` (`sort`)

) ENGINE=InnoDB ;
}}

テーブル名:bbs_board

カラム名データ型内容
idint主キーのID。auto_incrementの連番でOK
category_idint親のカテゴリーID
boardvarchar(255)板名。重複なし
sortint並び順を指定する数値
create_dtdatetime作成日時
update_dtdatetime更新日時
delete_dtdatetime削除日時=論理削除

#code(sql){{
CREATE TABLE IF NOT EXISTS `bbs_board` (

 `id` int(11) NOT NULL AUTO_INCREMENT,
 `category_id` int(11) NOT NULL,
 `board` varchar(255) NOT NULL,
 `sort` int(11) NOT NULL,
 `create_dt` datetime NOT NULL,
 `update_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `delete_dt` datetime DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `board` (`board`),
 KEY `sort` (`sort`)

) ENGINE=InnoDB ;
}}

スレッド

テーブル名:bbs_thread

カラム名データ型内容
idint主キーのID。auto_incrementの連番でOK
board_idint親の板ID
threadvarchar(255)スレタイ(スレッドのタイトル)
passwordvarchar(255)編集用パスワード。スレッド作成者が後で編集できる仕様にする
ipvarchar(64)スレッド作成者のIPアドレス。IPv6(40文字)にも対応
sum_upintサムズアップボタンのクリック数。=スレッドに対する良い評価の投票
sum_downintサムズダウンボタンのクリック数。=スレッドに対する悪い評価の投票
create_dtdatetime作成日時
update_dtdatetime更新日時
delete_dtdatetime削除日時=論理削除

レス

テーブル名:bbs_response

カラム名データ型内容
idint主キーのID。auto_incrementの連番でOK
thread_idint親のスレッドID
namevarchar(255)投稿者の名前
emailvarchar(255)投稿者のメールアドレス
responsetextレス=投稿内容
passwordvarchar(255)編集用パスワード。投稿者が後で編集できる仕様にする
ipvarchar(64)投稿者のIPアドレス。IPv6(40文字)にも対応
sum_upintサムズアップボタンのクリック数。=レスに対する良い評価の投票
sum_downintサムズダウンボタンのクリック数。=レスに対する悪い評価の投票
create_dtdatetime作成日時
update_dtdatetime更新日時
delete_dtdatetime削除日時=論理削除

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS