2.4.2 モデルとデータベースの規約
モデルのクラス名は単数形でキャメル記法です。Person、BigPerson、ReallyBigPerson などは規約に合ったモデル名です。
CakePHP のモデルに対応するテーブル名は、複数形でアンダースコア記法です。上記の例で言えば、テーブル名はそれぞれ、people、big_people、really_big_peopleになります。
hasMany, blongsTo, hasOne 中の外部キーは、デフォルトで関連するモデルの(単数形の)名前に _id を付けたものとして認識されます。ケーキ職人(backer)がケーキ(cakes)を複数持っている(hasMeny)としたら、cakes テーブルは、baker_id を外部キーとして bakers テーブルのデータを参照します。
モデル間の hasAndBelongsToMany (HABTM) の関係で使用される join テーブルは、join するテーブルに合わせて、アルファベット順に(zebras_apples ではなく、apples_zebras)並べた名前にしてください。
CakePHP モデルの全てのテーブルは、(join テーブルで表現することを除いて) 相互に作用し、それぞれの列を一意に識別する単一フィールドのプライマリーキーが必要です。もし、posts_tags のような join テーブルの列で、単数形のプライマリーキーではないテーブルのモデルをお望みなら、テーブルに単一フィールドのプライマリーキーを追加することが CakePHP の規約です。
