laravelでのデータベースの命名規則
今回はlaravelを使用したデータベースの命名規則をまとめました。
テーブル名の規則
laravelの命名規則はスネークケース(区切りを_で区切る)と複数形になります。
テーブル名の例)
users
failed_jobs
ただし中間テーブル(多対多)の場合、単数形と単数形を_を区切ったテーブルになるので単数形になります。
またテーブルを複数系にする特性上、単数形と複数形が別の名前の単語を使うので少しデータベースの考慮が難しくなります。
カラム名の規則
カラム名は、スネークケースかつ基本は単数形
カラム名の例)
video
video_url
基本はと書いたのは、複数を前提に設定されているカラムは複数形
複数でないと意味が通らない
例)
number of items アイテム数
複数系の方が意味が分かり安い
例)
販売するポイント(1000ptで販売等)
Sales PointsでもSales Pointとも表す事ができる。
だが、sales pointと書くとセールスポイント(販売する時のポイント(良い点))
ともとる事ができるので販売ポイントで考える時はpointsと書いた方が意味が分かり安い
sales points
を採用する方が良さそうである。
データベースの命名で下記の記事が面白かったので、読んでみるのもありかも。
https://kaki-engine.com/how-to-name-columns-in-a-table/
その他、迷う理由にあるのが、他の人のDB作成した形を見る事がなかなかできないからだと思ったのでec-cubeのカラム名とかは下記で参照できる。
https://ec4.umebius.com/tables/dtb_shipping
今回郵送で参考になったのは
sell→order(purchase)→shipping(発送)→delivery(配達)
shippingとdeliveryが別になってたので調べたら別儀だったので参考になりました。
※orderは注文して商品が届くまでにラグがある者
purchaseは購入なので即時に物が届くイメージ。
その他カラム名をまめてくれているqiita
https://qiita.com/otagaisama-1/items/4d7e2eb5c274e9fce664
カラム名の命名パターン
テーブル名に帰属するデータは接頭語は基本無しとする。
例)usersテーブルに下記のカラムがあった場合はuser情報に付属するデータとする。
name
email
phone
ただしusers情報のテーブルに違うでnameデータを入れる場合がある。例えば所属する会社の名前等その場合は接頭語を付けてカラム作成します。
company_name
company_email
company_phone
等
数を表す数はnumber ofを採用する
よくある表記として
item_number になってしまうとアイテムのシリアルナンバーと勘違いするケースがでるので
number of itemsを採用する。
単数形と複数系が同じ名前をできれば避ける
上記のような単数形と複数形の形式があるのに、単数形と複数形が同じ名前の場合混乱の原因になりやすいので、単数形と複数形が同じ英語はできたら避けています。
新着情報のテーブルを作る時
例
× newsだと単数形と複数形が一緒
○ information
2値のカラム(カラムがboolean型の場合)
is_状態で記載をします。
これによりTrueの時の状態が分かりやすくなります。
例)
is_true
の場合は1がtrueで0がfalseと分かる。
boolean型で使うパターン
display | 表示・非表示 |
true | 真偽 |
publish | 公開・非公開 |
日付について
作成日・更新日・削除日についてはlaravel標準のat表記を使う
create_at | 作成日 |
update_at | 更新日 |
delete_at | 削除日 |
日付と日時で表示変更する。
下記はアンチパターン
live_start_date | 2020年10月1日公開 |
live_start_date_time | 2020年10月1日19:00公開等 |
上記もlaravelであればatやonを使って冗長化させないのが吉
日付であれば
日付を表す場合(例 2020年10月1日開始) | start_on |
時間まで表す場合(例 2020年10月1日19:00開始) | start_at |
と表します。
意味が分からない略語は使わない
よくあるパターンとしてcodeをcdど略すパターンがありますがこれはNGです。
Maximumをmaxとして一般的に流通しているような場合に限り冗長性を下げる為に使用します。