守护程序每分钟返回一个当前已检入设施的用户列表。要输入或离开,必须使用智能卡。
最终的解决方案应该允许查看哪些用户已经检查过多长时间。
我的问题是:它是否更好 a)将守护进程的原始输出记录到sql数据库的一个表中,并根据原始数据执行所有逻辑,或者 b)将一些逻辑编程到守护进程中,以便仅在发生变化时生成sql条目?
在第二种情况下(我现在正趋向于此)我应该如何构建sql表?
a)每个唯一用户的一个表(应该可以在出现的情况下添加用户)列表 入住时间||查看时间||持续时间
b)只有一张桌子 用户||入住时间||查看时间||持续时间
c)用户表和链接时间记录表 用户||布尔(checkedin)
用户ID ||入住时间||查看时间||持续时间
是否有人有经验如何设计这样的场景以避免未来的警告
答案 0 :(得分:1)
根据现有资料,选项b)获得投票。
如果您的RDBMS允许,请考虑将Duration设为计算列。对于Microsoft SQL Server,它看起来像:
create table SecurityLogging (
UserId int,
CheckInTime datetime,
CheckOutTime datetime,
Duration as datediff(minute, CheckInTime, CheckOutTime)
)