SQL/PHP:表设计问题

SQL/PHP:表设计问题,php,sql,Php,Sql,我有两张桌子,一张叫“购物车”,一张叫“物品”。现在我希望cart能够存储“项目”和数量的列表。因此,我创建了另一个表“cart_items”,它有一个用于模板id、项目id和数量的字段 这是一个很好的设计,还是应该为“购物车项目”的id添加另一个字段?还是有更好的方法一起做?当我尝试更新我的购物车时,我遇到了麻烦。我的购物车项目没有正确更新。我要做的是删除所有附加到购物车上的“购物车项目”,然后重新添加每个“购物车项目”,我忍不住认为必须有更好的方法来做到这一点。这是一个非常好的设计 在ER(

我有两张桌子,一张叫“购物车”,一张叫“物品”。现在我希望cart能够存储“项目”和数量的列表。因此,我创建了另一个表“cart_items”,它有一个用于模板id、项目id和数量的字段


这是一个很好的设计,还是应该为“购物车项目”的id添加另一个字段?还是有更好的方法一起做?当我尝试更新我的购物车时,我遇到了麻烦。我的购物车项目没有正确更新。我要做的是删除所有附加到购物车上的“购物车项目”,然后重新添加每个“购物车项目”,我忍不住认为必须有更好的方法来做到这一点。

这是一个非常好的设计

在ER(实体关系)术语中,物品和购物车之间存在多对多关系。我的意思是,一个项目可以出现在许多不同的购物车中,一个购物车可以包含许多不同的项目。在此上下文中,“多”表示“可以是多个的变量数”

您的cart_items表就是所谓的联接表,您需要它来建模多对多关系。添加一个quantity字段也很有意义,就像将它放在购物车项目上一样

对于关键点,您有两种选择:

  • 使(购物车id、商品id)成为主键。这称为复合主键;或
  • 创建一个名为id的自动递增字段。如果您这样做,则使(购物车id、商品id)成为唯一索引以强制唯一性

  • 两种选择都是有效的。就我个人而言,我更喜欢(2)。您还应该在(商品id、购物车id)上有一个唯一的索引。

    这是一个非常好的设计

    在ER(实体关系)术语中,物品和购物车之间存在多对多关系。我的意思是,一个项目可以出现在许多不同的购物车中,一个购物车可以包含许多不同的项目。在此上下文中,“多”表示“可以是多个的变量数”

    您的cart_items表就是所谓的联接表,您需要它来建模多对多关系。添加一个quantity字段也很有意义,就像将它放在购物车项目上一样

    对于关键点,您有两种选择:

  • 使(购物车id、商品id)成为主键。这称为复合主键;或
  • 创建一个名为id的自动递增字段。如果您这样做,则使(购物车id、商品id)成为唯一索引以强制唯一性

  • 两种选择都是有效的。就我个人而言,我更喜欢(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|