在 MySQL 数据库中记录主值?

Record Master values in MySQL database?

我正在尝试找出一种严格使用 MySQL 来处理这种情况的好方法。 (使用生成的列、视图、逻辑语句、过程等)

我已经简化了这个例子。假设我有一个 table 存储特定工厂特定年份特定产品的生产成本信息。

其中一些成本是特定于产品的。 (塑料、成型成本、包装、人工等)

其中一些成本相当普遍;我可能想为它们分配一个特定的值,但对于它们中的许多人来说,大多数时候,我只希望它们为工厂指定当年的特定值。我将这些称为“主”值。 (例如管理费用,利息成本、电力、热力、属性 税收、管理人员等)

然后如果我更新我的主值,这些值的成本将自动调整;并且它们可能因年份和工厂而异。 (所以我不能只使用默认值。)

所以我的专栏可能是:

这是定义方式的逻辑:

$MValue(var) = var WHERE product_id = M (Master) AND year = year AND factory_id = factory_id;

然后基本上,如果我想为该产品使用唯一成本,我可以将成本金额放在该字段中,但如果我希望它使用主值(显示在第 4 行,由 M 指定) ,然后我可以在字段中插入 $MValue(column_id)。

关于如何使用 MySQL 实现这一点有什么想法吗?

我应该补充一点,我已经在这些字段上使用生成的(计算的)列和视图,因此我正在寻找严格的 MySQL 解决方案。

我建议在您的产品行中将派生成本存储为 NULL,然后定义一个连接到主行的视图。

CREATE VIEW finalcosts AS
  SELECT p.cost_id, p.product_id, p.factory_id, p.plastic_cost, p.molding_cost,
    COALESCE(p.interest_cost, m.interest_cost) AS interest_cost,
    COALESCE(p.tax_cost, m.tax_cost) AS tax_cost
  FROM costs AS p
  JOIN costs AS m ON p.year = m.year and m.product_id = 'M (Master)'

无法使用默认列或生成的列从不同的行检索数据。这些表达式只能引用同一行中的值。

P.S.: 关于"master"值的术语,我已经习惯了"direct costs"和"indirect costs."这两个术语,直接成本是那些容易归因于产品的每单位成本和间接成本就像您的主成本一样,它们归因于整个业务,并且它们通常不会按生产单位计算。