2012-03-08 63 views
1

我正在开发基于用户日志分钟数的功能的zend项目。它需要能够根据日期范围生成报告。我希望有人能帮助我找出处理存储信息的最佳方法。如何在MySQL数据库中根据日期为用户构造数据

我正在使用用户表来处理所有重要的配置文件信息。我可以想象最好的情况是将这个链接到另一个表格来跟踪分钟......我只是没有围绕它应该如何布置我的想法。我已经看到一些页面建议在日期中使用数据库中的列,但在我看来,它很快就会变得难以管理。

随着目前的网站在1500个用户和多个用户每天提交...即时通讯只是不知道如何编号去它。

任何帮助将是伟大的。 感谢

+0

嗯,你可以扩展你的意思是用户的日志分钟?他们是手动执行此操作还是“花费在网站上的时间”? – Aatch 2012-03-08 01:42:28

+0

它是手动输入的。实际上,导师在任何一天都会输入他们的学生阅读的时间。 – Cpage 2012-03-08 02:09:11

回答

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)并在某些设置的计划中截断源表。尽管如此,存储计算的字段可能不会比拥有标准化数据更好。所以,也许不要走这条路线,直到你确定源表的大小是一个大问题。

只是众多方法中的一种,并且为了清晰起见而过于简化。

+0

这是有道理的。这也解释了我计划在晚些时候发布的部分功能,所以也要感谢。 – Cpage 2012-03-08 02:15:52

+0

对于你的另一个问题,如果我可能......我对这个大小的数据库有点新,你会说数据库变得“太大”了?我知道这一切都将取决于文件大小,服务器等我只是寻找一个一般的想法,当你可以看到它导致问题。 – Cpage 2012-03-08 02:18:21

+0

100,000+行应该没有问题。关键的考虑因素是设计良好的表格(您只需存储必要的键和不要多余的数据)和索引(根据您打算查询的字段选择适当的索引)。当然,服务器速度和文件大小很重要,但这不是十分之九会烧九分之一。 – LesterDove 2012-03-08 02:41:36