Apparo Fast Edit: Einfügen von Daten in mehreren Tabellen – TEIL 1: INSERT Post Script

Mehrere Tabellen mit Apparo Fast Edit befüllen

Ein Business Case in Apparo Fast Edit basiert grundsätzlich auf einer zentralen Tabelle. Diese Tabelle bildet die technische Grundlage für die Eingabemaske. Der Anwender sieht und bearbeitet also Datensätze, die aus genau dieser Struktur kommen.

In der Praxis gibt es aber häufig Datenmodelle, bei denen fachlich zusammengehörige Informationen in mehreren Tabellen gespeichert werden. Ein typisches Beispiel ist ein Produktmodell mit zwei Tabellen:

  • eine Produkttabelle mit Produktnummer und Preis
  • eine Sprachentabelle mit Produktnummer, Sprachencode und Produktname

Der Preis gehört also direkt zum Produkt. Der Produktname ist dagegen sprachabhängig und wird separat gespeichert.

Die Herausforderung

Der Anwender soll in Apparo Fast Edit möglichst einfach arbeiten. Er möchte nicht wissen müssen, dass im Hintergrund mehrere Tabellen beteiligt sind. Er möchte einfach eine Produktnummer, einen Preis und einen Produktnamen eingeben.

Technisch schreibt der Business Case aber zunächst nur in seine Basistabelle. Wenn zusätzlich Werte in eine zweite Tabelle geschrieben werden sollen, braucht man eine kontrollierte Zusatzlogik.

Das Beispiel-Datenmodell

Die Produkttabelle könnte beispielsweise so aussehen:

CREATE TABLE produkt (
    produktnummer INTEGER PRIMARY KEY,
    preis NUMERIC(10,2) NOT NULL
);

Die Sprachentabelle enthält die sprachabhängigen Produktnamen:

CREATE TABLE produkt_sprache (
    produktnummer INTEGER NOT NULL,
    sprachencode VARCHAR(2) NOT NULL,
    produktname VARCHAR(200) NOT NULL,

    PRIMARY KEY (produktnummer, sprachencode)
);

Die Lösung: Eingabefelder mit Variablen in Apparo Fast Edit

Für diesen Ansatz müssen keine zusätzlichen Platzhalterspalten in der Datenbank angelegt werden. Apparo Fast Edit kann mit Variablen arbeiten. Der Anwender erhält Eingabefelder, deren Werte nicht direkt in einer Tabellenspalte gespeichert werden, sondern zunächst in Variablen.

Diese Variablen können anschließend in einem Skript verwendet werden. Der Produktname wird also vom Anwender eingegeben, in einer Variable gespeichert und danach per Skript in die zweite Tabelle geschrieben.

Im Beispiel könnte der eingegebene Produktname über eine Variable wie diese bereitstehen:

<%Produktname%>

Auch die Sprache kann über ein Eingabefeld oder eine Auswahlliste abgefragt werden, zum Beispiel als Variable:

<%Sprache%>

Die Produktnummer und der Preis kommen direkt aus der Basistabelle des Business Case.

Damit stehen alle benötigten Informationen zur Verfügung:

  • Produktnummer aus der Basistabelle
  • Preis aus der Basistabelle
  • Sprache aus einer Fast-Edit-Variable
  • Produktname aus einer Fast-Edit-Variable

Lookup für bestehende Übersetzungen

Zusätzlich kann Apparo Fast Edit über Lookups bestehende Werte aus anderen Tabellen anzeigen. So könnte beispielsweise der aktuelle Produktname aus der Sprachentabelle eingeblendet werden.

Der Anwender sieht dadurch sofort, ob bereits eine Übersetzung vorhanden ist. Gleichzeitig bleibt der Business Case technisch weiterhin auf seiner Haupttabelle basiert.

Ein englischer Benutzer könnte also beispielsweise sehen:

Produktnummer: 123
Preis: 10,00
Aktueller englischer Name: leer

Dadurch erkennt der Benutzer sofort: Das Produkt existiert bereits, aber die englische Übersetzung fehlt noch.

Eingabe im Business Case

Der Anwender pflegt anschließend beispielsweise folgende Werte:

Produktnummer: 123
Preis: 15,00
Sprache: EN
Produktname: Chair

Die Werte für Sprache und Produktname landen zunächst nur in den Fast-Edit-Variablen. Nach dem Speichern des Datensatzes wird automatisch ein Skript ausgeführt.

Post-Skript zum Schreiben in die Sprachentabelle

Das Skript übernimmt die Werte aus den Variablen und schreibt sie in die Sprachentabelle. Falls der Spracheintrag bereits existiert, wird er aktualisiert. Falls er noch nicht existiert, wird er neu eingefügt.

Für PostgreSQL könnte das beispielsweise so aussehen:

INSERT INTO produkt_sprache (
    produktnummer,
    sprachencode,
    produktname
)
VALUES (
    <%Produktnummer%>,
    '<%Sprache%>',
    '<%Produktname%>'
)
ON CONFLICT (produktnummer, sprachencode)
DO UPDATE SET
    produktname = EXCLUDED.produktname;

Der Preis wird dagegen direkt in der Produkttabelle aktualisiert, weil diese Tabelle die eigentliche Basis des Business Case ist.

Warum dieser Ansatz interessant ist

Der große Vorteil dieses Ansatzes besteht darin, dass der Business Case technisch einfach bleibt. Apparo Fast Edit arbeitet weiterhin mit einer zentralen Basistabelle.

Gleichzeitig kann im Hintergrund ein deutlich komplexeres Datenmodell gepflegt werden. Zusätzliche Tabellen werden nicht direkt vom Business Case beschrieben, sondern kontrolliert über Skripte aktualisiert.

Dadurch eignet sich dieser Ansatz besonders für Datenbanken, bei denen keine schreibbaren Views mit INSTEAD-OF-Triggern verwendet werden sollen oder können, beispielsweise PostgreSQL.

Fazit

Mit Variablen und Post-Skripten kann Apparo Fast Edit auch komplexere Datenmodelle sauber unterstützen. Der Business Case bleibt auf einer zentralen Tabelle basiert, während zusätzliche Informationen über Variablen aufgenommen und anschließend per Skript in weitere Tabellen geschrieben werden.

Dadurch entsteht eine flexible Lösung für mehrtabellige Szenarien, ohne dass der Anwender die technische Komplexität des Datenmodells kennen muss.

Jens Bäumler (Apparo Group)

Ähnliche Themen

WP Twitter Auto Publish Powered By : XYZScripts.com