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

ER図をSQL文にしたものが、ブログデモに含まれています。
上記 ER 図に対応する完全な SQL 文は ブログデモ で見つけられるでしょう。
Yiiのインストールディレクトリの中では/wwwroot/yii/demos/blog/protected/data/schema.sqlite.sqlにあります。
情報: テーブル名とカラム名は全て小文字で命名します。これは異るDBMSはしばしば異るケースセンシビティを持つため、このようなトラブルを辟けるためです。
全てのテーブルに
tbl_というプレフィクスを付けています。これには2つの目的があります。 第1に、プレフィクスは名前空間を導入し、同じデータベースで他のテーブルと共存ができます。 これは共用ホスティング環境で、複数のアプリケーションが単一のデータベースを使用する場合にしばしば見られます。 第2に、プレフィクスを用いればDBMSの予約語と同じテーブル名を使う可能性が低くなります。
ブログアプリケーション開発を、以下のマイルストーンに分割します。
Be the first person to leave a comment
Please login to leave your comment.