全体の設計

要求分析によると、このブログアプリケーションの永続データを保存するために以下のデータベーステーブルを使うことにします。

  • tbl_user はユーザ名、パスワードを含むユーザ情報を格納します。
  • tbl_post は記事情報を格納します。主に以下のカラムから成ります:
    • title: 必須、記事のタイトル。
    • content: 必須、Markdown フォーマットで記述された記事の本文。
    • status: 必須、記事のステータス(公開状態)。以下のいずれかの値をとる。
      • 1, 記事は草稿で、公開されていない。
      • 2, 記事は公開されている。
      • 3, 記事は公開期間を過ぎ、記事リストには現れない(しかし個別のアクセスによる表示は可能)
    • tags: オプション、記事をカテゴリ化するためのカンマ区切りの単語のリスト。
  • tbl_comment 記事へのコメントを格納します。各コメントは記事と関連付けられ、主に以下のカラムから成る:
    • name: 必須、コメント作成者名
    • email: 必須、コメント作成者のメールアドレス
    • website: オプション、コメント作成者のウェブサイトのURL
    • content: 必須、Markdown フォーマットで記述されたコメントの内容。
    • status: 必須、コメントが承認された(値2)もしくは未承認(値1)のいずれかの値をとるコメントのステータス(公開状態)。
  • tbl_tag はタグ頻度情報を格納しタグクラウド機能により使用される。このテーブルは主に以下のカラムから成る:
    • name: 必須、ユニークなタグ名
    • frequency: 必須、タグが記事に出現する数
  • tbl_lookup はルックアップ情報を格納します。本質的には整数値とテキストのマッピングを表します。 前者はコード中のデータ表現であり、後者は対応するエンドユーザのための表現です。 例えば、整数値1を記事のドラフト状態を表すものとして使用しますが、エンドユーザに表示するテキストはDraftとなります。このテーブルは主に以下のカラムから成ります:
    • name: データのエンドユーザに表示するためのテキスト的な表現
    • code: データの整数値表現
    • type: データの型
    • position: 同種の項目の中での相対的な位置

以下の ER 図が上記のテーブルのテーブル構造とリレーションをあらわします。

ブログデータベースのER図

ブログデータベースのER図

ER図をSQL文にしたものが、ブログデモに含まれています。

上記 ER 図に対応する完全な SQL 文は ブログデモ で見つけられるでしょう。 Yiiのインストールディレクトリの中では/wwwroot/yii/demos/blog/protected/data/schema.sqlite.sqlにあります。

情報: テーブル名とカラム名は全て小文字で命名します。これは異るDBMSはしばしば異るケースセンシビティを持つため、このようなトラブルを辟けるためです。

全てのテーブルにtbl_というプレフィクスを付けています。これには2つの目的があります。 第1に、プレフィクスは名前空間を導入し、同じデータベースで他のテーブルと共存ができます。 これは共用ホスティング環境で、複数のアプリケーションが単一のデータベースを使用する場合にしばしば見られます。 第2に、プレフィクスを用いればDBMSの予約語と同じテーブル名を使う可能性が低くなります。

ブログアプリケーション開発を、以下のマイルストーンに分割します。

  • マイルストーン 1: ブログシステムのプロトタイプを作成します。必要な機能のほとんどを含みます。
  • マイルストーン 2: 記事の投稿機能を完成させます。記事の作成、リスト表示、記事の表示、更新、削除を含みます。
  • マイルストーン 3: コメント作成機能を完成させます。コメント作成、リスト表示、承認、更新、削除を含みます。
  • マイルストーン 4: ポートレットを実装します。ユーザメニュー、ログイン、タグクラウド、最近のコメントを含みます。
  • マイルストーン 5: 最終調整と配備を行います。
$Id: start.design.txt 1677 2009-02-17 02:57:56Z qiang.xue $

Be the first person to leave a comment

Please to leave your comment.