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削除日時=論理削除
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
-
|
|
|
|
|
|
|
|
|
!
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削除日時=論理削除
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
-
|
|
|
|
|
|
|
|
|
|
!
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削除日時=論理削除
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
-
|
|
|
|
|
|
|
|
|
|
|
!
CREATE TABLE IF NOT EXISTS `bbs_thread` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `board_id` int(11) NOT NULL,
  `thread` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `ip` varchar(64) NOT NULL,
  `sum_up` int(11) NOT NULL,
  `sum_down` 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`)
) ENGINE=InnoDB ;

レス

テーブル名: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削除日時=論理削除
Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
-
|
|
|
|
|
|
|
|
|
|
|
|
|
!
CREATE TABLE IF NOT EXISTS `bbs_response` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `thread_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `response` text NOT NULL,
  `password` varchar(255) NOT NULL,
  `ip` varchar(64) NOT NULL,
  `sum_up` int(11) NOT NULL,
  `sum_down` 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`)
) ENGINE=InnoDB ;

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-07-17 (日) 20:47:24 (4660d)