2009-05-08 14 views
2

In einem Bugtrackingsystem möchte ich einige Aktionen verfolgen. Aktionen wie Status ändern, Kommentar hinzufügen, Priorität ändern und andere Aktionen.Entwerfen einer Action-History-Datenbank für verschiedene Arten von Aktionen

Das Problem ist, wie ich diese verschiedenen Aktionen mit unterschiedlichen Parametern speichern. Wenn beispielsweise jemand seinen Status ändert, muss er die Statusänderung mit dem alten Status und dem neuen Status speichern. Wenn jedoch jemand einen Kommentar hinzufügt, muss der hinzugefügte Kommentar mit der Kommentar-ID gespeichert werden.

Eine Lösung könnte sein, diese Parameter als Nur-Text zu speichern. Wie "oldstatus => neuer Status", "Kommentar 001 hinzugefügt". Aber das scheint nicht wirklich lebensfähig zu sein.

Weiß jemand, wie dies am besten funktionieren könnte?

Antwort

1

können Sie speichern den aktuellen Status in der Fehlertabelle und haben immer eine Geschichte von Statusänderungen in einer anderen Tabelle:

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

Kommentare in der Regel in einem anderen Tisch gehen zu:

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

Beim Abrufen von Daten können Sie alle Kommentare für einen Fehler wie:

select 
from comments 
where comments.bugid = 12 

PS abrufen (Pk) = Primärschlüssel (fk) ist Fremdschlüssel

+0

Der Status wird in der Tabelle beibehalten. Was ich speichern wollte, ist eine Zusammenfassung dessen, was sich so ändert, dass es später leicht wieder abgerufen werden kann. – Ikke

1

ich lieber für jede Änderung einen separaten Eintrag in TaskInfoRevision Tabelle zu halten, mit allen Bereichen wie Status, Kommentar, Eigenschaften, etc. und dann bestimmen, was hat sich in Ihrem Anwendungscode geändert, nicht in der Datenbank selbst.

+0

Kannst du das noch erklären? – Ikke

Verwandte Themen