【问题标题】:Interesting Database Architecture Scenario有趣的数据库架构场景
【发布时间】:2010-11-17 22:02:48
【问题描述】:

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

库存订单的运作方式是,有时客户订购的商品数量多于库存商品数量,因此我们希望向供应商订购足够数量的商品来完成订单并补充我们的库存。然而,我们经常不得不建立这些订单,因为最低要求非常高,所以一个库存订单通常由几个客户订单(有时是同一个项目)加上一些与订单无关的订单项组成,只是用于库存目的。

这给我当前的架构带来了一个问题,因为我现在需要跟踪库存订单中的内容,因为供应商经常运送部分订单、物品已分配到哪里以及哪些进货物品用于库存。

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

这是不是矫枉过正,也许有更好的方法来做到这一点?数据库架构绝对不是我的强项,所以我希望有人能告诉我这是一种不错的方法,或者有更好、更正确的方法。

非常感谢!

不管它的价值,我正在使用什么:VB、.NET 4.0、MySQL 5.0

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

【问题讨论】:

    标签: mysql database-design


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 谢谢,是的,我有一个供应商和订单表...我绝对应该将我的库存分成单独的表。现在它在产品表上有点捎带。我有成本,哪些供应商提供哪些项目,但我们从来不知道交货时间。谢谢!
      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        3 pink widgets
        1 blue widget
        

        但您的库存中只有 1 个粉色小部件 - 您订购了 3 个粉色小部件和 1 个蓝色小部件。

        客户 B 订单

        2 pink widgets
        

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

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

        如果粉色小部件的交货时间是 3 天,而蓝色小部件的交货时间是 3 周,该怎么办?您是否将部分订单运送给您的客户?您对持有的股票数量有限制吗?

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

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

        【讨论】:

        • 感谢您的回答...我知道订购过程的复杂性。当你有愚蠢的长延期交货时间时,这绝对是可怕的。通常,当我们带入库存物品时,我们所做的就是带入很多,所以假设我们有 2 个库存的东西,有人订购了 3 个,我们会从工厂订购 20 个。你有什么解决办法吗?
        猜你喜欢
        • 2011-08-02
        • 1970-01-01
        • 1970-01-01
        • 2015-06-18
        • 2012-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-19
        相关资源
        最近更新 更多