我正在开发一个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字段将包含更多数据...
答案 0 :(得分:0)
第二种形式肯定更具可扩展性。
我建议您添加一个“公式”列,其中可以包含您要用于统计信息的公式。
但请注意,您将拥有创建在某处运行的统计信息的代码。该代码很难使用formula
列(基本上,它需要动态SQL)。在某个地方你可能会有一个案例陈述,如:
select (case when stattype = 'average_number_of_bough_products_per_household'
then nrofpeopleperhousehold / incomeperhh -- or whatever
. . .
end)
如果用户需要搜索受一个列值影响的统计信息,您可以搜索formula
列,也可以使用另一个表格,其中列出了定义每个统计信息的字段。