7

我创建了以下表格:

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

其中一些已经具有导演、流派、文章等的外键(用于一对多或多对多关系)。

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

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

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

4

2 回答 2

2

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

于 2012-11-22T10:37:29.920 回答
1

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

  1. 有评论有 2 列,或者是适用表的外键,可以为 NULL。这确实适用于单个评论可以同时涉及两者的情况。

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

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

  4. 有一个基表,动漫和漫画链接到 1 对 1,并有评论链接到该表。

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

编辑: 2 个评论表可能会提供最佳性能(除非您经常要选择其中任何一个的所有评论),但使用适当的索引,性能不应该成为上述任何一个问题。

于 2012-11-22T10:52:48.517 回答