epo*_*olf 9 database-design ruby-on-rails
我正在从事项目管理系统的数据库设计作为个人项目,我遇到了麻烦.
我想实现票务系统,我希望票证看起来像Trac中的票证.我会用什么结构来复制这个系统?(我在任何系统上都没有成功安装trac所以我真的看不到它在做什么)
注意:我试图在任何版本存储或显示票证都没有意义.我只需要一个变化的历史.我不想存储额外的数据.另外,我在文本字段中使用序列化数组实现了这样的功能.我不想再将其作为解决方案来实现.
编辑:我只关注数据库结构.触发器/回调不是真正的问题.
Guy*_*uck 15
我使用"瘦"设计实现了纯记录更改数据:
RecordID Table Column OldValue NewValue
-------- ----- ------ -------- --------
Run Code Online (Sandbox Code Playgroud)
您可能不想使用"表格"和"列",而是使用"对象"和"属性"等,具体取决于您的设计.
这具有灵活性和简单性的优点,但是以查询速度为代价 - "表"和"列"列上的聚簇索引可以加速查询和过滤.但是,如果您要在桌面或对象级别频繁地在线查看更改日志,您可能希望设计更平坦的内容.
编辑:有几个人正确地指出,使用这个解决方案,你无法将变更集合在一起.我在上面的表中忘了这一点 - 我使用的实现还有一个带有日期时间,用户和其他信息的"Transaction"表,以及一个"TransactionID"列,所以设计看起来像这样:
CHANGE LOG TABLE:
RecordID Table Column OldValue NewValue TransactionID
-------- ----- ------ -------- -------- -------------
TRANSACTION LOG TABLE:
TransactionID UserID TransactionDate
------------- ------ ---------------
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8268 次 |
最近记录: |