■ 1. 概要
- 「外部キーNight 2026」にて、osyoyu氏が外部キー制約不要論を主張
- 主張の軸は運用上の障壁という観点にとどまらず、整合性を守る仕組みとしての根本的な力不足にある
- システム全体を考えると、不変条件はアプリケーション層で実装すべきであり、その結果として外部キー制約の出番がなくなるとする
■ 2. リレーショナルモデルの限界
- DDL(CREATE TABLE)の表現力には本質的な限界がある
- 表現困難なルールの例:
- ユーザーが住所登録を保留したままnullで登録完了できるが、住所がnullのユーザーは商品注文不可というルール
- 外部決済システム(Stripe等)との連携時はRDBMSの制約が無力になる
- 複雑な不変条件を守るには、トランザクション、ロック、非同期検証といったアプリケーション層での実装が必要
■ 3. RDBMSに対する見方
- 「MySQLはKVS」という表現に70%同意する立場をとる
- RDBMSは「行を保存し特定条件下で高速クエリできるストレージ」と捉えるべきとする
■ 4. ACID特性への選択的な期待
- A(原子性)・D(持続性)には期待する
- C(一貫性)は別の仕組みで守るべきとする
- I(独立性)は実務上SERIALIZABLEで運用されていないとする
■ 5. 型システムの活用
- 強力な型システムを持つ言語(RustやTypeScript)では、users.idとorders.idに異なる型を付与することでIDの取り違えを防止できる
■ 6. 結論
- 外部キー制約の益がない証明は困難であることを認めつつも、害が発生しない条件は想像以上に狭いと結論づける
- 激しく変化するアプリケーションほど、その傾向が顕著になるとする