コムセント 技術情報

  1. TOP
  2. コムセント 技術情報
  3. MySQL使用時の命名規則等について提案

MySQL使用時の命名規則等について提案

前書き

普段MySQLを使っていて、テーブルやカラムの名前を考えるのに時間がかかったことはありませんか?
私は1つ名前を付けるのに
・前回と同じ名前
・ほかの人の名前を参考にする
・前回とは違うが、より的確な名前
・関連したデータがあるとき用の、関連しているのがわかりやすい名前
・キャメルケースかスネークケースか
等々、さまざまな可能性を考えてしまうため、まぁまぁ時間がかかります。
後からやっぱり違う名前のほうが管理しやすいと考えて変更することもあります。
まだあまり数をこなしていないからかもしれませんが・・・。

この時間をもう少し短縮したいと考え、社内で命名規則を作成してはどうかという提案をしようという考えが頭に浮かびました。

これは一つの選択肢であり、必ずこの規則に乗っ取らなくてはいけないというわけではありません。
各自自分がやりやすい方法がある人はそれでいいと思います。
迷う人の参考になればいいな、というスタンスで提案します。

こっちのがいい、こういうのはどうか等ありましたら、ぜひ教えて頂けると助かります!

提案

  • 大文字を利用しない
    小文字で統一化
  • 複数単語の場合はスネークケース
    例:単価 -> unit_price
  • 単数形
    複数形にする際の文字の変化がわかりずらかったりするので、単数形で統一。
  • 名前の先頭に接頭語
    一覧で見た際に接頭語の方がグルーピングがわかりやすいため、同じような概念のものを同じ接頭字を付ける。
    例:姓 -> name_last 名 -> name_first
    のように、名字と名前はどちらも名前に関係するのでnameを接頭字にする
  • info や data などの名前は避ける
    無くてもそれが情報やデータだということはわかるため
  • フラグは is_ の接頭語
    例:is_delete, is_up, is_show
  • DATE型 過去形_on
  • TIMESTAMP型 過去形_at
    こちらは、接頭字で他のグルーピング、接尾字でDATE型 or TIMESTAMP型の判断としたほうがわかりやすいかなと考えて接尾字を採用しています。
    例:name_last (姓) と name_last_at (姓の変更日時)
    is_hidden と is_hidden_at

例:テーブル名

テーブル名目的備考
user_frontフロントのユーザーユーザーの種類によって都度 _ の後を変えるとわかりやすい
user_admin管理画面のユーザー(管理者)
user_staff管理画面のユーザー(スタッフ)

例:カラム名

カラム名目的備考
name_lastvarcharnameでグルーピングするとわかりやすい
name_firstvarchar
name_kana_lastセイvarchar
name_kana_firstメイvarchar
number_phone電話番号varcharよくintにして頭の0が消える
number_mobile携帯電話番号varchar
idIDint
id_staff担当者IDintidでグルーピング
zipcode郵便番号varcharハイフンは無し。postalcodeより短いのでこちらを採用

まとめ

今回この記事を書くにあたり、いろいろな人達の意見を参考にしてみました。
その中でも、私がわかりやすいなと思ったものや、つじつまが合うようなものを組み合わせて1つの指標にしてみました。
今まで私が作成してきたテーブルなどでは上記に乗っ取れていないものもあるので、次回からはこのリストを意識して、他人が見てもわかりやすいような命名をしていきたいと考えました。

参考

プログラマー/A.A

このメンバーの記事一覧へ

おすすめ記事