Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Datensicherheit

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von NeoPrince, 17 Januar 2013.

  1. NeoPrince

    NeoPrince Aktiver Benutzer

    Hallo ihr lieben.

    Ich soll/möchte in der schule ein Referat über die Sicherung von Daten auf der Anwendungsebene halten. Dabei geht es nicht darum Daten vor einem Ausfall der Festplatte oder einem Brand im Serverraum zu schützen, sondern z.B. vor dem versehentlichen Löschen durch einen User, oder um nachzuvollziehen welcher User einen Datensatz zuletzt geändert hat.
    Gibt es hier irgendwelche Techniken, um so etwas im Datenbankdesign abzufangen?
    Aus meiner Firma kenne ich folgende beispiele:

    1:
    In der Tabelle wird in einem Feld User immer der User gespeichert, der den Datensatz zuletzt bearbeitet hat, dazu kommt dann noch ein Timestamp, der Änderung. zusätzlich gibt es ein gelöscht Flag. ist es gesetzt werden in der Anwendung diese Datensätzen nicht mehr angezeigt. so ist der Datensatz noch vorhanden und kann einfach wiederhergestellt werden.

    2:
    wie oben gibt es den User und Timestamp, der Datensatz wird aber nicht mehr geändert, sondern bei jeder Änderung neu erstellt, angezeigt wird in der Anwendung der Datensatz mit dem aktuellsten Timestamp. so kann man nachvollziehen wann wer welchen Datensatz wie bearbeitet hat.

    Gibt es für so etwas noch weitere Techniken oder auch Backuptools die soetwas für mich tun?
    Und ist so etwas Vieleicht in irgendwelchen Standards RFC DIN etc geregelt?

    Grüße Neo
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Lösung 1) hat den Nachteil, daß Änderungen (UPDATE) so nicht rückverfolgbar sind, Lösung 2) hat den Nachteil, daß die Tabelle jede Menge unnötiger Tupel besitzt.

    Daher Lösung 3:

    via TRIGGER auf Update und Delete werden die 'alten' Datensätze in einer Logtabelle (mit User, Timestamp, Aktion) gespeichert.

    Ob es da ein RFC gibt weiß ich aber nicht.


    Andreas
     
  3. ukulele

    ukulele Datenbank-Guru

    Ich verwende auch Lösung 3, kenne aber auch Lösung 1 aus Anwendungssoftware. Einen Automatismus zum Loggen von Änderungen habe ich aber auch noch nicht gefunden, daher muss man sich den Trigger selber bauen.

    Zu Lösung 3 sei noch gesagt das diese Art von Logging häufig auch in Textdateien erfolgt oder in der DB die Tabelle dann neuen Wert (ggf. auch alten Wert) in eine Textspalte schreibt. Das macht natürlich eine Auswertung oder Rückführung schwieriger.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Exakt. Falls mal jemand eine erprobte Lösung für PostgreSQL sucht: http://andreas.scherbaum.la/blog/archives/100-Log-Table-Changes-in-PostgreSQL-with-tablelog.html
    (ist ein guter Freund von mir)

    Andreas
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden