首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL/PHP:表设计问题

SQL/PHP:表设计问题
EN

Stack Overflow用户
提问于 2009-07-03 23:58:45
回答 4查看 470关注 0票数 0

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

这是一个很好的设计,还是应该为"cart_item“的id添加另一个字段?还是有更好的方法来共同完成这一切?我只是遇到了麻烦,当我试图更新我的手推车,我的购物车项目没有正确更新。我要做的是删除所有附加在购物车上的"cart_items“,然后重新添加每个"cart_item”,我不得不认为必须有更好的方法来做到这一点。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-04 00:08:11

设计得很好。

在ER (实体关系)术语中,物品和手推车之间存在着多到多的关系.我的意思是,一个项目可以出现在许多不同的推车和一个购物车可以包含许多不同的项目。这个上下文中的“许多”意味着“一个可以超过一个的可变数字”。

您的cart_items表就是所谓的连接表,您需要它来建模多到多的关系。添加一个quantity字段也是有意义的,就像将它放在cart_items上一样。

当涉及到关键时,您有两个选择:

  1. 使(cart_id,item_id)成为主键。这称为复合主键;或
  2. 创建一个名为id的自动增量字段。如果这样做,则使(cart_id、item_id)成为执行唯一性的唯一索引。

这两种选择都是有效的。就个人而言,我更喜欢(2)。您还应该有一个唯一的索引(item_id,cart_id)。

票数 2
EN

Stack Overflow用户

发布于 2009-07-04 00:11:42

我不知道你的桌子会是什么样子,但下面这样的东西会是个好的开始。

项目+-- ID --+--描述

每个购物车都有一个唯一的ID,每个项目都存储在自己的行中。通过这种方式,您可以一次添加或删除一个项目,同时保持它们的链接,还可以同时从一个购物车中选择所有项目。

票数 1
EN

Stack Overflow用户

发布于 2009-07-04 00:25:49

我给您的一个指针是,不是直接将手推车链接到项,而是将项目中的所有相关信息复制到另一个表中,可能是cart_Items,并将其链接到购物车。这很有用,这样您就可以维护随时间增加到购物车中的内容。除非这些只是快速丢弃的推车,而您只需要一个会话,否则您希望能够准确地了解那个人在那个时候放入购物车中的内容,并且在某人决定更改项目的某些内容时,不会让他们的购物车数据发生更改,或者在项目被删除时使项目消失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1081162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档