Einzelnen Beitrag anzeigen

NoName1

Registriert seit: 8. Mär 2018
196 Beiträge
 
Delphi 11 Alexandria
 
#1

Tabellenaufbau

  Alt 28. Mär 2019, 17:57
Datenbank: interbase • Version: egal • Zugriff über: egal
Guten Tag,
ich möchte für meine kleine, spezielle Vereinssoftware eine Zugriffshistory anlegen.
Dies wird nach der Datenschutzgrundverordnung verlangt.
In dieser History soll abgelegt werden:
Wer hat sich wann am Programm angemeldet und was hat er in welchem Programmteil getan.
Auch soll eine Auswertung in Form eines Druckes enthalten sein,
a) über alle Aktivitäten und auch
b) speziell für einen Programmnutzer.
Dazu dachte ich mir, das ich 3 Tabellen benötigen werden.
Da sehr wahrscheinlich sehr viele Zugriffe über das Jahr verteilt stattfinden werden,
möchte ich keine Generatoren als PrimaryKey verwenden, sondern den Hauptschlüssel der Tabellen über 2 Spalten erzeugen.
So wie ich es im Codebeispiel zeige, kann es nicht funktionieren. Ich muss ja die Tabellen mit einander über die Hauptschlüssel
verbinden und dies ist in meinem Beispiel sehr unglücklich gelöst.

Deshalb meine Fragen:
a) Wie würdert Ihr es lösen?
b) Wie würdet Ihr den Hauptschlüssel aufbauen?

1. Tabelle Anmeldung
2. Tabelle Protokolle
3. Tabelle Abmeldung

Delphi-Quellcode:
dtmdMain.bpsql.Close;
    dtmdMain.bpsql.SQL.Clear;
    dtmdMain.bpsql.SQL.Add('create table ProtAnmeldung ( '
      + 'angemeldetam timestamp not null, '
      + 'adressid integer not null, '
      + 'brdname do62 )');
    dtmdMain.bpsql.Prepare;
    dtmdMain.bpsql.ExecQuery;

    dtmdMain.bpsql.Close;
    dtmdMain.bpsql.SQL.Clear;
    dtmdMain.bpsql.SQL.Add('alter table protanmeldung add primary key (angemeldetam, adressid) ');
    dtmdMain.bpsql.Prepare;
    dtmdMain.bpsql.ExecQuery;

    dtmdMain.bpsql.Close;
    dtmdMain.bpsql.SQL.Clear;
    dtmdMain.bpsql.SQL.Add('create table protokolle ( '
      + 'loprotokolleid timestamp not null, '
      + 'adressid integer not null, '
      + 'menuename do50, '
      + 'protokoll blob )');
    dtmdMain.bpsql.Prepare;
    dtmdMain.bpsql.ExecQuery;

    dtmdMain.bpsql.Close;
    dtmdMain.bpsql.SQL.Clear;
    dtmdMain.bpsql.SQL.Add('alter table protokolle add primary key (loprotokolleid, adressid) ');
    dtmdMain.bpsql.Prepare;
    dtmdMain.bpsql.ExecQuery;

    dtmdMain.bpsql.Close;
    dtmdMain.bpsql.SQL.Clear;
    dtmdMain.bpsql.SQL.Add('create table protabmeldung ( '
      + 'abgemeldetam timestamp not null, '
      + 'adressid integer not null )');
    dtmdMain.bpsql.Prepare;
    dtmdMain.bpsql.ExecQuery;

    dtmdMain.bpsql.Close;
    dtmdMain.bpsql.SQL.Clear;
    dtmdMain.bpsql.SQL.Add('alter table protabmeldung add primary key (abgemeldetam, adressid) ');
    dtmdMain.bpsql.Prepare;
    dtmdMain.bpsql.ExecQuery;
Vielen Dank für Eure fachmännischen Hilfen im Voraus.
  Mit Zitat antworten Zitat