首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于订单表的电子商务数据库设计

基于订单表的电子商务数据库设计
EN

Stack Overflow用户
提问于 2013-06-19 22:49:42
回答 1查看 6.3K关注 0票数 1

我正在设计一个电子商务应用程序的模式,其中我将有3个表,即订单,产品,客户。

所以我们是否应该直接将customer_id和product_id存储在Orders表中。

这样做的限制是,当产品或客户更新其属性(即产品价格或客户名称)时,orders表不会反映它们。

对于Ex:客户以10美元的价格购买了产品,但后来产品价格更新为20美元。因此,现在当我们通过产品id引用此订单时,我们将获得结果,因为它是以20美元而不是10美元的价格购买的。

解决方案1:

一种解决方案是每当发生更新时向products表中插入一个新行,并对该产品执行软删除,以便可以从orders表中引用它。

解决方案2:

将大部分详细信息存储在产品中,并将客户详细信息存储在订单表中。

解决方案3:

每当对客户和产品表进行更新时,创建这些表的临时表。

我非常愿意接受任何其他的建议。

EN

回答 1

Stack Overflow用户

发布于 2013-06-19 23:03:48

除了最简单的解决方案之外,您似乎还缺少一个orderLineItem表,其中只有一个产品/订单。

现在,也就是说,您可以通过几种方式来创建products表。

假设价格是products表中您想要更改的惟一变量,那么您可以有一个单独的pricePoints表,该表将存储任何商品在任何给定时间的价格。然后,您将在orders表中使用该表中的ID,并使用它从products表中访问productID。一种更低效的存储方法(但检索速度更快)是在orders表中同时存储productId和pricePointId。

您也可以通过简单地将价格支付金额存储在orders表中来完成此操作。这使您可以更灵活地添加折扣和定价规则。但是,如果您这样做,您确实需要关注审计价格。为什么在这个时候对这条线路收取这个价格将是一个常见的问题。

您需要知道客户在任何时候为产品支付了多少钱。如果客户今天购买了订单,那么知道他们会为订单支付多少钱并不那么重要。

客户是一个略有不同的问题。customer表中的某些信息是暂时的。其中一些必须为订单进行修复。假设客户有姓名、地址、帐单地址和送货地址。在订购时,发货地址和账单地址必须是绝对固定的。您不会想在三周后返回并发现送货地址已更改。但是,出于同样的原因,例如,如果客户更改了他们的婚前姓名,您可能希望更新名称。

现在,话虽如此,我们不会为您设计模式。对于如何设计一个简单的电子商务数据库,有很多很好的资源。

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

https://stackoverflow.com/questions/17194408

复制
相关文章

相似问题

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