制約によって異なります:
-
apples
に外部キーまたはチェックがありますかoranges
には存在しません (またはその逆)? - 両方のテーブルでキーを一意に保つ必要がありますか(したがって、
apple
はありません) 一部のorange
と同じIDを持つことができます )?
これら2つの質問に対する答えが次の場合:「はい」 および「いいえ」 、テーブルを分離してください(制約をテーブル固有にすることができます)。
答えが次の場合:「いいえ」 および「はい」 、それらをマージします(両方にまたがるキーを作成できるようにします)。
答えが次の場合:「はい」 および「はい」 、継承のエミュレートを検討してください:
ルックアップデータ は似たようなテーブルの典型的な例ですが、FKを別々に保つことができるように別々に保つ必要があります。
具体的には、これは継承を表すための「個別のテーブル内のすべてのクラス」戦略です(別名、カテゴリ、サブクラス化、サブタイピング、一般化階層など)。 この投稿 をご覧ください。 詳細については