要件分析に基づき、ブログアプリケーションの永続データを保存するために、以下のデータベーステーブルを使用することに決定しました。
tbl_user
は、ユーザー名とパスワードを含むユーザー情報を格納します。tbl_post
は、ブログ投稿情報を格納します。主に以下の列で構成されます。title
: 必須、投稿のタイトル;content
: 必須、Markdown 形式を使用する投稿の本文;status
: 必須、投稿のステータス。以下のいずれかの値を持ちます。tags
: オプション、投稿を分類するカンマ区切りの単語のリスト。tbl_comment
は、投稿のコメント情報を格納します。各コメントは投稿に関連付けられ、主に以下の列で構成されます。author
: 必須、著者名;email
: 必須、著者のメールアドレス;url
: オプション、著者のウェブサイト URL;content
: 必須、プレーンテキスト形式のコメント内容。status
: 必須、コメントのステータス。コメントが承認済み(値 2)かどうか(値 1)を示します。tbl_tag
は、タグクラウド機能を実装するために必要な投稿タグの頻度情報を格納します。このテーブルには主に以下の列が含まれます。name
: 必須、一意のタグ名;frequency
: 必須、タグが投稿に表示される回数。tbl_lookup
は、汎用的なルックアップ情報を格納します。これは基本的に、整数値とテキスト文字列間のマップです。前者はコード内のデータ表現であり、後者はエンドユーザーへの対応する表示です。たとえば、下書き投稿のステータスを表すために整数 1 を使用し、このステータスをエンドユーザーに表示するために文字列 Draft
を使用します。このテーブルには主に以下の列が含まれます。name
: エンドユーザーに表示されるデータ項目のテキスト表現;code
: データ項目の整数表現;type
: データ項目のタイプ;position
: 同じタイプの他の項目の中でのデータ項目の相対的な表示順序。以下のエンティティ関係(ER)図は、上記のテーブルに関するテーブル構造と関係を示しています。
ブログデータベースのエンティティ関係図
上記の ER 図に対応する完全な SQL ステートメントは、ブログデモで確認できます。Yii のインストールでは、ファイル /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql
にあります。
情報: すべてのテーブル名と列名を小文字で指定します。これは、DBMS によって大文字と小文字の区別が異なる場合があり、このようなトラブルを回避するためです。
また、すべてのテーブルに
tbl_
というプレフィックスを付けます。これには 2 つの目的があります。まず、プレフィックスは、複数のアプリケーションが単一のデータベースを使用する共有ホスティング環境でよく発生するように、同じデータベース内の他のテーブルと共存する必要がある場合に、これらのテーブルに名前空間を導入します。次に、テーブルプレフィックスを使用すると、DBMS の予約キーワードである可能性のあるテーブル名を持つ可能性が低くなります。
ブログアプリケーションの開発を、以下のマイルストーンに分割します。
タイプミスを見つけましたか?あるいは、このページを改善する必要があると思いますか?
github で編集 !
コメントするには、サインアップまたはログインしてください。