gpt4 book ai didi

mysql - SQL 查询 - 多对一关系的两个表(规范化问题)

转载 作者:行者123 更新时间:2023-11-29 02:30:58 25 4
gpt4 key购买 nike

我有这个示例表:

table ORDERS

client orderno cant1 code1 notes1 cant2 code2 notes2 cant[i] code[i] [...]
--------------------------------------------------------------------------------------
1 1 3 AA01 Test 4 BB01 Testing
2 2 10 XX05 Test



table PRODUCTS

code prod price
---------------------
AA01 Engine 100
BB01 Wheel 50



table CLIENTS

client name address telephone
-----------------------------------------
1 Maxwell 24 1st st 0987654321
2 Hammer 77 main st 1234567890

我需要将它们关联起来以获得每个产品线的数量、产品名称和价格(它们是 30 cant[i]、code[i] 和 notes[i])和客户信息(名称, 地址等)

我发现了这个案例,但我不明白如何将它应用到我的案例中:SQL query two tables with relation one-to-many

我希望它不会太复杂。

提前致谢!

编辑

感谢 ElectricLlama,我意识到这里的问题是存储订单的表。根据他的回答,数据库的规范化将改进我获取信息的方式。

对于任何对此解决方案感兴趣的人,我发现了这个很棒的网站:http://www.devshed.com/c/a/MySQL/An-Introduction-to-Database-Normalization/

这个 SO 答案清除了一切! super 清晰易懂! https://stackoverflow.com/a/1258776/888292

最佳答案

查看您的链接中的内容 - 是的,它看起来像是很多废话,但这可能是获得您想要的内容的唯一方法。

问题是您的表格未规范化。具体来说,你不应该有名为 code1 code2 code3 code4 ... code30 的字段

这种设计有很多缺陷,包括当客户有 31 种产品时会发生什么情况?

在规范化数据库中,您将拥有一个包含一组细则、代码和注释的表格,并且每个产品一行。

但我猜你无法将其正常化。

非常棒,您自己提出了答案,现在您也亲 body 验了不规范化数据库的后果。

可能想要考虑的是创建一个 View 来为您规范化。它会引入性能问题,但会向您介绍 View ,并让您有机会了解针对规范化表的解决方案。

关于mysql - SQL 查询 - 多对一关系的两个表(规范化问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13242840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com