ポリモーフィック関連
アンチパターンと言われることが多い
例
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に外部キー制約
P1、P2の共通項を抜き出した基底Bを作り、
P1、P2、Cが、Bを継承しているものとして捉える
以下の様な参照関係になる
P1→B
P2→B
C→B
P1→C←P2じゃだめ?
依存関係がおかしくなっているのでダメmrsekut.icon
ダメ、というか無理
『SQLアンチパターン』.iconの例に沿って説明するなら
そもそも、
BugsやFeatureRequestsが先にあって、
それに対してCommentsができる
という順序なので、Bugs→Comments←FeatureRequestsは不可能
Bugsが生成された時点でCommentsは存在していないし、
そもそもBugs : Comments = 1 : 多なので、Bugsはどう定義するんですか?という話になる
参考