Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 一对一关系还是使用同一个表?_Mysql_Database_Relational Database_One To One - Fatal编程技术网

Mysql 一对一关系还是使用同一个表?

Mysql 一对一关系还是使用同一个表?,mysql,database,relational-database,one-to-one,Mysql,Database,Relational Database,One To One,我创建了以下表格: 动漫(id,标题,日期),漫画(id,标题,日期),电视系列(id,标题,季节,插曲,日期) 其中一些已经有了导演、流派、文章等的外键(用于一对多或多对多关系) 现在,我想再创建两个表review(id、rating、date)和Posts(id、thumbid、articleid、reviewid)。 评论是关于一部动画和/或喜剧电视剧的,反之亦然,但评论的属性可能在多个表中。一个帖子也一样 这是单独表中一对一关系的典型示例,还是向现有表中添加更多属性更有效? 那么更多的表

我创建了以下表格:

动漫(id,标题,日期),漫画(id,标题,日期),电视系列(id,标题,季节,插曲,日期)

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

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

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


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

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

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

  • Have Reviews有两列,要么是适用表的外键,要么可以为NULL。这真的是为了当一个单一的审查可以是两者兼而有之

  • 有一张评论漫画和评论动漫的桌子。然后,在每个表中都有来自评论的所有字段(并且没有评论表)

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

  • 有一个基础表,动画和漫画与之一一对应,而评论链接则与之对应

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


  • 编辑:这两个评论表可能会提供最好的性能(除非您经常要为其中一个选择所有评论),但如果有适当的索引,性能不应该是上述任何一个的问题。

    那么您建议在现有表中添加评论属性吗?例如,漫画将像(id,标题,日期,评级,评论日期)和电视系列(id,标题,季节,插曲,日期,评级,评论日期)等等..是的。。!与多个表相比,它还提高了性能。你创建的表格越多,你需要写的连接就越多。我想我很好地证明了这一点。如果你同意我的答案,请投赞成票。我不知道我是否同意,因为正如我所说,我很困惑。嗯,这是一个个人项目,所以它将不断升级,在开始编程之前,我希望有更有效和可扩展的数据库,我可以创建。因为例如在评论和/或帖子或任何其他表格中,我可能会在将来添加更多属性。所以一个14-15列的表格不会太重吗?谢谢你的回答。如果是这么少的一排,那就没关系了,随便选一排吧。多张桌子也可以。没问题,迈克。。如果多个表是处理较少数据量的较小表,则可以使用这些表,而与列无关。但是如果它处理大量数据,最好避免使用它。但是如果使用单表,那么编写查询就非常简单了。想想看,让我拿起一支铅笔和一张纸,试着理解你对我的解释。谢谢你。你是说还有两列,对吗?否则就没有意义了。第二。这就像:向现有表添加更多属性选项,对吗?制作动画表格,插入评论、帖子等属性的列。这更像是多对多关系。这在这种情况下有用吗?第四。为什么要这样做?我不需要动画片和电视连续剧有直接关系,*(我想)。@fat_mike(1)是的,还有两个专栏。(2) 将有以下内容:评论漫画,评论动漫,漫画,动漫。(3) 与2相同,但也有评论(和ReviewComics、ReviewAnime仅具有链接评论和漫画/动画表的字段)。(4) 允许您将评论指向电视剧和漫画,动画也指向那里,这样您就不必担心直接链接评论和漫画/动画(因此在评论、漫画和动画中有电视剧FKs)。它们都是可行的,每个都有一些小的优点和缺点。@fat_mike如果你计划有多达15种不同的东西可以回顾(正如你在评论中提到的),我肯定会从我的答案中提出建议。它可能是解决方案中速度最慢的,但它是最干净的(没有空数据,也只有很少的表),而且通过适当的索引,性能的影响其实不需要太多担心。但是,如果所有字段都是相同的,则可以使用基本表并向基本表添加一个类型字段,表示动画/漫画(As(5)(已添加)).5选项似乎是最好的,因为字段几乎相同,但许多版本在漫画/动画中都有相同的标题,因此类型字段必须有多个条目,并用逗号分隔,这通常是不正确的。它是?