Die easydb speichert Metadaten in einer SQL-Datenbank. Daten werden grundsätzlich in Tabellen gespeichert, die aus Spalten (Felder) und Zeilen (Objekte oder Records) bestehen. Komplexere Strukturen werden in mehreren Tabellen abgelegt und die Objekte aus den Tabellen miteinander verbunden.
Dieser Artikel gibt einen kurzen Überblick über die Strukturen wie sie von der easydb Datenmodellierung benutzt werden.
Fotograf
|id |name |telefon | |-----|--------------|------------| |1 |Frank Knipser |674-456 7889| |2 |Torsten Beck |674-458 7889| |3 |Holger Ohrly |334-456 7889| |-----|--------------|------------|
Ein einfaches Objekt besteht aus einer Zeile in einer Tabelle. In unserem vereinfachten Beispiel sind Frank Knipser, Torsten Beck und Holger Ohrly Objekte vom Typ Fotograf. Jedes Objekt hat eine ID, hier sind es 1, 2 und 3.
Asset
------------------
| id |
| titel | Fotograf
| beschreibung | -------------
| lk_fotograf_id |-------->|id |
------------------ |name |
|telefon |
-------------
Um komplexere Objekte abzubilden, werden Tabellen miteinander verlinkt. In diesem Beispiel haben wir die Objekte der Tabelle Asset in dem Feld lk_fotograf_id mit den Objekten der Tabelle Fotograf verlinkt (oder verknüpft). Diese Beziehung nennen wir 1-n-Beziehung, weil je Asset mit maximal ein Fotograf verknüpft wird .
Asset Assets__Kuenstler
------------------ -------------------
| id | <------ | lk_asset_id | Kuenstler
| titel | | bemerkung | ---------------
| beschreibung | | lk_kuenstler_id | ------> | id |
------------------ ------------------- | name |
| lebensdaten |
---------------
Im Gegensatz zur 1-n-Beziehung ist die Verknüpfung von n-m-Beziehungen etwas aufwendiger. Dazu braucht es eine Verknüpfungs-Tabelle (oder Link-Tabelle), hier: Asset__Kuenstler. Die Verknüpfungstabelle sorgt für eine Beziehung zwischen den Objekten der Tabelle Kuenstler und den Objekten der Tabelle Asset. In unserem Beispiel kann jede Verknüpfung noch eine Bemerkung enthalten.
Im easydb-Sprachgebrauch sind die Tabellen Asset und Kuenstler beides Haupttabellen. Eine Haupttabelle hat einen eigenen Editor, wohingegen die Verknüpfungstabellen keinen eigenen Editor haben.
Asset Zustandsbeschreibung
------------------ ------------------
| id | <------- | lk_asset_id |
| titel | | beschreibung |
| beschreibung | | datum |
------------------ ------------------
Die Wiederholgruppe ist eine rückwärtsgerichtete Form einer 1-n-Beziehung. In unserem Beispiel haben wir für Objekt vom Typ Asset die Möglichkeit eine oder mehrere Objekte vom Typ Zustandsbeschreibung zu verknüpfen. Die Wiederholgruppe hat nun die Besonderheit, dass die Tabelle Zustandsbeschreibung keine Haupt-Tabelle ist und über keinen eigenen Editor verfügt. Objekte in der Tabelle Zustandsbeschreibung sind immer mit genau einem Objekt aus der Tabelle Asset verknüpft und können nur für ein Objekt verwendet werden. Diese Objekte werden im Editor für die Objekte des Typs Asset angelegt. Wir nennen das eine Wiederholgruppe.
Der easydb-Editor ist auch in der Lage verschachtelte Wiederholgruppen anzulegen, d.h. eine Wiederholgruppe an der Wiederholgruppe.
Die Datenmodellierung erfolgt im easydb Creator mit dem Tool dbmodel. Dieses Tool schreibt das Datenmodell in die internen Tabellen eadb_tables und eadb_columns, die sich in dem Sqlite-File befinden.
Ältere easydbs (meistens MySQL) verwenden noch das ältere easydb System für n-m Beziehungen und teilweise auf für 1-n Beziehungen, welches auf einer einzigen Tabelle eadb_links basiert.
Aufbau der Tabelle:
Spalte | Beschreibung |
---|---|
id | Laufende ID des Eintrages |
from_table_id | ID der Tabelle von der das Objekt verknüpft wird, ID aus eadb_tables. |
to_table_id | ID der Tabelle zu der das Objekt verknüpft wird, ID aus eadb_tables. |
from_id | ID des Datensatzes der Tabelle von der aus verknüpft wird. |
to_id | ID des Datensatzes der Tabelle zu der verknüpft wird. |
type | Dient zur internen Verwaltung des Links. singlelink für 1-n Beziehung, multilink für n-m und slidelink für Links die das Präsentations-Modul benutzt. |
remark | Ein Bemerkungs-Text der díe Verknüpfung beschreibt. |
position | Bei gleicher from_id und from_table_id die Reihenfolge der Verknüpfungen, aufsteigend, Beginn bei 0 |