【MySQL】データベース作成のときの実践的なテーブル構成方法

データベース

データベース作成のときの実践的なテーブル構成方法を紹介します。

トランザクションテーブルとマスタテーブルの識別

トランザクションテーブル

トランザクションテーブルとは、phpなどアプリからデータを頻繁に挿入したり更新したりするようなテーブルです。
エントリーテーブルとも呼ばれます。
例えば、注文を受けつけたオーダー情報のテーブル、顧客情報のテーブル、請求情報のテーブルなどです。

先頭にENT, TXN, TRNなどを付けてトランザクションテーブルとわかりやすいテーブル名にします。

マスタテーブル

参照値を保持する用のテーブルです。
アプリからは頻繁には値を挿入、変更しないテーブルです。
商品一覧や、店舗一覧などです。

先頭にはMSTとつけてマスターであることを示します。

論理削除フラグの導入 – delete_flg

レコードの有効性を識別するためのフラグです。
delete_flgや、valid_recordなどの名前でフラグを作成します。

例えば、delete_flg = 1の場合には無効レコードとして扱うといった使い方をします。

更新日、更新者の導入 – updated_at, updated_by

レコードがいつ、誰によって変更されたのかを保持するための属性で、updated_at, updated_byを付与します。
登録日なども設けたりします。
バグの原因やいつのバグなのかがわかりやすくなります。

current_timestampで現在日時を取得できます。
on update current_timestampとすると、更新されたときも日時を取得できます。

外部キー制約はつける場合とつけない場合がある

外部キー制約はとても狭い制約になるため、つけない場合もあります。
外部キー制約の作成方法については、【MySQL】SQLの書き方まとめを参考にしてみてください。