ruby-on-rails – 跟踪变更历史的数据库结构

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 跟踪变更历史的数据库结构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在从事项目管理系统的数据库设计作为个人项目,并且我已经陷入困境.

我想实现一个票系统,我想要的票看起来像tickets in Trac.我用什么结构来复制这个系统? (我没有成功安装任何我的系统的trac,所以我真的看不到它在做什么)

注意:尝试以任何版本存储或显示机票时,我并不感兴趣.我只需要一个变化的历史.我不想存储额外的数据.此外,我已经在文本字段中使用序列化数组实现了这样的功能.我不想再把它当作一个解决方案.

编辑:我只在寻找数据库结构.触发器/回调并不是一个问题.

解决方法

我使用“薄”设计实现了纯记录变更数据:
RecordID  Table  Column  OldValue  NewValue
--------  -----  ------  --------  --------

您可能不想使用“表”和“列”,而是“对象”和“属性”等,具体取决于您的设计.

这具有灵活性和简单性的优点,以查询速度为代价 – “表”和“列”列上的集群索引可以加快查询和过滤.但是,如果要在表或对象级别频繁地查看更改日志,您可能需要设计更平坦的东西.

编辑:有几个人正确地指出,用这个解决方案,你不能把一个变化集合在一起.我在上表中忘记了这一点 – 我使用的实现方式还有一个包含datetime,user和其他信息的“Transaction”表,还有一个“TransactionID”列,所以设计如下所示:

CHANGE LOG TABLE:
RecordID  Table  Column  OldValue  NewValue  TransactionID
--------  -----  ------  --------  --------  -------------

TRANSACTION LOG TABLE:
TransactionID  UserID  TransactionDate
-------------  ------  ---------------

猜你在找的Ruby相关文章