データベース設計:掲示板

掲示板概要

  • BBS(Bulletin Board System)
  • 作りたい機能をもとにデータベース設計をする必要があります
  • 図式化して考える
  • どのようなデータをどのようなデータ型で保存するのかということを決めるのがデータベースの設計です
掲示板利用者の役割(ロール)
  • 掲示板利用者には誰がいるか
  • 大きく分けて「閲覧者」「投稿者」「管理者」の3つのタイプの利用者


ロールとログイン

  • 業務で扱うシステムの場合、ロールごとに実行してもよい機能が異なるため、ロールごとに認証管理をおこなって機能に制限をかける場合も多い
データの流れを捉える(データフロー)
  • コメントデータを記録「投稿者」→コメント投稿プログラム
  • コメントデータを表示「閲覧者」→コメント一覧表示プログラム
サイトマップ
  1. トップページ:index.php
  2. 投稿ページ:bbs.php(ファイルとして保存する場合は、bbs.csv
  3. データベースに書き込みページ:write.php
交流サイト掲示板の仕様検討
  • 書き込み番号(通し番号)
  • 名前
  • 書き込みのタイトル
  • 本文
  • 書き込み日時
  • 削除パスワード

MySQLのデータ型

  • DBMSによってデータ型が多少異なります
  • MySQLのデータ型は、大別して「数値型」「日付・時刻型」「文字列型」の3種類
数値型

型の名称 利用例
INT 整数型 連番、個数など
DOUBLE 倍精度浮動小数点数 体重など小数点を含むもの

日付時刻型

型の名称 利用例
DATE

日付型

日付
DATETIME 日付時刻型 日付と付時刻

文字列型

型の名称 利用例
CHAR

固定長文字列型

郵便番号など桁数が決まっているもの

型名の後に()で文字列長を指定する
VARCHAR 可変長文字列型 名前、住所など

型名の後に()で最大長を指定する
TEXT 文字列型 本文など長い文章


データベース設計:掲示板

  • データベース名「tennis」
  • テーブル名「bbs」
bbsテーブルの設計

カラム名 カラム型

(長さ)
NOT NULL

制約
説明
id INT 書き込みの通し番号。主キー。自動採番にする
name VARCHAR(255) 書き込みを行った人の名前。長さは255文字まで。
title VARCHAR(255) - 書き込みのタイトル。長さは255文字まで。タイトルがないときは「無題」と表示する
body TEXT 本文
date DATETIME 書き込み日時
pass CHAR(4) 4桁の数字で削除パスワード

主キーの決め方
  • id が「主キー」
  • テーブルの中でレコードを識別する一意な値
  • id の数字は「ユニーク」(=重複しない)
NOT NULL 制約
  • 「そのカラムに必ずデータを入れる」という約束を示す
  • NULL では、ダメという意味
  • title以外の項目にはすべてなんらかのデータを入れる必要があるということを示しています