为了存储用于审计目的的审计条目,我一直在努力解决如何记录哪些数据发生了变化。
我过去曾做过两种不同的方式,但我现在正在创建一个新系统,并试图弄清楚要使用哪种方式:
拥有AuditEntry和AuditEntryChange表。每个更改的字段值都在AuditEntryChange表中,并且具有到AuditEntry的FK。
将更改的字段和值存储在AuditEntry表中的XML中的单个字段中。
以上哪项更适合保存和查询? (如果使用XML,则包括序列化/反序列化的影响)。哪个会占用更少的空间?
此外,最佳做法是将GUID或int PK用于审计表吗?我可以想到每个原因。
答案 0 :(得分:1)
就个人而言,报告数据库中的每个字段要容易得多。
GUID与整数取决于您将在表格中拥有多少条记录。对于GUID,整数需要4个字节而不是16个字节。如果您希望跨服务器部署,虽然GUID更容易。
答案 1 :(得分:1)
答案取决于您计划查询审计表的方式。有关审计表的注意事项是,在典型情况下,记录是只读的,插入的频率远远超过查询。
由于以下原因,我倾向于选项2:
对于审计表的int vs Guid,我会选择Guid,因为: