多对多关系中的外键

时间:2016-08-23 18:14:22

标签: mysql sql database many-to-many data-modeling

以下图片是我正在设计的软件测试结果数据库的一部分: design

我的问题与表fault有关。我是否需要与表configuration中的表fault相关的外键,以便进行查询,例如,返回与所有三个表相关的数据{{{ 1}}与configuration相关,softwarefaultsoftware相关。或者应该以不同的方式设计关系?

如果表之间存在一对多的关系,MySQL Workbench会自动在所需的表中创建外键。但是当我使用多对多关系时,这就是所有MySQL Workbench自动创建的。

提前谢谢。

编辑:

我通过phpmyadmin手动添加了一些数据。但是,我正在尝试执行此查询:

configuration

我收到错误:

1066 - 不唯一的表/别名:'software'

我是否在正确的轨道上?

EDIT2:

实际上我开始质疑我的设计。我不认为我能够将特定故障与特定配置相关联,因为配置和故障之间没有直接关系。我应该以不同的方式设计吗?

2 个答案:

答案 0 :(得分:1)

NO!它会打破3NF。如果您不知道它是什么和/或为什么您可能需要更多地研究ER(实体 - 关系模型)中的关系。这是一个我无法在此解释的庞大复杂话题。但是互联网上有很多文档。

答案 1 :(得分:1)

要修复错误,请尝试以下操作: 您正在加入表软件两次,但没有加入故障表。

{{1}}

我假设您已经使用LEFT JOIN来获取列出的软件,即使这些软件没有配置(或)错误(如果不是这样,您可以用INNER JOIN替换)