我将要创建一个审计表,基本上记录3个事件(目前)。创建用户、用户登录事件(成功)和失败的用户登录事件。
我的想法很简单。
CREATE TABLE AccountAuditLog (
Id INT NOT NULL IDENTITY(1,1),
UserId UNIQUEIDENTIFIER NOT NULL,
IPAddress VARCHAR(15) NOT NULL,
EventType VARCHAR(15) NOT NULL,
EventDescription VARCHAR(20) NOT NULL,
EventTimestamp DATETIME2 NOT NULL,
CONSTRAINT PK_AccountAuditLog PRIMARY KEY (Id),
CONSTRAINT fk_AccountAuditLog_Account FOREIGN KEY (UserId) REFERENCES Account (Id)
)
我们通常使用uniqueidentifiers作为id,但我对id int的推理是,它只是自动递增,提供一些信息(是的,我们可以使用datetime来计算顺序,但行将按顺序写入?).
在审核日志中使用标识列有问题吗?我想不出一个。
然后,要求显示用户的登录计数。我不希望在account表中有一个名为logincount的字段。相反,我只想在userid=i d的地方做一个count(),如果我在userid上有一个索引,我相信即使有大量的数据,这也是非常有效的。这是illy计划,还是比每次登录时get递增的account表中的字段更适合?