用于存储统计结果的最佳表格设计?

时间:2014-01-18 19:52:58

标签: mysql

我正在开发一个websolution,其中必须存储有关在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_per household')都在field3内。

解决方案1的字段4和5包含搜索条件,用户可以在该搜索条件中查找给定stattype的特定统计结果。这个设计对我来说看起来很简单明了,但未来还不是很明确,因为将来可能需要更多可能的标准。

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

1 个答案:

答案 0 :(得分:0)

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

我建议您添加一个“公式”列,其中可以包含您要用于统计信息的公式。

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

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

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