1

アプリケーション用のデータベースを設計しようとしていますが、何かに苦労しています。

コレクションを保存する必要があります:

ここに画像の説明を入力

ご覧のとおり、コレクションには ID と日付があり、ここまでは簡単です。(analysisID は無視してください)

問題は、少しトリッキーなターゲットです。コレクションは 2 つの異なるタイプのターゲット (たとえば、本または雑誌 - 相互に排他的) を持つことができ、両方が 2 つの異なるテーブルにあるため、最終的には一致する可能性のある ID を持ちます。これにはどのようなアプローチが良いでしょうか?2 つの異なる外部キー (1 つは本用、もう 1 つは雑誌用) を作成することを考えましたが、そのうちの 1 つは常に NULL であり、これは最良のアプローチとはほど遠いと思います。

不明な点がありましたら申し訳ありませんが、ご不明な点がございましたら、お気軽にお問い合わせください:)

ありがとう!

4

1 に答える 1

3

アプリケーションBookエンティティとMagazineエンティティは同じ役割を担うことができるようです。これはターゲット役割と呼ばれます。
名前、リリース日などの共有プロパティを含む本と雑誌のベーステーブルを用意することにつながります...ベーステーブルWritingテーブルと呼びます。

ライティングテーブルは、雑誌や本と 1 対 1 の関係になります (ライティングの外国語キーが本や雑誌の主キーになります)。

コレクションテーブル(target-id)に書き込みキーを持つことで問題が解決します。

ここに画像の説明を入力

于 2013-10-17T08:39:56.073 に答える