0 フォロワー

全体設計

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

  • tbl_user は、ユーザー名とパスワードを含むユーザー情報を格納します。
  • tbl_post は、ブログ投稿情報を格納します。主に以下の列で構成されます。
    • title: 必須、投稿のタイトル;
    • content: 必須、Markdown 形式を使用する投稿の本文;
    • status: 必須、投稿のステータス。以下のいずれかの値を持ちます。
      • 1 は、投稿が下書きであり、一般公開されていないことを意味します;
      • 2 は、投稿が一般公開されていることを意味します;
      • 3 は、投稿が古く、投稿リストに表示されないことを意味します(ただし、個別にアクセスすることは可能です)。
    • tags: オプション、投稿を分類するカンマ区切りの単語のリスト。
  • tbl_comment は、投稿のコメント情報を格納します。各コメントは投稿に関連付けられ、主に以下の列で構成されます。
    • author: 必須、著者名;
    • email: 必須、著者のメールアドレス;
    • url: オプション、著者のウェブサイト URL;
    • content: 必須、プレーンテキスト形式のコメント内容。
    • status: 必須、コメントのステータス。コメントが承認済み(値 2)かどうか(値 1)を示します。
  • tbl_tag は、タグクラウド機能を実装するために必要な投稿タグの頻度情報を格納します。このテーブルには主に以下の列が含まれます。
    • name: 必須、一意のタグ名;
    • frequency: 必須、タグが投稿に表示される回数。
  • tbl_lookup は、汎用的なルックアップ情報を格納します。これは基本的に、整数値とテキスト文字列間のマップです。前者はコード内のデータ表現であり、後者はエンドユーザーへの対応する表示です。たとえば、下書き投稿のステータスを表すために整数 1 を使用し、このステータスをエンドユーザーに表示するために文字列 Draft を使用します。このテーブルには主に以下の列が含まれます。
    • name: エンドユーザーに表示されるデータ項目のテキスト表現;
    • code: データ項目の整数表現;
    • type: データ項目のタイプ;
    • position: 同じタイプの他の項目の中でのデータ項目の相対的な表示順序。

以下のエンティティ関係(ER)図は、上記のテーブルに関するテーブル構造と関係を示しています。

ブログデータベースのエンティティ関係図

Entity-Relation Diagram of the Blog Database

上記の ER 図に対応する完全な SQL ステートメントは、ブログデモで確認できます。Yii のインストールでは、ファイル /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql にあります。

情報: すべてのテーブル名と列名を小文字で指定します。これは、DBMS によって大文字と小文字の区別が異なる場合があり、このようなトラブルを回避するためです。

また、すべてのテーブルに tbl_ というプレフィックスを付けます。これには 2 つの目的があります。まず、プレフィックスは、複数のアプリケーションが単一のデータベースを使用する共有ホスティング環境でよく発生するように、同じデータベース内の他のテーブルと共存する必要がある場合に、これらのテーブルに名前空間を導入します。次に、テーブルプレフィックスを使用すると、DBMS の予約キーワードである可能性のあるテーブル名を持つ可能性が低くなります。

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

  • マイルストーン 1: ブログシステムのプロトタイプを作成します。必要な機能のほとんどが含まれている必要があります。
  • マイルストーン 2: 投稿管理を完了します。これには、投稿の作成、一覧表示、表示、更新、および削除が含まれます。
  • マイルストーン 3: コメント管理を完了します。これには、投稿コメントの作成、一覧表示、承認、更新、および削除が含まれます。
  • マイルストーン 4: ポートレットを実装します。これには、ユーザーメニュー、ログイン、タグクラウド、最近のコメントポートレットが含まれます。
  • マイルストーン 5: 最終調整とデプロイ。

タイプミスを見つけましたか?あるいは、このページを改善する必要があると思いますか?
github で編集 !