有趣的数据库架构场景

时间:2010-11-17 22:02:48

标签: mysql database-design

我目前正在推出自定义订单处理系统。我目前的结构非常标准,发票,采购订单和物品都保存在单独的表格中。项目通过跟踪表单的ID知道它们所处的形式,但表单不知道它们中的项目(在数据库中)。这一切都很好,直到我对混合添加了新的要求:库存订单。

库存订单的工作方式是,有时客户下订单的单位多于库存单位,因此我们希望与供应商订购足够的单位以完成订单并补充库存。但是,我们经常需要建立这些订单,因为最低价格非常高,因此一个库存订单通常包含多个客户订单(有时是同一个商品)加上几个没有连接到订单的订单项而且只是用于放养目的。

这给我当前的架构带来了一个问题,因为我现在需要跟踪库存订单中的内容,因为供应商通常会发送部分订单,物品已经分配,​​哪些收货物品是库存。

我最初的想法是创建一个主要模仿项目表的新数据库表,但有点像聚合(但不是计算)的表,它只跟踪项目及其相应的元数据(收到的单位数,只有库存订单的库存等数量。如果某些东西从其中一个变化(如数量),我将不得不保持两个表同步。

这是否过度,可能还有更好的方法吗?数据库架构绝对不是我的强项,所以我希望有人能告诉我这是一种可行的方法,或者有一种更好,更正确的方法。

非常感谢!

对于它的价值,我正在使用的是:VB,.NET 4.0,MySQL 5.0

另外,如果您想澄清任何事情,请询问!我将密切关注这个问题。

4 个答案:

答案 0 :(得分:2)

访问databaseanswers.com。导航到“免费数据模型”,然后查找“库存管理”。你应该找到一些很好的例子。

答案 1 :(得分:0)

你没有提到它们,但你需要表格: 供应商,订单和库存

另外,你提到的基础表'知道' - 这些可能需要多个表格的关联样式,告诉你哪些项目在哪个订单上,以及哪些供应商提供哪些项目,交货时间,成本等等。 / p>

查看您的实际架构会很有帮助。

答案 2 :(得分:0)

我使用单个Documents表,带有DocType字段。客户文件(订单,发票,ProForma,交货,信用票据)与供应商文件(采购订单,接收)混合 这使得计算客户端延期交货,供应商延期交货等非常容易...... 我只是有点不高兴,因为我有不同的供应商和客户表,因此DOCUMENTS表有一个SupplierId字段和一个ClientId字段,这有点不好。如果我不得不重做它,我可能会考虑一个包含客户和供应商的公司表。

我使用的是自动增量的PK(DocId),以及与XYY00000类似的唯一键(DocNum) x = doc类型
YY =年份 00000 =增量 这是因为可以保存文档但仅在验证时收到DocNum。

要跟踪延期交货(供应商或客户),您需要在DocDetails表中有一个分组字段,这样如果您有一个订单行12345,则将该链接字段复制到与其相关的每个明细行(发票,交货)。
希望我不要混淆。事情进展顺利,经过3年和超过50,000个文档。

答案 3 :(得分:0)

这种方法还意味着您将拥有一个为订单分配的库存 - 没有单独的物品跟踪它有点难以管理。考虑一下,客户A订单

3 pink widgets
1 blue widget

但是你只有1个粉红色小部件库存 - 你订购3个粉红色小部件,1个蓝色。

客户B订单

2 pink widgets

但你仍然只有1个库存 - 你订购另一个粉红色的小部件

3个粉红色小部件从第一个供应商订单到达。你会怎样做?您可以为客户A的订单保留所有订单,并等待蓝色和红色小部件到达,或者您可以履行客户B的订单。

如果粉红色小部件的提前期为3天,而蓝色小部件的提前期为3周,该怎么办?您是否向客户发送了部分订单?您对持有的股票数量有限制吗?

仅仅保留一份新的延期交货表是不够的。

这些东西很快就变得吓人了。你当然需要花更多的时间来分析问题。

相关问题