我在数据库设计方面没有太多经验,我在尝试解决这个问题时遇到了麻烦。到目前为止,我花了很多时间没什么好事。 因此,我们的想法是能够为主表中的多个字段分配多个值。
这是一张图片,可以提供您的想法。
1)如何在保持数据完整性的同时进行设计? 2)我必须使用两个中间表吗? 3)如果是这样,我如何在同一个查询中查询两个中间表?这有什么意义吗?
任何能帮助我指明正确方向的建议都会非常感激,并且可以让我免于拉扯我的头发。过早地去秃头:)
编辑: 像这样的东西,但我有一种感觉,我的设计在这里是错误的。 我需要显示ub_properties中的所有字段以及来自oub_level_two和ub_utility的所有字段。
答案 0 :(得分:1)
1)如何在保持数据完整性的同时进行设计?
2)我是否必须使用两个中间表?
是的,你需要两个中间表。如果要在属性行中允许相同的值和选项,那么您的设计就很好。如果您不想允许,那么请删除中间表中的id
列,并将这两个字段作为主键。
3)如果是这样,我如何在同一个查询中查询两个中间表?这有什么意义吗?
您可以使用以下连接进行一次查询:
SELECT *
FROM ub_properties p
LEFT JOIN ub_level_two_meta lm ON lm.post_id = p.post_id
LEFT JOIN ub_level_two l ON l.id = lm.level_two_id
LEFT JOIN ub_utility_meta um ON um.post_id = p.post_id
LEFT JOIN ub_utility u ON u.id = um.utility_id
答案 1 :(得分:0)
您的问题的答案是您似乎需要五个表,三个实体表和两个联结表:
然后,您可以在使用连接的查询中使用这些。