嘿,所以这里有一个设计问题:日志表中的外键
我正在处理一个项目,需要我跟踪用户何时执行插入,更新或删除。我试图决定的是,是否让日志表引用受影响的行的主键或其他标识符。为了在使用外键时记录删除,我需要为每个表都设置一个删除列。但是,如果我使用某个没有外键的命名标识符,我最终会在Logs表中运行名称重复,并且它将变得不清楚该条目引用的内容。有没有人有这方面的实际经验,特别是使用删除列以保持完整日志的性能影响?
一个相关的问题也是在日志表本身的设计中。如果我在单个日志表中使用外键引用,那么我的第一个直觉就是为每个正在监视变化的表创建一个引用列。这对我来说并不理想,因为如果我必须添加一个新表,我必须更改日志表和任何关联的sprocs。我可以看到的另一种选择是有两列,TableName和RowId。但是这将没有固有的外键引用,因为它不知道引用了什么表。
感谢您的任何意见!
删除的标志/列被称为逻辑删除。使谈话更轻松。 – 2010-10-15 19:42:01