Mysql 有趣的数据库架构场景

Mysql 有趣的数据库架构场景,mysql,database-design,Mysql,Database Design,我目前正在开发一个定制订单处理系统。我目前的结构相当标准,发票、采购订单和项目都保存在单独的表中。项目通过跟踪表单的id知道它们在哪个表单上,但表单不知道它们(在数据库中)中有哪些项目。这一切都很好,直到我有一个新的要求添加到组合:库存订单 库存订单的运作方式是,有时客户下的订单数量超过库存数量,因此我们希望向供应商下足够数量的订单,以完成订单并补充库存。但是,我们通常必须建立这些订单,因为最低订单非常高,因此一个库存订单通常由多个客户订单(有时是针对同一项目)加上几个与订单无关的行项目组成,这

我目前正在开发一个定制订单处理系统。我目前的结构相当标准,发票、采购订单和项目都保存在单独的表中。项目通过跟踪表单的id知道它们在哪个表单上,但表单不知道它们(在数据库中)中有哪些项目。这一切都很好,直到我有一个新的要求添加到组合:库存订单

库存订单的运作方式是,有时客户下的订单数量超过库存数量,因此我们希望向供应商下足够数量的订单,以完成订单并补充库存。但是,我们通常必须建立这些订单,因为最低订单非常高,因此一个库存订单通常由多个客户订单(有时是针对同一项目)加上几个与订单无关的行项目组成,这些行项目仅用于库存目的

这给我当前的架构带来了一个问题,因为我现在需要跟踪库存订单中的内容,因为供应商通常会发送部分订单,在哪里分配了项目,以及哪些进货项目是库存的

我最初的想法是创建一个新的数据库表,该表主要模仿items表,但有点像一个聚合(但不是计算)表,它只跟踪库存订单的项目及其相应的元数据(接收的单位数、库存数量等)。如果其中一个表发生了变化(比如数量),我必须保持两个表的同步

这是不是太过分了,也许有更好的方法?数据库体系结构绝对不是我的强项,所以我希望有人能告诉我这是一种不错的方法,或者有一种更好、更正确的方法

非常感谢

值得一提的是,我使用的是:VB、.NET4.0、MySQL 5.0


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

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

此外,您提到的“了解”基表可能需要关联样式的多对多表,这些表告诉您哪些项目是在哪个订单上,哪些供应商提供哪些项目、交付周期、成本等


查看您的实际模式会很有帮助。

我使用一个带有DocType字段的Documents表。客户文件(订单、发票、形式表、交货、信用证)与供应商文件(采购订单、接收)混合使用。
这使得计算客户缺货订单、供应商缺货订单等变得非常容易。。。 我只是有点不高兴,因为我有不同的供应商和客户表,因此DOCUMENTS表有一个SupplierId字段和一个ClientId字段,这有点糟糕。如果我必须重做,我可能会考虑一个包含客户和供应商的单公司表。 我使用了一个自动递增的PK(DocId)和一个类似于XYY00000的唯一键(DocNum),带有
x=单据类型
YY=年
00000=增量。
这是因为可以保存文档,但只有在验证时才会收到DocNum

要跟踪延期订单(供应商或客户),您需要在DocDetails表中有一个分组字段,以便如果您有一个订单行12345,您可以将该链接字段复制到与其相关的每个明细行(发票、交货)。

希望我不会感到困惑。经过3年的时间和超过50000份文档,这件事进展顺利。

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

这种方法还意味着您将有一个为订单分配的库存-没有单个项目跟踪,管理起来有点棘手。考虑,客户A订单

3 pink widgets
1 blue widget
但是你只有一个粉红色的小部件在库存中-你订购了3个粉红色的小部件和1个蓝色的小部件

客户B订单

2 pink widgets
但你仍然只有一个库存——你再订购一个粉红色的小部件

从第一个供应商订单中收到3个粉红色小部件。你打算怎么办?您可以为客户A的订单保留所有这些小部件,并等待蓝色和红色小部件到达,或者您可以完成客户B的订单

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

仅仅保留一张新的缺货单是不够的


这东西很快就变得复杂起来。你当然需要花更多的时间分析这个问题

谢谢,是的,我有一张供应商和订单表。。。我绝对应该把我的存货分成单独的表格。现在,它有点像是在产品表上的一种背驮。我知道成本,哪些供应商供应哪些产品,但我们从来都不知道交付周期。谢谢谢谢你的回答。。。我知道订购过程的复杂性。当你有愚蠢的长时间缺货时,这绝对是可怕的。通常情况下,我们在进货时都会进货很多,比如说我们有2台存货,有人订购了3台,我们会从工厂订购大约20台。你有什么解决办法吗?