CAKEPHP データベースの設計
動画をもっと大きく見たい方はこちら
CakePHPの便利なところは
- 面倒な処理(SQLはCakePHP側で勝手にやってくれる)
- データベースの種類に依存しない
これに限ると思います。
これらの便利な機能を存分に発揮するにはCakePHPに沿ったデータベースの設計が必要です。
CakePHPのデータベース設計のコツ
- フィールドの型は命名規則を守る
CakePHPの機能を存分に使うためにはCakePHP独自の命名規則を守らなければなりません。
今回は簡易的なブックマークアプリを作成します。
データベースの内容
- ID
- タイトル
- URL
- 登録日時
- 更新日時
SQL
CREATE TABLE posts (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50),
url VARCHAR(50),
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);
まずテーブル名ですが、これにも大事な規則があり、仮にpostという内容のテーブルを作成したいなら、postsと、必ず複数形にします。
id名はpost_idとか余計なことはせず、ただidと書きます。で、
URLとタイトルについては特に変わらずいつものデータベース設計と一緒。
登録日時と更新日時の登録については重要な命名規則があります。
登録日時はcreated,更新日時はmodified
登録日時や更新日時をデータベースに登録するにはPHP側でdate関数を使って取得しなくてもCakePHPが勝手にやってくれます!すばらしか!
登録日時と更新日時がほしい場合は登録日時はcreated,更新日時はmodifiedというフィールド名を作成し、DATETIME型にする。これだけです。
なお、今回は多数の書き込みを予想してデータベースの種類はMysqlのinnoDBにしました。私もまだデータベースについてはまだ初心者ですが、SELECT文についてはMyisamが早く、トランザクション機能とサブクエリが投げられるのがnnoDB。それぞれの特徴をつかんで使い分けるとよさげです。
今日のまとめ
テーブル名は複数系。オートインクリメントはid、登録日時はcreated,更新日時はmodifiedとそれぞれCakePHPの命名規則に沿って名前をつけること!