search
LoginSignup
17

More than 1 year has passed since last update.

posted at

updated at

〜DB設計基礎の「キ」 命名規則〜

取り返しのつかないことに…

テーブルの命名規則の理解が曖昧なまま、DB設計をしてしまい、アプリがいよいよ完成という頃にミスが発覚しました。大変恥ずかしいですが、初期のテーブル設計は下記のようになっていました。(まさに地獄)
テーブル画像
皆様には同じような過ちをして欲しくないため、記録を残すことにいたしました。
内容は初学者向けになりますが、簡単にまとめましたので是非理解度チェックしてみてください!

命名規則チェックリスト

🔶 テーブル名

①複数形で表記する "〜s"

❌:fruitテーブル
🙆‍♂️:fruitsテーブル

②スネークケースで表記する

❌:fruitBasketテーブル  (キャメルケース)
🙆‍♂️:fruit_basketテーブル

③英語で表記する。ローマ字は好ましくない

❌:furuutsuテーブル   
(あまり良い例が浮かびませんでした。)
🙆‍♂️:fruitsテーブル

④大文字を使用しない

❌:FRUITSテーブル
❌:Fruitsテーブル
🙆‍♂️:fruitsテーブル

🔶 カラム名

カラム名でも基本的にテーブル名と同様な規則が適用されます。

①テーブル名から分かることは書かない

fruitsテーブルの場合、
❌:fruit_nameテーブル
🙆‍♂️:nameテーブル

②1対多の関係で他テーブルのidを参照する場合は単数形を利用する

❌:fruits_idテーブル
🙆‍♂️:fruit_idテーブル
(補足:他のテーブルの主キーをjoinする場合という意味です。)

③DATE型のカラムは「受動態_on」

❌:openedテーブル
🙆‍♂️:opened_onテーブル

④TIMESTAMP型のカラムは「受動態_at」

❌:updatedテーブル
🙆‍♂️:updated_atテーブル

おおよそはこれで網羅できているのではないでしょうか。これらの他にも注意すべきことはあるようなので今後の課題とします。
初学者の方は是非調べてみてください。
参考:【初心者、必見】こんなのあるんだ!データベースの命名規約

最後に

これらをきちんと理解しておらず、開発の終盤で気付きました。(エンジニア転職を目指す初学者です。)
終盤で気づいたとしても、ORMを用いて開発を行っているため被害は甚大で修正は困難でした…
今回の件で、初期の設計の重要性を身にしみて感じました。もう二度と間違えないと誓います。
そう考えると大変良い勉強になりました。
(もしこの記事に誤りがありましたらご教授いただけると幸いです。)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
17