Datenbank
Inhaltsverzeichnis |
Einführung
easyLogic baut auf einer SQL-Datenbank auf. Da als Datenbank-Server Microsoft SQL Server (üblicherweise Version 2005) eingesetzt wird, stehen die Besonderheiten des Dialekts Transact-SQL (T-SQL) zur Verfügung — dazu gehören diverse Erweiterungen, die im SQL-Standard nicht enthalten sind.
Das direkte Arbeiten an der Datenbank bietet sich insbesondere in drei Arten von Fällen an:
- Prozesse oder Teile davon (z.B. Plausibilitätsprüfungen) abbilden. Hierzu werden meist Trigger angelegt, die eine Speicher- oder Zuordnungsvorgang des Anwenders abfangen und überprüfen oder ggfs. weiterverarbeiten. Bei tiefergehenden Vorgängen sind auch Stored Procedures einsetzbar; seltener hier ist die Verwendung eigener Funktionen, Sichten oder Tabellen.
- Anpassungen, die sich mit dem easyLogic-Client nicht abbilden lassen, deren Ergebnis dieser wohl aber auswerten kann. Für diverse Sonderfälle haben wir noch keine umfassende Oberfläche.
- Eigene, nur indirekt an easyLogic gekoppelte Tabellen, die z.B. importierte oder zu exportierende Datenbestände enthalten.
Zentrale Abläufe
Speichern eines neuen Datensatzes (Container)
Wenn ein neuer Datensatz erzeugt wird, erfolgen in der Datenbank folgende Operationen:
- Erzeugen des Containers in
dbo.container
Der Name und Container-Typ des Datensatzes werden gespeichert.
- Erzeugen der Verknüpfung des Containers
Damit der Container später auffindbar bleibt, wird dieser zugeordnet.- in [#dbo.zContainer
dbo.zContainer]
Wird der Container aus einer Container-Liste (z.B. von Kontakten) heraus erzeugt, so verknüpfen wir diesen wiederum mit der Liste. Dazu verwenden wir aus dbo.container die ID des neuen Datensatzes (DatensatzID), und die der Liste (ZuordnungsID). Aus dbo.container_inhalt oder dbo.container_steuerelemente entnehmen wir die ID der Kategorie (entweder ein Reiter, oder ein Steuerelement), die die Liste enthält (ZuordnungsKat).
oder - in [#dbo.zContainer
dbo.container_struktur]
Falls der Container über das Kontext-Menü des Explorers erzeugt wird, erscheint ein neuer Eintrag in der Baum-Position. Auch hier werden beide IDs aus dbo.container gebraucht: sowohl die des neu angelegten Containers (Container_ID), als auch die des zukünftig im Explorer übergeordneten (Parent_ID).
- in [#dbo.zContainer
- Bei einem Reiter mit Feldern: Speichern der Feld-Inhalte des Containers in der jeweiligen [#dbo.zz
zz-Tabelle].
- (optional) weitere Verarbeitung durch Trigger
Nun werden etwaige (durch dasINSERToderUPDATE-Statement der zz-Tabelle ausgelöste) Trigger ausgeführt, mit denen wir erweiterte Programmlogik (Berechnungen, Verknüpfungen, etc.) umsetzen können.
Zuordnungen zu einer Container-Liste
Werden Container einer Container-Liste zugeordnet, so werden bereits beim Abschluss des Drag&Drop-Vorgangs Einträge in der zContainer-Tabelle gemacht; nicht erst beim Speichern.
Erstellen von Steuerelementen im Editor
Wenn im Editor ein neues Feld in einem Reiter gezogen und gespeichert wird, erfolgen die folgenden Datenoperationen:
- Speichern des [glossar.html#steuerelement Steuerelements] in [#dbo.container_steuerelemente
dbo.container_steuerelemente]
- Anpassen des Tabellen-Schemas der zugehörigen [#dbo.zz
zz-Tabelle]
Für das neue Element wird eine Spalte angelegt, die mit dem passenden Datentyp (varchar(255), boolean, etc.) deklariert wird, und im folgenden die Inhalte des Felds aufnimmt. Der Name der Spalte istc<ID>, z.B.c153für das Steuerelement, dessen ID in container_steuerelemente 153 ist. - Generieren der Sichten
Für den aktuellen Container-Typ, unabhängig von dessen Reiter, werden alle Sichten neu generiert.
Erstellen von Reitern im Editor
Wenn im Editor ein neuer Reiter erzeugt wird, so wird ein Eintrag in [#dbo.container_inhalt dbo.container_inhalt] hinzugefügt.
Beim [handbuch.html#reiter-typ-felder Typ des Reiters] Felder (8) wird zusätzlich eine neue [#dbo.zz zz-Tabelle] angelegt.
SQL-Trigger
Durch den Einsatz von SQL-Triggern haben wir die Möglichkeit, auch unabhängig von den Begrenzungen eines Container-Typs Funktionen umzusetzen.
Mit Hilfe von kompakten Statements können wir Daten erfragen, verändern und erzeugen.
Dabei lassen sich neue Verknüpfungen, Berechnungen, Überprüfungen von Werten und auch logische Fallunterscheidung in wenigen Code-Zeilen umsetzen.