一对一的关系或使用相同的表?

时间:2012-11-22 10:35:00

标签: mysql database relational-database one-to-one

我创建了以下表格:

动漫(id,title,date),漫画(id,title,date),TVSeries(id,title,season,episode,date)

其中一些人已经拥有导演,流派,文章等的外键(一对多或多对多关系)。

现在我想再创建两个表评论(id,评级,日期)和帖子(id,thumbid,articleid,reviewid)。 评论是关于一个动漫和/或漫画TVSerie,反之亦然,但评论的属性可能在多个表中。关于帖子也一样。

这是单独表中一对一关系的典型示例,还是更有效地向现有表添加更多属性? 所以更多的表和关系或更少的表更多列?

谢谢你,我希望我的问题不是那么愚蠢,但我有点困惑。

2 个答案:

答案 0 :(得分:2)

在我看来,最好避免一对一关系的外键关系。它最适合一对多的关系。

答案 1 :(得分:1)

我不确定您的要求是什么,但选择如下:

  1. 评论有2列,可以是适用表的外键,也可以是NULL。当单一评论可以同时进行时,这非常适用。

  2. 有一个ReviewsComics和ReviewsAnime表。然后,您将拥有每个表中的评论的所有字段(并且没有评论表)。

  3. 另一种选择(2)是将它们与评论表一起使用,那么这两个表只有2个字段,分别是评论和漫画/动漫的外键(因此评论和漫画之间没有直接链接) /动画)。

  4. 有一个基本表格,Anime和漫画与1对1相关联,并且评论链接到该表格。

  5. (编辑)如果Anime / Comics的所有字段都相同(或类似),您可以将它们合并到一个表中并添加一个类型字段,表示Anime / Comics,然后是问题消失了。这类似于基表选项。

  6. 编辑:2个评论表可能会提供最佳表现(除非你想经常选择所有评论),但如果有适当的指数,表现不应该是上述任何一个问题。