【发布时间】:2019-04-06 20:51:11
【问题描述】:
我正在尝试设计一个包含产品、产品类型、产品属性的数据库,该数据库还存储成本和库存(库存)。我希望这具有尽可能少的 const/硬编码,并且在未来也可以扩展。
我遇到的问题是我希望将多个属性绑定到一个产品,其中一些属性会导致产品成本增加,并保持具有所有这些属性的产品库存。
这是我当前的数据库图:
我曾考虑将“ProductAttributeID”列附加到 ProductPricing 和 Product Stock/Supply 表中。
这适用于单个属性,但如果要考虑两个属性则不行。
即:
Product = Shirt
Attribute = Size (small, medium, large)
Attribute#2 = Color (red, green, blue)
...
我想我可以创建一个 ProductAttributeModifier 表,以将一个值加/减/除/乘以总值。
ProductAttributeModifier
========================
ProductAttributeID (bigint) FK_,
Operator (char(1)), //+, -, *, /, %
CostValue decimal(7,2)
这样我可以对具有多个属性的产品的总价值进行汇总汇总。
这种方法有什么缺陷吗?
我将如何处理 ProductSupply?我曾考虑将多个列作为外键约束添加到不同的 ProductAttributes,但这是不可扩展的,并且需要将来了解该产品。
也许另一张桌子可以作为一个单独数量的连接点?迭代所有属性?这种方法也有陷阱吗?
ProductAttributeSupply
======================
ProductSupplyId (bigint) FK_,
AttributeID (bigint) FK_,
Quantity (int/bigint)
将整体供应总量放在视图/存储过程中是否更有意义?
我希望图表能够处理以下场景:
- 产品没有、单个或多个属性
- 为属性修改成本做好准备(中到大)
- 成本修饰符是可选的
- 计算我们库存中所有属性匹配的适当产品数量
- 当我们在数据库中收到时,正确保存与每个属性匹配的产品数量。 '产品库存'
【问题讨论】:
-
这种问题最好在姐妹站问:dba.stackexchange.com