【发布时间】:2016-12-30 16:35:23
【问题描述】:
下图是我正在设计的软件测试结果数据库的一部分: design
我的问题与fault 表有关。我是否需要一个与我的表 fault 中的表 configuration 相关的外键,以便进行查询,例如,将返回与所有三个表相关的数据(configuration 与software 和 fault 与两者相关:software 和 configuration)。还是应该以不同的方式设计关系?
如果表之间存在一对多关系,MySQL Workbench 会自动在需要的表中创建外键。但这都是我使用多对多关系时自动创建的 MySQL Workbench。
提前谢谢你。
编辑:
我通过 phpmyadmin 手动添加了一些数据。但是,我正在尝试执行此查询:
SELECT software_version, configuration_name, actCritical
FROM software
LEFT JOIN configuration_has_software ON software.software_id = configuration_has_software.software_id
LEFT JOIN configuration ON configuration.configuration_id = configuration_has_software.configuration_id
LEFT JOIN software_has_fault ON fault.fault_id = software_has_fault.fault_id
LEFT JOIN software ON software.software_id = software_has_fault.software_id;
我收到一个错误:
1066 - 不是唯一的表/别名:“软件”
我走对了吗?
EDIT2:
实际上我开始质疑我的设计。我认为我无法将特定故障与此设计的特定配置联系起来,因为配置和故障之间没有直接关系。我应该设计不同的吗?
【问题讨论】:
-
当你有这样的间接关系时,你在查询中使用多个连接来获取相关数据。
-
@Barmar 我又添加了一个问题,有时间请查看
-
当一个表出现在多个
FROM或JOIN子句中时,需要给它们起别名以便区分。
标签: mysql sql database many-to-many data-modeling