Datenbank

Das Datenbank-Modell der easydb ist flexibel und kann von Ihnen an Ihre Bedürfnisse angepasst werden. Das Web-Frontend der easydb macht sehr wenig Vorgaben in Hinblick auf die Daten-Modellierung, Tabellen- oder Spalten-Namen (Felder). Nur in Einzelfällen, wie beispielsweise beim Connector, benötigt der easydb Code bestimmte Tabellen und Spalten-Namen, um zu korrekt zu funktionieren.

Nutzen Sie den Datenbank-Reiter des easydb Creators, um das bereits vorhandene Datenmodell anzupassen, neue Tabellen anzulegen, Spalten hinzuzufügen oder zu ändern. easydb speichert das von Ihnen gewünschte Datenmodell intern in der Web-Frontend-Sqlite-Datenbank in den Tabellen eadb_tables und eadb_columns.

Mit einem expliziten manuellen Sync Database-Button, können Sie das Datenmodell der SQL-Datenbank auf das von Ihnen gewünschte akutalisieren lassen. Dabei werden neue Tabellen und Spalten angelegt, Tabellen- und Feld-Namen geändert und auch Tabellen oder Spalten gelöscht. Vor dem Löschen erfolgt keine Warnung, seien Sie sich also sicher!

1
2
3
4
5

Klicken Sie auf die aktuell ausgewählte Tabelle 1, um eine andere Tabelle zu bearbeiten oder eine neue anzulegen.

Die Undo/Redo Funktionalität finden Sie hier 3.

Die Browser-Titel-Leiste 2 zeigt die aktuelle Version des Designs des Datenmodells. Wenn die Version der Datenbank älter ist (kleinere Versionsnummer), erscheint der Button Sync Database und ein Hinweis 5.

Tablename Name der Tabelle. Benutzen Sie nach Möglichkeit nur Kleinbuchstaben, keine Leerzeichen, ggfs. Unterstrich und Zahlen.
Screen Name Für die Anzeige im Admin-Bereich Datenrechte wird der Screen Name verwendet.
Tree Support Wenn gesetzt, verwaltet easydb diese Tabelle als hierarchische Tabelle. Damit stehen beim Masken-Bau erweiterte Anzeige- und Suchmöglichkeiten zur Verfügung. Intern wird der Tabelle eine Spalte fk_father_id hinzugefügt. Diese Spalte enthält die ID des Vater-Eintrages und bildet somit die Hierachie ab.

Mit On Delete Restrict können Sie die Hierachie auf ON DELETE RESTRICT stellen, so dass die Datenbank das Löschen von Objekten verbietet, zu denen noch Kinder existieren. Seit Version 4.0.140

InnoDB Nur für MySQL-Datenbanken: Wenn gesetzt, wird die Tabelle mit der Datenbank-Engine InnoDB verwaltet. Bitte beachten Sie, dass MySQL nur mit der InnoDB-Engine Foreign Keys verwalten kann. In InnoDB gibt es aber keine Unterstützung für FULLTEXT.
No Table Rights Wenn gesetzt, zeigt easydb diese Tabelle im Admin-Bereich Datenrechte nicht an. Setzten Sie diesen Paramater für n-m-Link-Tabellen und n-1-Tabellen für Wiederholgruppen. Das Rechtemanagement der easydb überprüft die Rechte nur an Hand der Haupt-Tabelle für die Objekte.
Track Update /Create Wenn gesetzt erstellt easydb automatisch die folgenden Spalten:
  • easydb_owner Die user_id des Erstellers des Objektes, dieses fängt immer mit user_ an.
  • easydb_insert_time Zeitpunkt der Erstellens.
  • easydb_insert_user Ersteller als String.
  • easydb_update_time Zeitpunkt der letzten Änderung.
  • easydb_update_user Benutzer der zuletzt geändert hat als String.

Diese Option muss bei Tabellen unbedingt gesetzt sein, für die Rechte aus der easydb 3 migriert werden sollen.

Die gesetzte Option ist auch Voraussetzung dafür, dass die Ersteller-Rechte im Rechtemanagement funktionieren.

Allow Export Speichert die Definition in einem eigenen Nummern-Kreis (easydb-id * 10^6) und erlaubt damit das Exportieren über das easydblink-Modul. Seit Version 4.0.130..
Enable SQL Changelog Wenn gesetzt wird per Datenbank-TRIGGER jede INSERT, UPDATE und DELETE in die Tabelle eadb_table_sql_changelog protokolliert. Diese Daten können dann von anderen easydbs per easydblink-Modul importiert werden. D.h. diese Datenbank ist das Daten-Master und es werden andere easydbs mit diesen Daten beliefert. Seit Version 4.0.130.. Nur für PostgreSQL verfügbar.
Skip Schema Sync Wenn gesetzt, macht easydb keine Schema-Updates in der Datenbank und ignoriert diesbezüglich die Tabelle. Bitte beachten Sie: Das Ignorieren bezieht sich nur auf Column-Updates und Indices, nicht auf das Löschen der Tabelle! Seit Version 4.0.168.
Custom SQL SQL Statements, die nach der Synchronisation dieser Tabelle ausgeführt werden. Hier können Sie beispielsweise UNIQUE Indices anlegen, die über mehr als eine Spalte gehen. Bitte beachten Sie, dass folgende Regeln gelten:

  • Multiline-Statements müssen am Ende ein Backslash+Return als Zeilenumbruch verwenden (wie bei Javascript).

Alternativ können Sie für PostgreSQL auch easydb’s Multiline-Notation verwenden:

  • --- beginnt mehrzeiliges Statement.
  • ---try: begint mehrzeiliges Statement mit SAVEPOINT zu dem ein ROLLBACK ausgeführt wird, wenn das Statement fehlschlägt.
  • ---include: <file> Inkludiert <file> relativ zum easydb-Docroot.

easydb wirft vor jeder Synchronisation der Tabelle alle angelegten Indices weg und legt sie neu an. Bei größeren Tabellen kann dies zu längeren Wartezeiten führen in den die easydb nicht benutzt werden kann.

Seit Version 4.0.199 wird vor jedem Sync-Lauf als erstes das Script <easydb-root>/docroot/instances/<instance>/sql/pre_sync_schema.sql und als letztes das Script <easydb-root>/docroot/instances/<instance>/sql/post_sync_schema.sql ausgeführt. Das SQL folgt dabei derselben Notation wie Custom SQL.

Spaltendefinitionen (an)

In der Tabelle der gibt es die folgenden Spalten:

Spalte Beschreibung
Id Interne ID der Spalte (eadb_columns.id). Diese ist über die gesamte easydb UNIQUE. Die Driver und Content-Driver nutzen diese Spalten-ID zur Maskenverwaltung, nicht den Namen der Spalte. Aus diesem Grund können Sie den Spalten-Namen später noch ändern ohne Ihre Masken ändern zu müssen.
Column Der Name der Spalte. Benutzen Sie nach Möglichkeit nur Kleinbuchstaben, keine Leerzeichen, ggfs. Unterstrich und Zahlen. Der Name der Spalte muss innerhalb der Tabelle eindeutig sein.
Type Der Spalten-Typ ist in der nachfolgenden Tabelle näher erklärt. Bitte beachten Sie, dass nicht alle Typen in alle anderen Typen geändert werden können. easydb nutzt zur Änderung des Typs SQL und sendet dieses an die Datenbank. Je nach Datenbank-Version können bestimmte Typen nicht in anderen verändert werden. Manchmal hilft es, erst den Typ TEXT zu wählen, dann zu synchronisieren und erst dann den gewünschten Typ einzustellen.
LinkPrio Einstellung für Link-Spalten, die Einfluss auf das easydb-Rechtemanagement nehmen. Wenn gesetzt, bestimmen Objekte dieser Tabelle die Rechte an den Objekten der verlinkten Tabelle. (Nur bei Spalten vom Typ Link: <Tabelle>.)
Screenname Name der Spalte in der Changelog Anzeige. Seit Version 4.0.168 wird der Screename auch zur Fehlerausgabe beim Speichern benutzt. Ebenfalls seit Version 4.0.168 kann für den Screenname %l10n.<key> verwendet werden, um den Namen im String-Tool übersetzbar zu machen.
DELETE CASCADE Option für FOREIGN KEYs (Type=Link). Wenn gesetzt wird der FOREIGN KEY mit einem ON DELETE CASCADE versehen, sonst mit ON DELETE RESTRICT. Diese Option ist für MySQL nur verfügbar, wenn InnoDb gesetzt ist. Wenn EASYDB CASCADE gesetzt ist, wird kein FOREIGN KEY angelegt.
EASYDB CASCADE Wenn gesetzt, werden beim Löschen eines Objektes über den easydb Editor verlinkte Objekte per SQL gelöscht. Benutzen Sie diese Option für MySQL-Tabellen (nicht InnoDB) und generell für Arbeitsmappen in denen easydb-Connector-Objekte gesammelt werden. Für MySQL-MyISAM Tabellen wird bei inaktivem EASYDB CASCADE, der verlinkte Wert auf NULL gesetzt.
NOT NULL Bestimmt, ob die Spalte NULL sein darf oder nicht. Seit Version 4.0.168 überprüft easydb automatisch vor dem Speichern von edit-Masks, ob betroffenen Felder ausgefüllt sind oder nicht.
UNIQUE Bestimmt, ob die Spalte UNIQUE ist, d.h. ein Wert nur einmal vorkommen darf.
INDEX Wenn gesetzt wird für diese Spalte ein Index angelegt. Bei Type=Link wird automatisch ein Index angelegt.

Übersicht der Spalten-Typen

Type MySQL PostgreSQL Bemerkungen
Text (Fulltext) longtext text Dies ist das empfohlene Textformat. Für MySQL und vor Version 4.0.159 heisst dieser Typ Text (no limit). Dieser Text wird in einer Länge von bis zu 1.000.000 Buchstaben Volltext-indiziert.
String (No Fulltext) varchar(255) text Vor Version 4.0.159 war der Datentyp character varying(255). Für MySQL und vor Version 4.0.159 heisst dieser Typ Text (255).
Text (Array) Nicht unterstützt text[] Dieser Datentyp wird für den RDF-Support verwendet und dient zum Abspeichern von Text-Arrays. Es gibt für die Ein- und Ausgabe derzeit nur Unterstützung im RDF-Modul. Seit Version 4.0.287.
Binary longblob bytea  
easydb-3 Image  int(11) integer Dieser Spaltentyp wird nicht mehr verwendet und findet sich in einigen migrierten easydb der Version 3.
Easydb Asset Server File int(11) integer easydb speichert hier die EAS-ID.
Number bigint(20) bigint  
Decimal (precision 1) int(11) integer easydb speichert die Zahl als Integer (*10), (version) Seit Version 4.0.310 werden die Zahlen mathematisch gerundet.
Decimal (precision 2) int(11) integer easydb speichert die Zahl als Integer (*100), (version) Seit Version 4.0.310 werden die Zahlen mathematisch gerundet.
Decimal (precision 3) int(11) integer easydb speichert die Zahl als Integer (*1000), (version) Seit Version 4.0.310 werden die Zahlen mathematisch gerundet.
Integer int(11) integer  
Currency int(11) integer easydb speichert dieses Feld wie ein Decimal 2 Feld. Die Ausgabe wird automatisch formatiert, Einstellung in den Config-Variablen CURRENCY_DEC_POINT und CURRENCY_THOUSANDS_SEP. Seit Version 4.0.310.
Double double precision double precision Seit Version 4.0.199.
Date date date  
Date+Time datetime timestamp(0) with time zone  
Boolean tinyint(1) boolean  
Link: <Tabelle> bigint(20) bigint Beim Typ Link wird automatisch ein FOREIGN KEY angelegt.