🗂

テーブル定義書とは

2023/10/13に公開

テーブル定義書は、テーブルやカラムの定義や制約を定める設計書です。
作成にあたり各要素の復習や命名規則について残したいと思います。

テーブル定義書の作成にあたり

各要素一覧

項目 説明
PK(主キー) テーブルのレコードを一意に特定する。カラムテーブルを作成した時に必ず生成されるid
FK(外部キー) 別のテーブルとの関連性を表すためのカラム。他のテーブルの値を参照する。
データ型 データの種類を指定し、そのカラムに格納できるデータの形式を制限する。
NOT NULL 空のカラムを禁止する制約
AUTO INCREMENT 設定したカラムに自動的に番号を割り当てる機能
INDEX 索引の意味を持ち、データベースの表の検索処理を高速化させるもの
DEFAULT データの初期値を設定する機能

データ型種類

データ型 種類
integer 数値(整数)
decimal 数値(精度の高い小数)
float 数値(浮動小数)
string 文字(短い文字列)
text 文字(長い文字列)
date 日付
datetime 日時
time 時刻
timestamp タイムスタンプ
binary バイナリ
boolean 真偽

命名規則

テーブル名とカラム名を定義するにあたりいくつかルールがあるのでまとめます。

テーブル

  • テーブル名が小文字の英語
  • 複数形
  • スネークケースである
    例:cart_items

カラム

  • カラム名が小文字の英語
  • スネークケースである
  • テーブル名をカラム名の頭につけない
  • ローマ字ではなく英単語を用いる
  • 略語、略名は使わない
  • boolean型のカラムはis_〇〇という形で定義する
  • 外部キーは(テーブル名単数形)_idの形になっている
  • 名前を見ただけで中に入るデータを正確に読み取れる
テーブル名をカラム名の頭につけない

例:管理者(admins)テーブルのメールアドレスカラム:admin_email → ✖
テーブル定義書を見た人は管理者テーブルのemailとわかるため、カラム名の先頭には原則テーブル名は不要。

boolean型のカラムはis_〇〇という形で定義する

例:customersテーブルの会員ステータス(is_activeカラム)の場合

@customer.is_active

これを条件分岐する際にis_〇〇と定義しておくことで自然なコードになります。

if @customer.is_active
  # アクティブな会員に対する処理
else
  # 退会済みの会員に対する処理
end

上記の記載にすることで「もし会員がアクティブであるならば」とわかりやす文になります。
TRUEとFALSEで何かを判別するようなboolean型のカラムでは、is_〇〇と定義することで読みやすいコードを書くことにつながります。

テーブル定義書を作成する際は、上記の命名規則を意識しながらわかりやすい名前で作成することで他者が見た際にも伝わるようにすることが大切です。

参考

https://zenn.dev/ganmo3/articles/35037fb1cd5b35

Discussion