おそらくこれは以前に尋ねられましたが、良い答えが見つかりませんでした。異種エンティティとの1対多数の関係にあるマスターテーブルがあります。1つのマスター - 子関係にある異種タイプのアイテム
私はオーディオ再生リスト(tb_playlist)のマスターテーブルを持っています。プレイリストには、番組エピソード(tb_episode)、曲(tb_songs)または音声レポート(tb_reportae)が含まれている可能性があります。明らかに、以下のように交互にNULL列であるかもしれない、データの整合性を強制しません
**tb_playlist**
(
playlist_id,
audioitem_id [can be episode_id, song_id, reportage_id],
audioitem_type [can be: episode, song, or reportage]
)
上記溶液:
**tb_playlist**
(
playlist_id,
episode_id,
song_id,
reportage_id
)
私はデータの整合性のために最善ではないことを知っている簡単な設計は、このようなものです
ですが、後者はオーディオアイテムタイプを拡張するのに悪いです。
質問は、この問題を解決する最良の方法は何ですか?
ありがとうございます!
私はStackOverflowのために新しい午前として画像をアップロードすることはできませんよ。あなたの理解は正しいです。プレイリストは複数のアイテムを持つことができ、各アイテムは異なるテーブル(ソング、エピソード、レポート)からの外部キーになります。 3つのテーブルの各テーブルは、独自の属性を持つ別個のエンティティです。 – Lamar
私はあなたの記事から正解を得ることができなかったのですが、恐れています。私は、それぞれの解決策について賛否両論があることを知っています。私は死ぬことなくすべてのテーブルを保持したい(私は世界中のすべてを殺していた)。だから私の質問:私はitem_typeとitem_idのための単一の列のために行く必要がありますか、またはnullable外国キーに行く必要があります..または任意の殺害を含まないさらに良いソリューションです... – Lamar