blog.bouzuya.net

2022-06-07 ARC118 B を解いた / 集約間では外部キーを設定しない

『ベイマックス』を観た。


集約 (をまたぐテーブル) 間は外部キーを設定しないほうが良さそう。

  • 前提 1: リポジトリは永続化の実装を隠すものである
  • 前提 2: リポジトリは集約ごとに作成するものである
  • 前提 3: 永続化の実装が同一でなければ外部キーを設定できない
  • 集約 (をまたぐテーブル) 間で外部キーを設定できると仮定する
  • 外部キーを設定できるのであれば永続化の実装が同一である (前提 3 の対偶)
  • 集約 (をまたぐテーブル) 間では別リポジトリである (前提 2)
  • リポジトリ間で永続化の実装が同一でなければならないが、永続化の実装を隠す (前提 1) と矛盾する
  • よって集約をまたぐテーブル間で外部キーを設定できない

うれしい点としてリポジトリのテストで別集約別リポジトリを使って初期化などをせずに済む。これについては外部キーを無効化するなどの手もあるだろうけど……。


bouzuya/rust-sandbox の its を使っている。 Issue の件数が 1000 件を超えた。


ARC118 B を解いた。解説 AC 。二分探索できるところは分かったのだけどいくつかの「言い換え」が自分では思いつかなかった。


今日のコミット。