【问题标题】:Best table design for storing stats results? [closed]存储统计结果的最佳表格设计? [关闭]
【发布时间】:2014-01-19 04:22:55
【问题描述】:

我正在开发一个网络解决方案,其中必须将有关使用各种产品的统计结果存储在 mysql 数据库中。由于有限的 mysql 数据库设计经验和同样有限的统计经验,我想知道我对下面表格设计的选择是否有意义,或者是否有更好的选择?我查看了此站点上的相关主题(例如 Storing And Displaying Stats ),但找不到可以回答我问题的内容。

在这个开发阶段,我还不知道我想在未来存储哪些具体的统计结果,所以我需要一个灵活的设计。

表结构的简化解决方案1(例如表字段):

             field1  field2                     field3       field4                 field5             fieldn 
              id      stattype                   statresults  nrofpeopleperhousehold  incomeperhh     created
value example: 1      boughtproductsperyearperhh   4           3                           $33000    2010-02-19

表结构(例如表字段)的简化解决方案2:

field1  field2     field3       field4
id      stattype   statresults  created

特定统计类型的所有统计结果(例如 'average_number_of_bough_products_perfamily')都在字段 3 内。

解决方案 1 的字段 4 和 5 包含搜索条件,用户可以根据这些条件找到给定统计类型的特定统计结果。这个设计对我来说看起来简单明了,但不是很有未来的证明,因为将来可能需要更多可能的标准。

我认为解决方案 2 是我认为更多的未来证明,因为搜索条件(例如解决方案 1 的字段 3 和 4)嵌入到字段 3(statresults)(使用像 json 之类的一些编码),但结果是 statresults字段将包含更多数据...

【问题讨论】:

  • “最佳”是主观的; 你的标准是什么?
  • 如前所述,设计灵活性是关键标准之一
  • 太棒了。这使得您提到的两个选项之间的选择变得微不足道。那你问这个干嘛?
  • 我真的不明白这两种结构。列名是field1、field2、. . .?为什么叫stattype 和id 的东西存储在一个看起来像一行的地方?您能否提供几行数据的实际外观以及有效的行标题?
  • @Matt:对于专家来说这可能是微不足道的,但对于像我这样的初学者来说却不是这样,因为我不知道这两种解决方案可能存在哪些陷阱,也不知道它们是否是最好的前进方式......

标签: mysql


【解决方案1】:

第二种形式肯定更具可扩展性。

我建议您包含一个“公式”列,该列可以包含您要用于统计的公式。

但请注意,您将拥有在某处运行的创建统计信息的代码。该代码很难使用formula 列(基本上,它需要动态SQL)。在某个地方,您可能会有这样的案例陈述:

select (case when stattype = 'average_number_of_bough_products_per_household'
             then nrofpeopleperhousehold / incomeperhh -- or whatever
        . . . 
        end)

如果用户需要搜索受某个列值影响的统计信息,您可以搜索formula 列,也可以使用另一个表,其中包含定义每个统计信息的字段列表。

【讨论】:

  • 好的,感谢您的反馈和建议(!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 2014-01-28
  • 2011-05-09
  • 1970-01-01
  • 2010-09-22
相关资源
最近更新 更多