新品価格 |
[書評]SQLアンチパターン5章を読んだ
の続編
6章はポリモーフィック関連
本章もためになりました
以下、内容
・前提
Aテーブルと
Bテーブルに
紐づくCommentテーブルを作る
・アンチパターン
Commentのカラムに
AかBかという判別をつける
ただし結合したいテーブルが2つあるので
外部キーが使えない
・アンチパターンを使っても良い場合
rails等のフレームワークのORMでは
polymorphic
オプションがある。
そうすると二つのテーブルに紐付けるテーブルが作れる
後々フレームワーク移行するときには辛そうだけどね
・交差テーブルの作成
Arelation
Brealtion
を作って
Arealtion
Brealtion
の外部キーとして
Aテーブルと
Bテーブルと
Commentテーブルを外部キーとして設定する。
先輩のコードでこれあったなぁって思った
・ユニークにする
ArelationでCommentの外部キーに
uniqueの制約をつければテーブル内はユニークになる。
ただし、ArelationとBrelationの二つのテーブル間で
ユニークにするのはアプリ側に委ねられてしまう
・共通の基底クラスを作る
issue:idがあるテーブルを生成
A:issueのidが外部キーで主キー
B:issueのidが外部キーで主キー
comment:issueが外部キー
こうしておくと
commentとAやBに外部キーの制約なくても
joinできるよって話。
本章も非常にためになりました。
はまりがちなので注意って感じです。
まだまだ続く
タグ:SQL