Ich erstelle Audit-Tabellen für meine Datenbank und muss auswählen, welcher Stil implementiert werden soll. Ich erwäge derzeit drei Optionen, die alle mit Triggern gefüllt werden:
Jede dieser drei Optionen ist machbar, und soweit ich das beurteilen kann, gibt es keine Funktionalität, die man anbietet, die in einem anderen unmöglich ist. Also muss es etwas geben, das ich nicht in Betracht ziehe, oder ein Muster, das mehr Standard ist. Wenn es einen Unterschied macht, muss diese Lösung sowohl für mysql als auch für sql server funktionieren (obwohl ich die Besonderheiten des Codes später ausarbeiten kann).
Audit-Tabellen werden sehr schwer getroffen, Sie wollen nicht nur eine Tabelle für alle Auditing-Vorgänge oder Sie werden blockiert.
Wir machen etwas wie Nummer zwei, außer dass wir zwei Tabellen pro Tabelle haben (eine, die die Änderungen speichert und eine, die die tatsächlichen Daten speichert. Dies macht es einfach, alle Datensätze zu finden, die in einem Amillion-Datensatz gespeichert sind Instanz, da sie alle in derselben Instanz sind, was bedeutet, dass wir Skripts erstellen können, wenn neue Tabellen hinzugefügt werden.
Im zweiten Fall würde ich vorschlagen, einen Proc zu schreiben, um einen bestimmten Datensatz wiederherzustellen, so dass die Wiederherstellung einfach ist und Sie es nicht jedes Mal herausfinden müssen.
Keine Antwort, nur weitere Fragen: Was ist der Zweck Ihrer Audit-Tabellen? Warum willst du sie, brauchst du sie oder musst du sie haben? Wie werden sie genutzt, welche Fragen werden sie beantworten oder welche Situationen werden sie ansprechen? Wie oft oder selten werden sie benutzt? Wie lange müssen Sie diese Daten verfügbar halten und wie werden sie nach dem Ablaufdatum gelöscht oder archiviert?
Die beiden vorhergehenden Antworten [theChrisKen, HLGEM] stimmen dem noch nicht zu - basierend auf dem, woran sie vorher gearbeitet haben - würde ich wetten, dass beide korrekt sind. Wenn Sie darüber nachdenken, wie diese verwendet werden und welche Leistungsanforderungen für diese Verwendung gelten, können Sie damit ermitteln, welches Modell für Ihre Situation am besten geeignet ist.
Ich würde die Nummer 1 wählen. Nummer 2 wäre schwer zu pflegen, wenn Sie zusätzliche Felder zu Ihrem Tracking hinzufügen und fügt sehr wenig neben dem Entfernen der Notwendigkeit einer WHERE-Tabelle =? Klausel. Nummer 3 ist Overkill. Dafür gibt es Backups.
Tags und Links database-design