假设我有一个“产品”表,其中有一个“默认”单位,该产品以该单位(例如单独的EA)出售。该产品也可以从某些供应商以BX(盒)和CT(纸箱)的形式提供,每个包装中都包含一定数量的“默认”单位(在我们的例子中,假设一个盒子是6个,一个纸箱是12个)。
该产品有与“默认”单位关联的常规价格清单,以及每个附加销售单位的另一个价格清单。产品的成本(即作为卖方支付的费用)因产品和供应商而异,我们打算实现一种查看销售该产品的供应商列表的方法,以便我们可以选择最优惠的价格(例如,我们可能会选择个体产品的Vendor A,但对于Carton,我们会选择Vendor B,因为他们比Vendor A更便宜地销售给我们)。
业务规则要求我们在每个包装级别上维护单独的SKU,但其他信息(例如销售副本、制造商、描述)是相同的。因此,对于具有SKU ACM1234的产品,它可以具有“可显示”的SKU:
ACM1234-默认的单个产品,价格清单为$5.00 ACM1234BX-盒装(6个单品),价格清单为$28.00 ACM1234CT-纸箱包装(12个单品),价格清单为$50.00
而这个产品可能由3个供应商以不同的级别提供-他们中的一些人可能不提供纸箱版本,但提供盒装和单个版本,而其他人可能拥有所有三个版本。
此外,由于我们的主要客户是美国政府,因此需要将该产品视为单独的实体,并且我们有“合同”和“非合同”项目的概念;例如,我们可能只选择向政府销售产品的盒装和纸箱版本,而不是单个版本。然后,当我们收到订单时,我们将需要按其SKU(例如ACM1234BX)查找项目并获取其信息-例如我们出售它的价格。如果产品数据库具有“常规”SKU(例如单个项目),但政府客户已购买了盒装版本,则可能会遇到问题。
通常,我会有一个“主”产品表,其中包含SKU和其他相关信息,例如描述。在这种情况下,创建处理此类问题的模式的最佳方法是什么?我可以做某种查找表,并在一个表中列出“常见”信息(销售副本、描述、是否回收等),并将其链接到另一个表,该表列出产品及其包装级别以及具有显示SKU的“计算”列。也许像这样:
# 产品表 id 描述 是否回收 销售文案 1 ACME(R)小部件Plus 1 您需要的唯一小部件...
# 包装表 产品ID 单位 销售SKU 列表价格 1 EA ACM1234 5.00 1 CT ACM1234CT 50.00 1 BX ACM1234BX 28.00
但是,当查找或添加新产品时,我担心这将变得非常复杂和难以掌握。我们从供应商那里接收产品信息源,其中包含相当于所有相关信息的单个表,并且不假设您以多种包装类型(仅使用主要类型)销售产品。此外,他们提供自己的人工ID来将所有内容联系在一起。我考虑的另一种方法是,在产品表中的行对应于常规产品实体(例如单个),然后有其他包装级别的相关表,而在UI上(我还没有考虑过,因为我正在尝试设计适当的数据模型),进行“自动建议”类型的交易,如果输入ACM1234,它将显示与BX和CT变体一起,您可以选择要获取相应值的选项。
我觉得我走在正确的道路上,但我仍然认为我缺少某些东西,我的头开始旋转,因为我试图在脑海中运行所有这些潜在的情况,以找到可扩展的解决方案。它需要能够容纳可以以不同定价级别从多个供应商单独销售,盒装和纸箱包装的产品。
有任何建议或想法吗?
编辑:我使用SQL Server 2005标准作为数据库。
编辑(02/25/2009):因此,根据awithrow和David Aldridge的建议,大致如下:
# 产品 id 基本SKU ... 1 ACM1234
# 供应商 id 名称 1 United Supply Co. 2 ACME Office Supply
# 产品包装 id productID unit listPrice 1 1 EA 5.00 2 1 BX 15.00 3 1 CT 40.00
# 供应商产品包装 vendorID packageID cost 1 1 3.45 1 2 7.85 1 3 14.86 2 2 10.45
可能会创建一个表,其中每种单位类型都有SKU后缀映射,以防我们添加更多内容。
该产品有与“默认”单位关联的常规价格清单,以及每个附加销售单位的另一个价格清单。产品的成本(即作为卖方支付的费用)因产品和供应商而异,我们打算实现一种查看销售该产品的供应商列表的方法,以便我们可以选择最优惠的价格(例如,我们可能会选择个体产品的Vendor A,但对于Carton,我们会选择Vendor B,因为他们比Vendor A更便宜地销售给我们)。
业务规则要求我们在每个包装级别上维护单独的SKU,但其他信息(例如销售副本、制造商、描述)是相同的。因此,对于具有SKU ACM1234的产品,它可以具有“可显示”的SKU:
ACM1234-默认的单个产品,价格清单为$5.00 ACM1234BX-盒装(6个单品),价格清单为$28.00 ACM1234CT-纸箱包装(12个单品),价格清单为$50.00
而这个产品可能由3个供应商以不同的级别提供-他们中的一些人可能不提供纸箱版本,但提供盒装和单个版本,而其他人可能拥有所有三个版本。
此外,由于我们的主要客户是美国政府,因此需要将该产品视为单独的实体,并且我们有“合同”和“非合同”项目的概念;例如,我们可能只选择向政府销售产品的盒装和纸箱版本,而不是单个版本。然后,当我们收到订单时,我们将需要按其SKU(例如ACM1234BX)查找项目并获取其信息-例如我们出售它的价格。如果产品数据库具有“常规”SKU(例如单个项目),但政府客户已购买了盒装版本,则可能会遇到问题。
通常,我会有一个“主”产品表,其中包含SKU和其他相关信息,例如描述。在这种情况下,创建处理此类问题的模式的最佳方法是什么?我可以做某种查找表,并在一个表中列出“常见”信息(销售副本、描述、是否回收等),并将其链接到另一个表,该表列出产品及其包装级别以及具有显示SKU的“计算”列。也许像这样:
# 产品表 id 描述 是否回收 销售文案 1 ACME(R)小部件Plus 1 您需要的唯一小部件...
# 包装表 产品ID 单位 销售SKU 列表价格 1 EA ACM1234 5.00 1 CT ACM1234CT 50.00 1 BX ACM1234BX 28.00
但是,当查找或添加新产品时,我担心这将变得非常复杂和难以掌握。我们从供应商那里接收产品信息源,其中包含相当于所有相关信息的单个表,并且不假设您以多种包装类型(仅使用主要类型)销售产品。此外,他们提供自己的人工ID来将所有内容联系在一起。我考虑的另一种方法是,在产品表中的行对应于常规产品实体(例如单个),然后有其他包装级别的相关表,而在UI上(我还没有考虑过,因为我正在尝试设计适当的数据模型),进行“自动建议”类型的交易,如果输入ACM1234,它将显示与BX和CT变体一起,您可以选择要获取相应值的选项。
我觉得我走在正确的道路上,但我仍然认为我缺少某些东西,我的头开始旋转,因为我试图在脑海中运行所有这些潜在的情况,以找到可扩展的解决方案。它需要能够容纳可以以不同定价级别从多个供应商单独销售,盒装和纸箱包装的产品。
有任何建议或想法吗?
编辑:我使用SQL Server 2005标准作为数据库。
编辑(02/25/2009):因此,根据awithrow和David Aldridge的建议,大致如下:
# 产品 id 基本SKU ... 1 ACM1234
# 供应商 id 名称 1 United Supply Co. 2 ACME Office Supply
# 产品包装 id productID unit listPrice 1 1 EA 5.00 2 1 BX 15.00 3 1 CT 40.00
# 供应商产品包装 vendorID packageID cost 1 1 3.45 1 2 7.85 1 3 14.86 2 2 10.45
可能会创建一个表,其中每种单位类型都有SKU后缀映射,以防我们添加更多内容。