2009-05-08 15 views
2

bugtrackingsystemでは、いくつかのアクションを追跡したいと思います。ステータスの変更、コメントの追加、優先度の変更などのアクションさまざまな種類のアクションのアクション履歴データベースを設計する

問題は、さまざまなパラメータを使用して、これらの異なるアクションを保存する方法です。たとえば、誰かがステータスを変更すると、古いステータスと新しいステータスでstatuschangeを保存する必要があります。しかし、誰かがコメントを追加するときは、コメントidを付けてコメントを追加する必要があります。

解決策の1つは、これらのパラメータをプレーンテキストとして保存することです。 "oldstatus => new status"、 "comment 001 added"のようになります。しかし、それは本当に実行可能に見えません。

誰かがこれがどのように最も効果的か知っていますか?

答えて

1

あなたはバグテーブルに実際の状態を保存し、別のテーブル内のステータス変更の履歴を保持することができます

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

コメントは、通常はあまりにも別のテーブルに行く:

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

select 
from comments 
where comments.bugid = 12 

PS:データを取得すると、次のようなバグのすべてのコメントを取得することができます(pk)=プライマリキー、(fk)は外部キー

+0

ステータスはテーブルに保持されます。私が保存したかったのは、何が変更されたかをまとめたもので、後で再び取り出すのは簡単です。 – Ikke

1

ステータス、コメント、プロパティなどのすべてのフィールドが変更された場合は、TaskInfoRevisionテーブルに別のエントリを保存してから、アプリケーションコードで変更されていますが、DB自体では変更されていません。

+0

もう少し説明していただけますか? – Ikke