物理访问日志记录 - SQL数据库设计

时间:2010-12-07 17:53:32

标签: sql logging

守护程序每分钟返回一个当前已检入设施的用户列表。要输入或离开,必须使用智能卡。

最终的解决方案应该允许查看哪些用户已经检查过多长时间。

我的问题是:它是否更好 a)将守护进程的原始输出记录到sql数据库的一个表中,并根据原始数据执行所有逻辑,或者 b)将一些逻辑编程到守护进程中,以便仅在发生变化时生成sql条目?

在第二种情况下(我现在正趋向于此)我应该如何构建sql表?

a)每个唯一用户的一个表(应该可以在出现的情况下添加用户)列表 入住时间||查看时间||持续时间

b)只有一张桌子 用户||入住时间||查看时间||持续时间

c)用户表和链接时间记录表 用户||布尔(checkedin)

用户ID ||入住时间||查看时间||持续时间

是否有人有经验如何设计这样的场景以避免未来的警告

1 个答案:

答案 0 :(得分:1)

根据现有资料,选项b)获得投票。

如果您的RDBMS允许,请考虑将Duration设为计算列。对于Microsoft SQL Server,它看起来像:

create table SecurityLogging (
    UserId int,
    CheckInTime datetime,
    CheckOutTime datetime,
    Duration as datediff(minute, CheckInTime, CheckOutTime)
)