テーブル定義

プログラムを書く際にはまず何よりもデータ構造、ってことで、 まずテーブル定義を考えます。

この掲示板では複数の掲示板を作成できますから、 まず「掲示板」(board)テーブルが必要です。 boardテーブルは、それぞれの掲示板のタイトルその他を保持します。

そしてもちろん、投稿内容を保持するための 「メッセージ」(message)テーブルが必要です。 messageテーブルは、ひとつの掲示板内での連番と、boardのIDがキーになっており、 このふたつの情報で、ひとつのメッセージを特定できます。

boardテーブル

というわけでまずはboardテーブルの定義です。

boardidvarchar(32)このテーブルのキー。英数字。 URLにおいて「boardid=kmaebashibbs」という形式で指定しているのがこれ。
namevarchar(128)板名(日本語)
defaultrangeinteger日付順表示のときの1ページ表示数
defaultrangeindexintegerインデックス表示のときの1ページ表示数
defaultrangethreadintegerスレッド表示のときの1ページスレッド数
homepagevarchar(128)開設者Webページ
cssvarchar(64)CSSのパス(使ってない)
showmessagephpvarchar(64) 1メッセージ表示用のPHPのパス(使ってない)

cssとshowmessagephpは現在使っていません。 これを使えば、掲示板ごとにスタイルを変えたり、 投稿の表示形式を変えたりすることができるはず…なのですが、 現状では見栄えの調整がスタイルシートに分離できてないです (OTD時代に無理に書いたHTMLをそのまま持ってきたため)。

showmessagephpの方は、使えば使えそうですが、 PHPをユーザに書かせる掲示板ってのもどうかという気がしています。 具体的にどのような使い方を想定しているかについては、 そのあたりのPHPを説明するときに書きます。

messageテーブル

次はmessageテーブルです。

serialidintegerキー。掲示板で投稿の左上に表示される連番。
boardidvarchar(32)キー。boardテーブルのboardidを指す。
posteddatetimestamp投稿日付
namevarchar(64)投稿者
mailaddressvarchar(64)メールアドレス(使ってない)
urlvarchar(64)URL
subjectvarchar(128)件名
messagetext投稿内容
altermessagetext強制削除とかした時の代替メッセージ(使ってない)
passwordvarchar(64)パスワード(使ってない)
preformattedbool<PRE>で囲むかどうか(使ってない)
deletedbool削除フラグ
parentinteger親メッセージ
topintegerスレッドのトップ
ipaddressvarchar(32)投稿者IPアドレス
remotehostvarchar(64)投稿者リモートホスト名
useragentvarchar(64)投稿者User Agent

SQL

上記テーブルを作成するSQLを載せておきます。

create table board (
  boardid varchar(32) primary key,
  name varchar(128),
  defaultrange integer,
  defaultrangeindex integer,
  defaultrangethread integer,
  homepage varchar(128),
  css varchar(64),
  showmessagephp varchar(64),
);

create table message (
  serialid integer,
  boardid varchar(32),
  posteddate timestamp,
  name varchar(64),
  mailaddress varchar(64),
  url varchar(64),
  subject varchar(128),
  message text,
  altermessage text,
  password varchar(64),
  preformatted bool,
  deleted bool,
  parent integer,
  top integer,
  ipaddress varchar(32),
  remotehost varchar(64),
  useragent varchar(64),
  primary key (serialid, boardid)
);

ひとつ上のページに戻る | ひとつ前のページ | ひとつ後のページ | トップページに戻る
mailto:PXU00211@nifty.ne.jp

このページに対してご意見・ご質問・ご感想等をいただいた場合、 公開することがあります。