これはSQL設計の質問です。まず、セットアップ。私は3つのテーブルを持っています:
- リンクされたサーバーに対するクエリに基づいて自動的に入力されるA。このテーブルのデータは変更できません。
- Bは、Asのコレクションの名前を含む、わずか12行程度です。
- AtoBは、Asが名前付きコレクションに編成され、両方の列に外部キーがあるマッピングテーブルです。
たとえば、Aには次のものが含まれます。
- キリン
- フクロウ
- 虎
そしてBには以下が含まれます:
- シアトル動物園
- サンノゼ動物園
また、AtoBには次のものが含まれています。
1,1(シアトルのキリン)
2,1(シアトルのフクロウ)
3,1(シアトルのタイガー)
2,2(サンノゼのフクロウ)
さて、問題:
これらのコレクションの一部に、Aにないアイテムを含めるように依頼されました。そこで、Aと同じID列とName列を持つテーブルCを作成し、データを入力します。前の例に従って、Cに次のものが含まれているとします。
- ドラゴン
問題は、CのアイテムをAtoBに含めるにはどうすればよいですか?シアトル動物園にドラゴンを含める必要がある場合はどうなりますか?
私の最初の本能は、素朴で、AとCの和集合を含むビューVを作成し、AtoBをVtoBに変更することでした。それが私の素朴さが報われたところです。ビューへの外部キーを作成することはできません。
1つまたは複数のAまたはCをBに関連付けるための標準的で正しい手段があると思います。