SQL历史表设计
我需要设计一个历史记录表来跟踪在编辑时在特定记录上更改的多个值.
例: 标题:先生 如果用户更改了这些值,我需要跟踪旧值并记录新的值. 我想到使用这样的表: 历史 – – – – – – – – ID 一个问题是它将为每个编辑有多个条目. 我也在考虑在历史表中保留一行的副本,但是似乎也没有效率. 有任何想法吗? 谢谢! 解决方法您应该定义您感兴趣的效率类型:您可以提高存储空间,记录历史记录所需的工作效率(交易成本),或者以特定方式查询记录的历史时间的效率.我注意到您在建议的历史表中有一个表名,这意味着要记录多个表的历史记录,这将排除将记录的精确副本存储在历史记录表中的选项,除非所有表您的跟踪将始终具有相同的结构. 如果您单独处理列,即每个历史记录只记录一个列值,则必须设计一个能够准确表示您将遇到的每个列值的多态数据类型. 如果存储空间的效率是您的主要关注点,那么我将把历史记录分解成多个表.这意味着将新的列值表链接到编辑事件表和列定义表.编辑事件表将记录用户和时间戳,列定义表将记录表,列和数据类型.正如@njk所说,您不需要旧的列值,因为您可以随时查询以前的编辑以获取旧值.预期这种方法可以节省空间的主要原因是假设一般来说,用户将编辑可用字段的一小部分. 如果查询的效率是您的主要关注点,我将为您正在跟踪的每个表设置历史记录表,并向每个历史记录表添加用户和时间戳字段.这对于编辑的交易成本也应该是有效的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |