gpt4 book ai didi

php - 如果用户在处理订单之前编辑了购物车,则更新记录,或者删除并重新插入

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

我有一个名为 orders_products 的表,其中包含与每个订单关联的所有产品。现在,如果客户决定编辑数量、属性,或者只是删除产品,那么在数据库中处理此更改的最简单方法是什么?

订单产品

id  |  quantity  |  fk_products_id  |  attributes  |  price  |  fk_orders_nr

fk_products_id 指的是我们产品表中的实际产品 ID
attributes 是一个逗号分隔的字符串,其 id 引用我们的属性表(属性可以是每个产品的角度、长度、直径等。如 45 度,左角度,长度 20 厘米,43 毫米直径)。
fk_orders_nr 是产品所属的实际订单。

因为我有一个在客户端处理这部分的。根据订单 ID (fk_orders_nr) 来删除所有关联产品,然后根据存储在订单中的内容重新插入和更新整个集合会更容易吗?类?
或者有没有一种巧妙的方法可以直接在 MySQL 中处理这个问题?

我对重复 key 更新忽略进行了一些研究,但它们似乎不符合我的需求..

我需要检查实际产品 ID 是否存在,然后决定插入新产品或更新现有产品(可能是数量和/或可选属性),如果不在产品中,产品也可能会被删除不再从 class 中列出。

写这个问题的时候。我认为删除整个集合并重新插入它可能是最简单的方法。

最佳答案

这个数据库看起来设计得很糟糕。首先,我假设 fk_products_id 您指的是 product_id。您不需要在其名称中指定列是外键。

其次,我建议您保持所有列的原子性,例如,没有多值。保留逗号分隔列表的 attributes 列将来会让您头疼,而且它还会破坏 FIRST normal form (最基本的)。

第三,您不需要(尽管有时可能有用)id 作为连接表中的主键。您可以仅使用 fk_products_idfk_orders_nr 键中的复合主键。

When writing this question. I think deleting the whole set, and reinsert it, might be the easiest way.

是的,通常都是这样做的。

但我坚持您忽略当前遇到的所有问题,并从头开始重新设计您的数据库,特别注意 normalization 。这些是基本数据库设计标准,它们的存在是有原因的。希望您在了解原因时不会为时已晚。

关于php - 如果用户在处理订单之前编辑了购物车,则更新记录,或者删除并重新插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26231633/

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