如何根据MySQL数据库中的日期为用户构建数据

时间:2012-03-08 01:38:46

标签: mysql database zend-framework database-design zend-db

我正在开发一个zend项目,该项目具有基于用户记录的分钟数的功能。它需要能够根据日期范围生成报告。我希望有人可以帮我找出处理这些信息的最佳方法。

我正在使用users表来处理所有重要的个人资料信息。我认为最好的情况是将这个链接到另一个表来跟踪分钟......我只是不介意它应该如何布局。我看到一些页面建议在日期中使用数据库中的列,但在我看来,它很快就会变得无法管理。

当前网站有1500个用户,每天都有多个用户提交...我只是不确定id是如何进行的。

任何帮助都会很棒。 感谢

1 个答案:

答案 0 :(得分:0)

基于我认为您正在寻找的方法:

创建一个包含User_ID FK,Start_Time和End_Time的User_Session表。每次用户启动和结束会话时,都会向该表写一个新行。您可以在登录时获取这些User_ID和Start_Time,并在会话结束或用户注销时获取End_Time。

现在你有了一个历史表,其中有[1500个用户] x [每天的会话数],我称之为大而不可想象的。 (特别是看它是如何正确索引的等等。)你可以针对那个表运行查询,比如SELECT User_ID,SUM(End_Time - Start_Time),可以说是针对您需要的任何日期范围。

要控制表大小,您可以依次存储这些聚合值(User_ID,MMYY,Num_Minutes)并在某些设置的时间表上截断源表。但是,存储计算字段可能不比手头具有标准化数据更好。因此,在您确定源表大小是一个大问题之前,可能不要走那条路。

只是众多方式中的一种,为了清晰起见而过度简化。