处理异常和防止冗余的最佳数据库模式是什么?
What is the best DB schema to handle exceptions and prevent redundancy?
有些产品可以多个单位销售,基本单位是公斤。每个产品的单位有不同的重量,例如一捆产品A是20公斤,一捆产品B是30公斤
以下是我的初步设计
product:
id name
product_variation:
id product_id name price
product_variation_unit:
id product_variation_id unit_id
product_variation_unit_weight:
product_variation_unit_id weight
问题是产品的大部分变体都具有相同的单位和重量。所以这是我的解决方案,但我不确定这是个好主意:
selectable_unit:
id selectable_id selectable_type unit_id
1 10 product 100
2 20 product_variation 101
selectable_unit_weight:
selectable_unit_id weight
当我想得到一个变量的单位和重量时,首先我会检查变量,如果没有,我会检查它的产品。
我有点复杂,你能帮我找到更好的解决方案或改进吗?
看看下图(Oracle Data Modeler 表示法)。通常,价格取决于SKU(库存单位)和期间;重量取决于 SKU(包装产品)。
SKU 重量受其产品允许的单位限制(外键包含 2 列)。
SKU.value
是销售单位的价值,即公斤、件、升等。
有些产品可以多个单位销售,基本单位是公斤。每个产品的单位有不同的重量,例如一捆产品A是20公斤,一捆产品B是30公斤
以下是我的初步设计
product:
id name
product_variation:
id product_id name price
product_variation_unit:
id product_variation_id unit_id
product_variation_unit_weight:
product_variation_unit_id weight
问题是产品的大部分变体都具有相同的单位和重量。所以这是我的解决方案,但我不确定这是个好主意:
selectable_unit:
id selectable_id selectable_type unit_id
1 10 product 100
2 20 product_variation 101
selectable_unit_weight:
selectable_unit_id weight
当我想得到一个变量的单位和重量时,首先我会检查变量,如果没有,我会检查它的产品。
我有点复杂,你能帮我找到更好的解决方案或改进吗?
看看下图(Oracle Data Modeler 表示法)。通常,价格取决于SKU(库存单位)和期间;重量取决于 SKU(包装产品)。
SKU 重量受其产品允许的单位限制(外键包含 2 列)。
SKU.value
是销售单位的价值,即公斤、件、升等。