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

Database design 为不同类型的操作设计操作历史数据库,database-design,Database Design,在bugtrackingsystem中,我希望跟踪一些操作。更改状态、添加注释、更改优先级等操作以及其他操作 问题是,如何使用不同的参数存储这些不同的操作。例如,当某人更改状态时,需要将statuschange与旧状态和新状态一起保存。但当有人添加注释时,它需要使用注释id保存添加的注释 一种解决方案是将这些参数保存为纯文本。如“旧状态=>新状态”,“添加注释001”。但这似乎并不可行 有人知道如何才能最好地工作吗?您可以将实际状态存储在bug表中,并将状态更改的历史记录保存在不同的表中: ch

在bugtrackingsystem中,我希望跟踪一些操作。更改状态、添加注释、更改优先级等操作以及其他操作

问题是,如何使用不同的参数存储这些不同的操作。例如,当某人更改状态时,需要将statuschange与旧状态和新状态一起保存。但当有人添加注释时,它需要使用注释id保存添加的注释

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


有人知道如何才能最好地工作吗?

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

changeid (pk) - ticketid (fk) - date - oldstatus - newstatus - username
注释通常也放在不同的表中:

commentid (pk) - ticketid (fk) - date - username - comment
检索数据时,您可以检索bug的所有注释,如:

select 
from comments 
where comments.bugid = 12

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

我更愿意在
taskinformevision
表中为每次更改保留一个单独的条目,包括所有字段,如状态、注释、属性等,然后确定应用程序代码中的更改内容,而不是数据库本身。

状态保留在表中。我想存储的是一个以这种方式更改的内容的摘要,以便以后可以很容易地再次检索。您能再解释一下吗?