gpt4 book ai didi

php - MYSQL 建模关系 : Design and UPDATE/DELETE

转载 作者:行者123 更新时间:2023-11-29 02:33:17 26 4
gpt4 key购买 nike

我正在尝试完全理解关系,并且已经学习了很多教程。我仍然在一些事情上徘徊(使用 MySQLWORKBENCH): enter image description here1.每个用户都可以上传一个产品2. 每个产品可以有多个类别、出价、评级等3.每个用户可以有多个电话号码(还有更多,但这是基本设置)

这是正确的吗?:1 - 我使用了 1:n 关系,因为每个用户都可以上传多个产品。2 和 3。我使用了 n:m 关系,因为可以有多个产品具有多个类别、出价、评级等。

删除/更新:我在任何有外键的地方都使用了 ON UPDATE CASCADE 和 ON DELETE CASCADE ……即“product”、“category_tags_has_products”、“bid_price_has_product”、“phone_has_user”。

我试图删除这样的产品 (php):mysql_query("DELETE FROM product WHERE id='$id'");我收到 1054 错误,这是一个外键错误。这里的最佳实践是什么?据我了解,我不需要在父表以外的任何地方进行删除?

谢谢!

最佳答案

您有很多标识关系,这意味着外键构成第二个表上主键的一部分。在大多数情况下这不是必需的,只有在链接表等情况下才真正有用。

为此,我会将 user->product 链接更改为非标识链接,这将使 user_id 成为外键而不是主键的一部分。在 Workbench 中,1:n 非标识关系的快捷方式是键“2”(其中“4”表示标识)。这反过来应该从产品链接到的表中删除 user_id 字段。

当您删除一个产品时,它应该级联到它链接到的 3 个链接表。目前,它可能正在尝试从用户中删除,这也取决于 FK 的设置方式。以下应该级联删除(假设删除是永久性的并且您只想清除所有链接的记录)

DELETE FROM product -> 从任何具有 product_id 的表中删除DELETE FROM user -> 从

中具有 user_id 的任何表中删除

这同样适用于电话、评级、bid_price、category_tags。

我希望这是否有用,如果您需要任何进一步的指示,请随时大声喊:)

关于php - MYSQL 建模关系 : Design and UPDATE/DELETE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378688/

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