Metadaten für Data Mediator Service
Ein Data Mediator Service (DMS) ist die SDO-Komponente für die Verbindung zur Back-End-Datenbank. Für die Erstellung werden Back-End-spezifische Metadaten verwendet. Die Metadaten definieren die Struktur des vom DMS erzeugten DataGraph und die für die Back-End-Datenbank auszuführende Abfrage.
Metadaten setzen sich aus den folgenden Komponenten zusammen:
- Table
- Repräsentiert eine Tabelle innerhalb der Zieldatenbank und setzt sich aus folgenden Elementen
zusammen:
- Name
- Dies ist der Name der Datenbanktabelle. Eine Tabelle kann auch einen Eigenschaftsnamen haben, mit dem der Name des DataObject für diese Tabelle angegeben werden kann. Standardmäßig stimmt der Eigenschaftsname mit dem Tabellennamen überein.
- Columns
- Die Tabellenspalten, die von der Datenbank zurückgegeben werden sollen. Der Typ einer Tabellenspalte entspricht einem JDBC-Typ. Nulleinträge können unzulässig sein. Der Name einer Spalte entspricht dem Namen in der Datenbank. Mit einem optionalen Eigenschaftsnamen kann der Spaltenname im DataObject angegeben werden. Standardmäßig stimmt der Eigenschaftsname mit dem Namen der Spalte in der Datenbank überein.
- Primary Key
- Die Spalten, mit denen eine Zeile in der Tabelle eindeutig identifiziert werden. Anmerkung: Schlüssel können mehrere Spalten umfassen. Das folgende Beispiel veranschaulicht die Erstellung eines zusammengesetzten Primärschlüssels:
Eine dieser Tabelle untergeordnete Tabelle erstellt mit derselben Methode den Fremdschlüssel, um auf diese Koordinatentabelle zu zeigen.Key pk = MetadataFactory.eINSTANCE.createKey(); pk.getColumns().add(xColumn); pk.getColumns().add(yColumn); coordinateTable.setPrimaryKey(pk);
- Foreign Key
- Die Spalten, mit denen die Tabelle in den Metadaten zu einer anderen Tabelle in Bezug gesetzt wird. Es wird von einer Positionszuordnung zwischen
zusammengesetzten Schlüsseln und Fremdschlüsseln ausgegangen. Wenn eine übergeordnete Tabelle beispielsweise
einen Primärschlüssel (x, y) mit den entsprechenden Typen (Integer, String) hat, wird davon ausgegangen,
dass ein auf diese Tabelle zeigender Fremdschlüssel (x', y') mit den entsprechenden Typen (Integer,
String) ist. Anmerkung: Schlüssel können mehrere Spalten umfassen. Das folgende Beispiel veranschaulicht die Erstellung eines zusammengesetzten Fremdschlüssels:
Eine dieser Tabelle untergeordnete Tabelle erstellt mit derselben Methode den Fremdschlüssel, um auf diese Koordinatentabelle zu zeigen.Key fk = MetadataFactory.eINSTANCE.createKey(); fk.getColumns().add(xColumn); fk.getColumns().add(yColumn); coordinateTable.getForeignKeys().add(fk);
- Filter
- Ein Prädikat der SQL-Klausel WHERE, das mit später einzutragenden Parametern oder ohne diese Parameter angegeben werden kann. Dieses Prädikat wird zur WHERE-Klausel der DataGraph-Anweisung SELECT hinzugefügt. Es wird nicht syntaktisch analysieren oder interpretiert, sondern so verwendet, wie es geschrieben ist. Falls Parameter angegeben sind, werden diese beim Abrufen des DataGraph als Argumente an den JDBC DMS übergeben. Filter werden nur bei generierten Abfragen verwendet. Bei einer angegebenen Abfrage werden die Metadatenfilter ignoriert.
- Relationship
- Setzt die beiden Tabellen mit dem Primärschlüssel der übergeordneten Tabelle und dem Fremdschlüssel der
untergeordneten Tabelle zueinander in Bezug. Beziehungen setzen sich aus folgenden Elementen zusammen:
- Name
- Dies ist der Name der Beziehung, der in der Regel einen Hinweis auf den Bezug der beiden Tabellen zueinander gibt. Wenn die übergeordnete Tabelle Kunden und die untergeordnete Tabelle Bestellungen heißt, wäre der Standardname für die Beziehung Kunden_Bestellungen.
- Opposite Name
- Dieser Name wird verwendet, um vom untergeordneten DataObject zum übergeordneten DataObject zu navigieren.
- Parent Key
- Der Primärschlüssel der übergeordneten Tabelle.
- Child Key
- Der Fremdschlüssel der untergeordneten Tabelle, der auf den Parent Key zeigt.
- Exclusive
- Eine Beziehung veranlasst die generierte Abfrage standardmäßig, für die beiden Tabellen der Beziehung eine innere Verknüpfung zu verwenden. Das bedeutet, aus der übergeordneten Tabelle werden nur Einträge zurückgegeben, für die es untergeordnete Einträge gibt (d. h. untergeordnete Einträge, die auf diese Einträge in der übergeordneten Tabelle zeigen). Wenn der Wert des Attributs Exclusive auf false gesetzt ist, verwendet die Abfrage stattdessen eine linke erweiterte Verknüpfung und gibt alle Einträge der übergeordneten Tabelle zurück.
- Ordering
- Für die Sortierung der Tabellen verwendete Spalten. Die Sortierung kann aufsteigend oder absteigend sein. Wenn dieses Attribut angegeben ist, enthalten generierte Abfragen eine "ORDER BY"-Klausel.