generated at
ポリモーフィック関連
アンチパターンと言われることが多い



P1 C P2 のような依存関係
Cの例
id...p_typep_id
100...P11
101...P21
102...P22
ここで、 p_id は2つの意味を表していることに注意する
p_type の値によって、 p_id の表す意味が変わる
従って、 p_id には適切な外部キー制約を付けることができない



解決策
中間tableを用意して、参照を逆転させる
P1 PI1 C PI2 P2
定義
PI1
c_idp1_id
(c_id,p1_id) は複合主キー
c_id p1_id に外部キー制約
P1 P2 の共通項を抜き出した基底 B を作り、
P1 P2 C が、 B を継承しているものとして捉える
以下の様な参照関係になる
P1 B
P2 B
C B



P1 C P2 じゃだめ?
依存関係がおかしくなっているのでダメmrsekut
ダメ、というか無理
『SQLアンチパターン』の例に沿って説明するなら
そもそも、
Bugs FeatureRequests が先にあって、
それに対して Comments ができる
という順序なので、 Bugs Comments FeatureRequests は不可能
Bugs が生成された時点で Comments は存在していないし、
そもそも Bugs : Comments = 1 : 多 なので、 Bugs はどう定義するんですか?という話になる





参考