我发现了一个类似的问题(School attendance database)。
我必须处理这些额外的条件。
。
我想的基本表格是带有以下条目的。
value
如果这是表,那么在理想情况下,数据库中大约行数将为= 100,000 x 250(yr工作天)= 25,000,000。现在,如果用户重复刷入或刷出行将加起来。假设1/3的员工这样做,以确保考勤被标记。因此,额外行8,333,333共计约33,333,333行。
问题之一是当用户滑动两次,但只滑动一次时。然后,我需要在第二次滑动输入中有空值,或者在刷出字段中填充相同的值。这将把提到的额外行加起来。我想的另一个选择是每天运行一个后台任务来清除双重用户条目。假设用户在上午8点进入,然后在上午8点10分进入,所以系统在day.First结束时删除了上午8点10分的条目。
然而,我认为我所看到的是。如果用户在办公室过夜工作,然后在凌晨2点左右滑动,则滑动数据将是
g 230。
我的问题是: 1.对于mysql、postgresql这样的数据库来说,列出的行数是否可以接受,而不会耽误太多的检索时间?我更感兴趣的是开源db的性能。2.是否有比这更好的编排表格的方法?
发布于 2010-01-04 09:29:43
简单的答案是,你记录的是滑动而不是几天,然后对数据进行后处理以实现所需的跟踪--即使没有你的例子,也有更基本的“外出午餐”或其他离开网站的理由,它们要求每天超过一次到达和离开。
不管你做什么,你都会遇到多次滑动的问题--人们是“人”,你将与边缘情况斗争,即用户因任何原因(通常是无辜的)以奇怪的方式行事的情况。
发布于 2010-01-04 09:23:26
这里有一个小小的正常化:
UserTable: UserID FirstName LastName Email WhateverOtherFields UserCreated datetime LastActivityDateTime datetime
AttendanceTable: AttendanceID UserID EventID SwipeIn datetime SwipeOut datetime
EventTable: EventID EventName EventLocation EventStart datetime EventEnd datetime
有了这样的布局,即使在同一天,您也可以将多次出诊记录在文件中。您将允许用户到SwipeIn开始考勤本身,并将该考勤保持打开直到用户SwipeOut。也许还会给系统一个冲洗过程,让您关闭那些从未到达SwipeOut的与会者。通过添加要附加到考勤表的事件表之类的内容,您将允许跟踪事件等。你完全可以全力以赴或亲吻。
希望这能有所帮助!
发布于 2010-01-04 09:25:50
我看不出有什么问题。一排排。许多应用程序通常具有这样的数据量。对于你的问题,我的意见如下:
1)你需要考虑正式的工作时间,比如早上9点到下午6点,即每天9小时。如果用户在午夜后逾期逗留,则应在第二天的出勤时间中加上午夜后的剩余时间。-1月1日-1月10日-上午8:00+滑出-2-1月-10-凌晨2:00=1月1日-10日16小时+1月2日-10下午2小时
所以你的总数是1月1日至10日16小时和1月2日至10日11小时。
您还可以在表中添加的另一项内容是列“小时日志记录”。不是很有用,但有时对报告有帮助。您可以为该列添加值,只用于刷出不会被清除的项,即最后一次输出条目。
https://stackoverflow.com/questions/1998298
复制相似问题