【发布时间】:2015-08-16 12:14:39
【问题描述】:
我有一个关于数据建模的问题。
我有一个名为“销售”的表,其中存储了不同级别的客户销售聚合。它具有以下属性:
id (integer)
period_id (integer)
customer_id (integer)
product_category_id (integer)
channel_id (integer)
value (float)
根据填充的“id”属性,我知道聚合的级别。例如:
如果 period_id、customer_id 和 product_category_id 都填了,但 channel_id 为 NULL,我知道它是由所有渠道聚合的。如果 product_category_id 也是 NULL,我知道它是由所有渠道和产品类别聚合的。
与该销售表的每一行相关联,我在 performance_analysis 表中有一个关联行,它存储这些销售的统计分析。该表具有以下属性:
sales_id (integer)
and a bunch of numerical statistical values
我认为将这些不同级别的聚合存储在同一个(销售)表中并不是一个好习惯,我打算进行一些更改。我的想法是只对最分散的级别进行评分,并使用 SQL 进行聚合,即时获取每个级别的聚合。在这种情况下,“sales”表的所有引用属性都将被填充,我将根据需要进行 GROUP BY 和 SUM。
问题是:这样做,我失去了与 performance_analysis 表的 1x1 关联。然后,我必须将引用属性移动到分析表中,问题仍然存在。
我仍然必须使用那个 NULL 属性破解来知道聚合的级别。
请务必注意,汇总分析数据并非易事。我不能只对属性求和,它们特定于分析值。因此,这不是“销售”案例中的数据重复。但它仍然在同一张表上具有不同级别的“聚合”。
存储这些数据的最佳方式是什么?
【问题讨论】:
标签: mysql database postgresql data-modeling