Announcement

Collapse
No announcement yet.

Gutes Datenbankdesign mit Historie

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Gutes Datenbankdesign mit Historie

    Hallo,

    wie sieht ein gutes Datenbankdesign aus, in dem die Änderungen protokolliert werden.

    Nehmen wir mal als Beispiel eine Kontakt-Datenbank. Die Datenbank enthält neben der Person auch die Adresse.

    tblPerson -> Anrede, Vorname, Name, Geburtstag
    tblAdresse -> PersonId, Strasse, Plz, Ort

    Wenn ich jetzt die Adresse ändere, habe ich zwei Möglichkeiten. Ich erweitere die tblAdresse mit einem Datums-Feld "Ab" und lass mir als Adresse immer die Zurückgegeben, die mit dem höchsten Datum.

    Oder als zweite Möglichkeit kopiere ich die Originaldaten in eine Tabelle tblAdresseHistorie und füge dort das Änderungsdatum ein. Dies läßt sich ja sehr leicht durch einen Trigger realisieren.

    Was meint Ihr, was ist die besser Historie-Möglichkeit. Oder gibt es evtl. noch einen anderen Weg?

    Gruß

  • #2
    Hallo itso,
    da du wahrscheinlich in den meisten Fällen nur die aktuelle Adresse haben möchtest halte ich die zweite Möglichkeit mit den Triggern für die bessere Variante. Außerdem hast du dann auch die tatsächlichen Daten von den historischen getrennt.
    Wenn du mit SQL Server 2008 arbeitest kannst du auch CDC verwenden. Das wurde genau dazu entwickelt. Falls du es mit der 2005er Version umsetzten möchtest solltest du zusätzlich an DDL-Trigger denken falls sich das Schema der Tabelle(n) ändert.

    LG chapster

    Comment


    • #3
      Das mit den Triggern hat einen großen Nachteil - man muss es genau zum richtigen Zeitpunkt machen. Wenn nämlich jemand sagt, in zwei Wochen wäre er an einer neuen Adresse, dann muss man mit dem Ändern zwei Wochen warten (und darf es dann nicht vergessen), im anderen Fall kann man die Änderung gleich in das System eintragen, man muss nur beim Zugriff darauf aufpassen, welches Tagesdatum man hat und darf nicht automatisch den Eintrag mit dem höchsten Datum nehmen.

      bye,
      Helmut

      Comment

      Working...
      X