我正在创建一个销售应用程序,并对产品和销售进行了初步设计,这要感谢这里的人的一些帮助:)
但是,我不确定我是否过度设计或可以略微简化我的设计。
下面是我的产品订单架构。
一些业务规则:
- 一个客户可以订购一份或多份契约(Contract)
- 一个契约(Contract)可以包含一个或多个产品
- 产品可由一个或多个分销商提供
- 一种产品可以由一个或多个网络供应
- 经销商可以从一个或多个网络销售产品
- 产品价格可能因分销商而异
我的问题:
我的设计是否过度设计?它使用链接表和创建产品的 3 个版本似乎非常复杂
- 一个网络产品
- 经销商产品
- 产品
我正在尝试在数据库中执行业务规则,例如,如果分销商不销售网络 a,则网络 a 的产品不应该可用。仅仅将产品分配给分销商是不够的,例如来自网络 a 的所有产品,然后只查询分销商 1 销售网络 a 但没有来自 b 的产品这是一个硬性规则,我想阻止人们选择他们不应该选择的产品?
假设我无法调整架构,我的 2 个链接表 NetworkPROduct 和 DistributorNetwork 最好留有一个在 Distributor 产品中使用的复合主键,或者我可以如何使用代理键(例如 networkprodutid)?这是否仍然表明分销商只销售某些网络?
谢谢
罗布
最佳答案
当复杂性成本超出满足您的业务规则所需的程度时,设计就会过度设计。没有人比你更能下定决心。我个人认为虽然它设计不足。
您可能会遇到的问题是,在签订契约(Contract)时可能不知道要从哪个分销商处购买产品。在我看来(我可能会误解这一点)您的架构假设您知道这一点。因此,您可能需要一个额外的产品表和一个真实的分销商价格矩阵。
如果您当前的设计对您来说过于复杂,我应该向您展示如何we对此进行建模以及我们打算如何对其进行建模。
关于sql-server-2008 - 过度设计的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12107223/