为不同类型的操作设计操作历史数据库

时间:2009-05-08 11:35:45

标签: database-design

在bugtrackingsystem中,我想跟踪一些动作。更改状态,添加注释,更改优先级和其他操作等操作。

问题是,如何使用不同的参数存储这些不同的操作。例如,当有人更改状态时,需要保存状态更改,旧状态和新状态。但是当有人添加评论时,需要添加评论,并添加评论ID。

一种解决方案可能是将这些参数保存为纯文本。像“oldstatus =>新状态”,“评论001添加”。但这似乎并不可行。

有人知道这最适合的方式吗?

2 个答案:

答案 0 :(得分:1)

您可以将实际状态存储在错误表中,并将状态更改历史记录保存在不同的表中:

changeid (pk) - ticketid (fk) - date - oldstatus - newstatus - username

评论通常也会出现在另一张表中:

commentid (pk) - ticketid (fk) - date - username - comment

检索数据时,您可以检索以下错误的所有注释:

select 
from comments 
where comments.bugid = 12

P.S。 (pk)=主键,(fk)是外键

答案 1 :(得分:1)

我希望在TaskInfoRevision表中为每个更改保留一个单独的条目,包括状态,注释,属性等所有字段,然后确定应用程序代码中的更改,而不是DB本身。