dedlfix: Welche Umsetzung ist seriöser?

Beitrag lesen

Hi!

  1. Ich habe eine Zuordnungstabelle, die grundsätzlich 2 Dinge festhält, nämlich die UserID und die AktionenID. Dieser Tabelle könnte ich jedes mal die 5 variablen Userdaten mitgeben, sodaß ich diese Daten redundant vorhalte.

Das wäre eine sehr einfache Möglichkeit, die auf Kosten des Speicherplatzes geht - was jedoch vermutlich nicht gravierend relevant ist. Beim Abfragen der historischen Daten hast du mit einer unverknüpften Abfrage alles beisammen, was den User betrifft. Diese Vorgehensweise entspricht auch eher der eines Papier-Büros, bei dem jedes Schreiben erneut mit Adressdaten versehen ist.

  1. Ich halte ja ohnehin fest, zu welchem Zeitpunkt der User welche Aktion macht. Wenn ich nun jede Adressänderung mit Datum in einer eigenen Tabelle festhalte, könnte ich zum Ausgabezeitpunkt dynamisch die chronologisch korrekte Adresse ermitteln.

Du hast dann also eine Usertabelle mit der aktuellen Adresse und eine weitere mit den historischen Adressen? Das ist beim Erstellen einer Abfrage recht aufwendig, weil du da auch immer eine "ist zeitlich am nächsten dran"-Bedingung formulieren musst. Dazu selektiert man in der Regel die Daten älter oder jünger vom gefragten Zeitpunkt (je nachdem, ob das Bis- oder das Von-Datum gespeichert wurde), sortiert den Rest chronologisch und nimmt davon nur den ersten/letzten Datensatz. Mitunter lässt sich solch eine Limitierung nicht in einer Unterabfrage unterbringen.

Aber wenn du sowieso schon eine extra Tabelle für Adressdaten anlegst, lass doch die Adresse in den Userdaten ganz weg und kennzeichne eine Adresse als aktuell. (Mit diesem Flag entfällt die "neueste"-Abfrage. Das Flag kann gezielt im WHERE angegeben werden.) Zu jedem Zeitpunkt lässt sich über die User-ID und eine Adressen-ID die damals gültige Adresse festhalten. Du ermittelst also die Adresse nicht aus der User-ID und dem Datum im Aktionen-Datensatz sondern über eine dort hinzugefügte Adressen-ID.

Sicherlich kann Version 2 sehr viel Speicherplatz einsparen. Aber da ich mir nicht sicher bin, welche der beiden Varianten seriöser, nachhaltiger, sicherer (mir fällt kein geeigneterer Begriff ein) ist, frage ich hier nach.

Seriösität ist nicht so wichtig. Effektivität und Effizienz sind in meinen Augen die maßgebenden Kriterien.

Lo!