参照を逆転してポリモーフィック関連を解消
名前ついてないんか?mrsekut.icon
P1←C→P2のような依存関係
table:Cの例
id ... p_type p_id
100 ... P1 1
101 ... P2 1
102 ... P2 2
ここで、p_idは2つの意味を表していることに注意する
p_typeの値によって、p_idの表す意味が変わる
従って、p_idには適切な外部キー制約を付けることができない こうする
P1←PI1→C←PI2→P2
定義
table:PI1
c_id p1_id
(c_id,p1_id)は複合主キー
c_idとp1_idに外部キー制約
中間テーブルを作ることで、依存の向きは歪にならない
問題点を挙げるとすれば
PI1とPI2には同じc_idが存在してはいけない
tableを跨いでUNIQUE制約を付けられないのでDBのみでは担保できない
アプリケーション側で制御する必要がある
Pの数だけ、(P用のtable, 中間テーブル)が必要になる
あるいはいっそのこと依存関係を逆転させるか
そうすれば中間テーブルは不要になる
テーブルの都合で逆転するのはおかしいと思うが