Ergebnis 1 bis 4 von 4

Thema: Versionsveraltung von Datensätzen in Post

  1. #1
    araxes ist offline Neuer Benutzer
    Registriert seit
    30.11.2009
    Beiträge
    15

    Standard Versionsveraltung von Datensätzen in Post

    (Das Thema sollte natürlich "Versionsverwaltung ..." sein)

    Hallo Zusammen!


    Ich habe eine Frage bzgl. der Verwaltung von Datensätzen in unterschiedlichen Versionen. Ich benötige eine Tabelle in der es möglich sein soll Datensätze zu ändern, in welcher der ursp. Datensatz allerdings erhalten bleiben soll. Jeder Datensatz hat eine Nummer über die er von einem Benutzer angesprochen werden kann, und diese Nummer soll der Primärschlüssel sein. Das Problem ist jetzt, dass der neue Datensatz die selbe Nummer haben muss wie der alte Datensatz und damit nicht angelegt werden kann. Ein kombinierter Schlüssel geht auch nicht, denn dann kann ich „references“ nicht mehr verwenden.


    Mal ein Beispiel:


    Tabelle Personalstamm:
    Personalnummer (Primärschlüssel), Vorname, Nachname, Steuerklasse, Timestamp
    100 Claudia Fraglich 1 2008-12-12 .....
    100 Claudia Musterman 3 2010-04-20 .....


    Ich benötige beide Versionen des Datensatzes in der Tabelle (oder wenigstens in der Datenbank), zum einen um Änderungen zu dokumentieren und zum anderen und bei Bedarf auf den alten Datensatz zugreifen zu können wenn in einer Abfrage die Daten vor dem 20.04.2010 benötigt werden (z.B. für Nachdrucke o.ä.).


    Außerdem würde bspw. in anderen Tabellen (z.B. Lohn) auf die Tabelle PErsonalstamm referenziert, so dass der Lohn nur für vorhandenen Personalnummern abgerechnet werden kann.


    Tabelle Lohn:
    Personalnummer (references Personalstamm), Stunden, Stundenlohn
    100 180 14,00


    Meine Frage ist nun: Wie kann ich das Problem mit dem Primärschlüssel umgehen? Einen kombinierten Schlüssel möchte ich nicht verwenden, denn dann kann ich „references Personalstamm“ nicht mehr verwenden. Gibt es in PostgreSQL evtl. eine eingebaute „Versionsverwaltung von Datensätzen“?


    Wenn es das nicht gibt, habt Ihr eine Idee wie man so etwas lösen kann? Ich denke es wäre möglich in dem in der Tabelle Personalstamm nur die jeweils aktuelle Version der Datensatzes stehen würde und die „historischen“ Daten immer in eine zweite Tabelle kopiert werden würden auf die bei Bedarf zugegriffen werden kann.

    Oder aber alle Versionen stehen weiterhin in nur einer Tabelle und ich setzte noch eine andere Tabelle davor die nur auf die jeweils aktuelle Version des Datensatzes zeigt. Etwa so:


    Tabelle Personalstammgesamt:
    Intern (Primärschlüssel), Personaln., Vorname, Nachname, Steuerklasse, Timestamp
    10000 100 Claudia Fraglich 1 2008-12-12 .....
    10001 100 Claudia Musterman 3 2010-04-20 .....


    Tabelle Personalstammaktuell:
    Personaln. (Primärschlüssel), Intern (references Personalstammgesamt)
    100 10001


    Hat jemand dazu eine Idee?

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.018

    Standard

    Wirf doch mal einen Blick hier drauf:

    10:50:27 < ads> ??tablelog
    10:50:27 < pg_docbot_adz> For information about 'tablelog' see:
    10:50:28 < pg_docbot_adz> Log Table Changes in PostgreSQL with tablelog - ads' corner
    10:50:28 < pg_docbot_adz> PgFoundry: Table Audit: Project Info
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    araxes ist offline Neuer Benutzer
    Registriert seit
    30.11.2009
    Beiträge
    15

    Standard

    Danke!
    Schau ich mich mal an!

  4. #4
    Gisman ist offline Erfahrener Benutzer
    Registriert seit
    20.01.2006
    Ort
    Pfalz
    Beiträge
    751

    Standard

    Ich habe gute Erfahrungen damit gemacht, solche IDs nicht als Schlüssel zu verwenden, eben weil sich da durch menschliche Eingriffe eigentlich immer Komplikationen ergeben. Meist nutze ich eine Sequence als "Schlüsselgenerator" die vom Nutzer nicht verändert werden kann. Zur Versionsverwaltung kann man dann ein Ungültig-Flag oder ein Datumsfeld benutzen. Das kann man dann auch in einer Tabelle verwalten solange die veralteten nicht sehr viel mehr als die gültigen Daten sind.

    Gruß Uwe
    Have a lot of fun!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum