要求分析に基づいて、このブログアプリケーションの永続データを保存するために以下のデータベーステーブルを使うことにします。
tbl_user
はユーザ名、パスワードを含むユーザ情報を格納します。tbl_post
は記事情報を格納します。主に以下のカラムから成ります:
title
: 必須、記事のタイトルcontent
: 必須、Markdown フォーマット で記述された記事の本文status
: 必須、記事のステータス(公開状態)。以下のいずれかの値をとる
tags
: オプション、記事をカテゴリ化するためのカンマ区切りの単語のリストtbl_comment
記事へのコメント情報を格納します。各コメントは一つの記事と関連付けられ、主に以下のカラムから成ります:
author
: 必須、コメント作成者名email
: 必須、コメント作成者のメールアドレスurl
: オプション、コメント作成者のウェブサイトの URLcontent
: 必須、プレーンテキストで記述されたコメントの内容status
: 必須、コメントのステータス(公開状態)。コメントが承認された(値は2)か、未承認(値は1)かを示すtbl_tag
は、タグクラウド機能を実装するために必要な、記事のタグ頻度情報を格納します。このテーブルは主に以下のカラムから成ります:
name
: 必須、ユニークなタグ名frequency
: 必須、タグが記事に出現する回数tbl_lookup
は汎用のルックアップ情報を格納します。これは本質的には整数値とテキストのマッピングです。
前者はコード中のデータ表現であり、後者は対応するエンドユーザのための表現です。
例えば、整数値1を記事が下書きであることを表すものとして使用しますが、エンドユーザに表示するテキストは 下書き
となります。このテーブルは主に以下のカラムから成ります:
name
: データ項目のテキスト表現(エンドユーザに向けて表示)code
: データ項目の整数値表現type
: データ項目の型position
: 同じ型のデータ項目の中での相対的な表示順序以下の ER 図が上記のテーブルのテーブル構造とリレーションをあらわします。
ブログデータベースの ER 図
上記 ER 図に対応する完全な SQL 文が ブログデモ に付属しています。
Yii のインストールディレクトリの中では /wwwroot/yii/demos/blog/protected/data/schema.sqlite.sql
というファイルにあります。
情報: テーブル名とカラム名は全て小文字で命名します。これは、異る DBMS はしばしば異るケースセンシティビティを持つからであり、それによるトラブルを避けたいためです。
同時に、全てのテーブルに
tbl_
というプレフィクスを付けています。これには二つの目的があります。 第一に、同じデータベースで他のテーブルと共存する必要があるときには、プレフィクスでテーブルに名前空間を導入することが解決策となります。 これは共用ホスティング環境で、複数のアプリケーションが単一のデータベースを使用する場合にしばしば見られます。 第二に、プレフィクスを用いれば DBMS の予約語と同じテーブル名を使う可能性が低くなります。
ブログアプリケーションの開発を、以下のマイルストーンに分割します。
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.