可能之前已经提出过这个问题,但是找不到一个好的答案:我有一个可以与异构实体建立一对多关系的主表。最好用一个例子来描述它:
我有音频播放列表的主表(tb_playlist)。播放列表可以包含节目集(tb_episode),歌曲(tb_songs)或音频报道(tb_reportae)。我所知道的直接设计不是最好的数据完整性,如下所示:
**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
)
但后者不适合扩展音频项目类型。
问题是解决这个问题的最佳方法是什么?
非常感谢!
答案 0 :(得分:0)
我认为您应该创建问题的实体关系图。我知道你有一个层次结构: PlayList 可以有很多 PlayListItems 。有三种 PlayListItems (这里是我看到的层次结构):剧集,歌曲和报道。
检查此问题以了解如何处理层次结构:What is the best database schema to support values that are only appropriate to specific rows?