3

我正在创建一个销售应用程序,并对产品和销售进行初步设计,这要归功于这里人们的帮助:)

然而,我不确定我是否可能过度设计或可以稍微简化我的设计。

以下是我的产品订单架构。

一些业务规则:

  1. 客户可以订购一份或多份合同
  2. 一份合同可以包含一个或多个产品
  3. 一个产品可以由一个或多个经销商提供
  4. 一个产品可以由一个或多个网络提供
  5. 经销商可以销售来自一个或多个网络的产品
  6. 产品价格可能因经销商而异

在此处输入图像描述

我的问题:

  1. 我的设计是否过度设计?使用链接表和创建产品的 3 个版本似乎非常复杂

    • 一种网络产品
    • 分销商产品
    • 产品

    我正在尝试执行数据库中的业务规则,例如,如果分销商不销售网络 a,那么来自网络 a 的产品不应该可用。仅将产品分配给分销商是不够的,例如来自网络 a 的所有产品,然后只是查询以查看分销商 1 销售网络 a 但没有来自 b 的产品这是一个硬性规则,我想阻止人们选择他们不应该选择的产品'吨?

  2. 假设我无法调整架构是我的 2 个链接表 NetworkPRoduct 和 DistributorNetwork 最好留下用于分销商产品的复合主键,或者我可以使用诸如 networkprodutid 之类的代理键如何逃脱?这仍然会导致分销商仅销售某些网络这一事实吗?

谢谢

4

1 回答 1

1

当复杂性成本超出满足您的业务规则所需的程度时,设计就会过度设计。没有人能比你更好地做出这个决定。我个人认为虽然它设计不足。

您可能会遇到的问题是,在合同签订时可能不知道从哪个经销商处购买产品。在我看来(我可能误解了这一点)您的架构假设您知道这一点。因此,您可能需要额外的产品表和分销商的真实价格矩阵。

如果您当前的设计对您来说过于复杂,我应该向您展示我们如何对此进行建模以及我们打算如何对其进行建模。

于 2012-09-03T13:12:48.167 回答