Datenmodellierung in der easydb

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.

Einfaches Objekt

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.

1-n Beziehung

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 .

n-m Beziehung

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.

Wiederholgruppe

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.

eadb_links

Ä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