SQL/PHP:表设计问题
我有两张桌子,一张叫“购物车”,一张叫“物品”。现在我希望cart能够存储“项目”和数量的列表。因此,我创建了另一个表“cart_items”,它有一个用于模板id、项目id和数量的字段SQL/PHP:表设计问题,php,sql,Php,Sql,我有两张桌子,一张叫“购物车”,一张叫“物品”。现在我希望cart能够存储“项目”和数量的列表。因此,我创建了另一个表“cart_items”,它有一个用于模板id、项目id和数量的字段 这是一个很好的设计,还是应该为“购物车项目”的id添加另一个字段?还是有更好的方法一起做?当我尝试更新我的购物车时,我遇到了麻烦。我的购物车项目没有正确更新。我要做的是删除所有附加到购物车上的“购物车项目”,然后重新添加每个“购物车项目”,我忍不住认为必须有更好的方法来做到这一点。这是一个非常好的设计 在ER(
这是一个很好的设计,还是应该为“购物车项目”的id添加另一个字段?还是有更好的方法一起做?当我尝试更新我的购物车时,我遇到了麻烦。我的购物车项目没有正确更新。我要做的是删除所有附加到购物车上的“购物车项目”,然后重新添加每个“购物车项目”,我忍不住认为必须有更好的方法来做到这一点。这是一个非常好的设计 在ER(实体关系)术语中,物品和购物车之间存在多对多关系。我的意思是,一个项目可以出现在许多不同的购物车中,一个购物车可以包含许多不同的项目。在此上下文中,“多”表示“可以是多个的变量数” 您的cart_items表就是所谓的联接表,您需要它来建模多对多关系。添加一个quantity字段也很有意义,就像将它放在购物车项目上一样 对于关键点,您有两种选择:
两种选择都是有效的。就我个人而言,我更喜欢(2)。您还应该在(商品id、购物车id)上有一个唯一的索引。这是一个非常好的设计 在ER(实体关系)术语中,物品和购物车之间存在多对多关系。我的意思是,一个项目可以出现在许多不同的购物车中,一个购物车可以包含许多不同的项目。在此上下文中,“多”表示“可以是多个的变量数” 您的cart_items表就是所谓的联接表,您需要它来建模多对多关系。添加一个quantity字段也很有意义,就像将它放在购物车项目上一样 对于关键点,您有两种选择:
两种选择都是有效的。就我个人而言,我更喜欢(2)。您也应该在(商品id、购物车id)上有一个唯一的索引。我不确定您的表格会是什么样子,但下面的内容将是一个好的开始
每个购物车都有一个唯一的ID,每个商品都存储在自己的行中。通过这种方式,您可以一次添加或删除一个项目,同时保持链接,还可以同时从一个购物车中选择所有项目。我不确定您的表格会是什么样子,但下面的内容将是一个很好的开始
每个购物车都有一个唯一的ID,每个商品都存储在自己的行中。通过这种方式,您可以一次添加或删除一个项目,同时保持链接,还可以同时从一个购物车中选择所有项目。我给您的一个指针是,不直接将购物车链接到项目,而是将项目的所有相关信息复制到另一个表中,可能是购物车项目,并将其链接到购物车。这是很有用的,这样您就可以维护随时间添加到购物车中的内容。除非这些只是一次性购物车,您只需要一次会话,否则您希望能够准确记录该人在该时间点放入购物车的内容,并且当有人决定更改某个项目时,不会更改购物车数据,或者在删除项目时让项目消失。我给您的一个指针不是直接将购物车链接到项目,而是将项目中的所有相关信息复制到另一个表中,可能是购物车项目,并将其链接到购物车。这是很有用的,这样您就可以维护随时间添加到购物车中的内容。除非这些只是一次性购物车,您只需要一次会话,否则您希望能够准确记录该人在该时间点放入购物车的内容,并且当有人决定更改某个项目时,不会更改购物车数据,或者在删除项目时让该项目消失。如前所述,您所做的操作是正确的。 唯一缺少的是在数据库中使用DELETE CASCADE和
这样,当您在购物车中删除一行时,它也将在购物车项目中删除该行。如前所述,您所做的操作是正确的。 唯一缺少的是在数据库中使用DELETE CASCADE和
这样,当您在购物车中删除一行时,它也会在购物车项目中删除该行。本教程可能会有所帮助。也许本教程能有所帮助。
Items
+-- ID --+-- Description --+-- Etc --+
| 1| Good item here | Buy one.|
| 2| Another item | somethin|
Cart
+-- Cart ID --+-- Item ID --+-- Amt --+
| 1| 1| 4|
| 1| 2| 3|