スポンサーリンク

MySQL, Laravel 複合主キーのジレンマ

複合キーとは

一般的にマスターテーブルは、idカラムを主キーとして使い制御します。
集計用のテーブルではレコードを狙って更新することはほぼないため、idカラムの設置はもったいないんじゃない?
万が一オーバーフローでもしたら・・・。
いや、LaravelだとUnsignedBigIntegerで18京なのでオーバーフローする可能性は0に近いです・・・。

Laravelではなく完全自作ならメリットあり

DBの容量は少なくできますし、SQLには
「INSERT INTO…ON DUPLICATE KEY UPDATE…」
というUpsert的な便利な構文も存在します。

LaravelのEloquantはidカラムありきで設計されている

複合主キーではfind()やsave()メソッドが失敗します。

結論:Laravelではidカラム必須で構築する

ムラムラする気持ちを抑えつつ機械的にidカラムを設置しましょう。