购物商店的基础知识及其架构

7
我打算制作一个通用的购物商店网站,类似于阿里巴巴的缩小版,不同的企业可以在自己的版本的购物商店中列出其产品。在开始项目之前,我想确保自己要做什么。我想在这里问一件事:
1)购物商店是否跟踪所有库存,包括产品的原始成本和销售价格,还是只有后者?如果它跟踪两者,那么如果特定产品在不同时间以不同价格输入库存,例如100件Product1在date1花费100美元,并定价为150美元,然后在date2再次添加到库存中,这次花费120美元并像以前一样定价为150美元,那么我将如何在数据库中存储该信息并在这种情况下进行利润和销售成本(COGS)的计算。我对FIFO LIFO库存管理略有了解,但我不确定它是否会成为购物商店的一部分,或者这不是购物商店跟踪原始成本与利润的责任。如果是这样,那么数据库的架构应该如何才能满足这些要求。
2)在典型的购物商店中,单个产品具有不同的属性,购物商店知道具有特定属性的产品的当前数量。例如,productId = 1的T恤可能有两种不同的颜色,库存中有10件蓝色T恤和5件黑色T恤,productId = 1和attributeId = 1和2。我将如何跟踪具有不同属性的相同产品的库存。我的意思是数据库中只有一个Product表,架构将如何适应这些要求,即库存知道具有相同productId的不同属性产品的数量。
我在发布问题之前进行了大量搜索。我发现了一些购物商店的数据库架构,但我不确定它们如何考虑我的上述两点来管理库存。请看一下它,并告诉我路线图会是什么样子。最后,我想制作自己的购物商店,并出于学习目的以及其他原因不使用预先构建的购物商店。我将使用ASP.Net MVC和sqlserver。
如果我使用图片中显示的某种较小版本的架构,我将如何跟踪和维护库存。他们在哪里指定产品的数量,因为Product表没有它。此外,我如何维护具有不同属性的相同产品的数量、成本和价格。
谢谢。
1个回答

9

1) 库存始终反映当前价格。应该有一个购物车来保存正在进行的订单 - 以及一个单独的订单项目表来保存特定订单的商品。订单项目表中的价格不会更改,因为它与特定订单相关联。所以您拥有当前价格的当前库存以及记录订单和销售物品的记录。

相比之下,购物车中的价格应该更改,因为它们应该反映产品的当前定价。当他们完成交易时,产品的价格被冻结,而不是当他们将物品放入购物车时。

同样地,当有人将某物品放入购物车时,库存不会减少 - 只有在交易完成并实际出售物品时才会减少库存。

2) 在更广泛的商业世界中,每种“可购买”的产品都具有唯一的UPC代码或EAN代码。商家可能有自己用于库存的SKU。电子商务系统可能针对每种产品都有自己的ID。这样看待 - 如果产品有单独的库存,则必须有单独的ID来跟踪该库存。如果一件衬衫有3种尺码和2种颜色,则相当于有6个不同的产品库存放在货架上。

即使衬衫只有一个网页 - 商家也必须知道每种特定尺码和颜色的库存数量。因此,其中一种描述称为父产品-子产品。父产品是“衬衫” - 描述,图片,页面,评论等等。子产品是实际可购买的物品。亚马逊卖家中心对此有很好的描述。

我的建议是创建您的系统,以便购物车不控制价格或库存。应该有一个产品数据库,它是最新的,并且您的电子商务系统不断进行检查。您将产品ID存储在购物车中,然后在任何购物车刷新和结帐时 - 您都从产品表中获取价格并检查库存。相比之下,从产品页面传递价格到购物车并永远不再检查它的方法则不太合适。


1
感谢您详细的回复。我理解第二点。然而,在我的第一点中,我指的是其他事情。我的意思是,如果在某个时间点添加了x数量的Product1,价格为$10,然后在以后的某个时间点由系统管理员添加了相同数量的Product1,价格为$20,这次不是由客户购买,而是由店主以不同的成本价格但相同的销售价格在不同的时间添加了相同的库存项目,那么我该如何处理? - zeppelin
2
这是一个很棒的问题,可以看一下已经建立的零售销售点软件。另外一种思考方式是——无论是什么在提供数据,真正计算成本的方式是通过会计软件完成的。我相信有些系统可以生成报告,但对于大多数公司来说,这些数据仍然进入独立的会计软件,作为运营业务的最终解决方案。 - cartalot
电子商务网站的“产品”表是否应该有两列:“可用性”和“数量”,以便当用户点击结账时,可用性会减少,当订单完成时,数量会减少?还是只需要“数量”一列? - vikrant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接