好的就是这个场景。我有像MOVIES,BOOKS,TV_SHOWS这样的表格。所有这些表都可以有多种类型,任何类型都可以有来自任何表的多个文件。所以我面临的问题是:
在这种情况下,我将MOVIE,TV_SHOWS和BOOKS TABLES称为类别。
我应该为每张桌子制作一个MOVIES GENRE,BOOKS GENRE和TV_SHOWS GENRE表吗?或者是否有某种方法可以将所有表链接到多个样式关系中的单个GENRE表,而不会牺牲GenreID IN GENRE表中的单一性?
现在我已经完成了其他涉及此问题的问题,他们都有一个响亮的NO。显然,没有数据库可以容纳这种多种到多种(多种)关系的风格。但我试图找出是否有替代方案,或者我应该制作多个GENRE表?
我能想到的唯一可行的方法是在每个类别表中都有一个外来的GenreID列。然后为每个类别表与GENRE表建立多对多的关系。所有类别表都将使用名为CATEGORY_GENRE的连接表进行链接,该连接表具有由所有类别表中的外键GenreID列和GENRE表中的GenreID主键组成的复合主键。唯一的问题是,我不认为多对多关系中的一方可以与外键相关联,双方的关系必须由他们的主要关联。
如果类别表位于一对多关系的多方面,那么整个事情会更容易,但不幸的是,有时电影或书籍有多种类型,如幻想,科幻小说等。
不幸的是,我认为这样做的唯一方法就是制作多个GENRE表,但在我继续这样做之前我只想要一些意见。
答案 0 :(得分:2)
您应该考虑使用多态关联,特别是您的各种“媒体”(books
,tv_shows
和movies
)与您的{之间的联接表{1}}表。此genres
联接表需要同时描述media_genres
,genre_id
以及media_id
(例如“book”,“tv_show”,“movie”)。