テーブル カラムの規約
33日目です。
サービスやシステム開発に当たって、最初にするべき重要なことがデータベース設計だと学びました。
(データベース設計をしっかりと行うことで、サービスが複雑になった場合でも効率的にデータの操作を行うことができるためです。逆にここがしっかりしていないと、後からカラムを追加する必要などが生じ、他のところも修正する必要が出てきてしまいます。)
データベース設計が大切と言うことはわかったのですが、設計の中で何が大切なのか、何を気をつければ良いのかなと感じることがありました。
それは、チャットアプリに必要なテーブルの設計をし、メンターにプルリクエストを出したのですが、「(グループ名を意味する)カラム名はgroupではなくnameにしましょう」とアドバイスをもらった時です。
言われるがまま修正し、初めてLGTMをもらったので嬉しくてそのままにしてしまったのですが、何故「group」だと良くなかったのか・・・?とモヤモヤしました。
そこでカラムを作る際の規約を調べました。
前提
- 大文字を利用しない(小文字で統一を図る)
- 複数単語の連携はスネークケース
- ローマ字ではなく英語表記
- 略名は利用しない
カラムの命名規約
- ある瞬間の状態(ステータス)を表す名前とする(ある任意のタイミングの情報を管理すると言うデータベースの特性があるため。)
例)name, age , is_workingなど - 他テーブルの主キーとジョインするカラム(外部キー)はテーブル名(単数形)_id
例)user_id, category_id - 時間を表すカラムは受動態_on、受動態_at
例)closed_on, created_at
1テーブルが持つべき情報量として妥当なカラム数とは
・10以下が妥当、それ以上超える設計の場合は正規化ができないか見直す
下記の著者の方が抽出した良く使われるカラム名100の中にgroupもありましたが、一番使われているのはnameなのですね。複数単語の連携はスネークケースで書くそうなので、group_nameでも良いのかなとは思います。「group」よりは「name」がベターと言うだけだったのかもしれませんが、どう言う意図で「name」がベターだと言ったのか、明日聞いてみます。
本日はSQLやデータベース設計について学びました。
明日はsassやhamlの学習をし、チャットアプリのフロントを実装していきます。
個人的にHTML&CSSやJavaScriptより、バックエンドを学習している方が楽しいのですが、フロントの知識があればUIやUXの向上になると思うので、しっかり勉強します。