Beispiel
Das folgende einfache Modell enthält zwei Klassen A
und B
, die beide einige primitive Eigenschaften haben. Außerdem verweist A
auf eine Liste von B
s über die Referenz bs
:
Legt man von A und B die folgenden 3 Instanzen an:
Objekttabelle
Dann finden sich in der Tabelle GenericObject
z.B. die folgenden drei Zeilen:
SELECT * FROM GENERIC_OBJECT;
BRANCH |
IDENTIFIER |
REV_MAX |
REV_MIN |
REV_CREATE |
T_TYPE_ID |
---|---|---|---|---|---|
1 |
6013 |
9223372036854775807 |
103 |
103 |
6003 |
1 |
6014 |
9223372036854775807 |
104 |
104 |
6004 |
1 |
6015 |
9223372036854775807 |
105 |
105 |
6004 |
Die Objekttabelle enthält nur technische Information zur Identifikation, Gültigkeit und dem konkreten Typ des Objektes.
Eigenschaften
Die Werte der Eigenschaften und Referenzen sind in eigenen Tabellen gespeichert:
SELECT * FROM FLEX_DATA WHERE BRANCH=1 AND IDENTIFIER=6013;
BRANCH |
TYPE |
IDENTIFIER |
REV_MAX |
ATTR |
REV_MIN |
DATA_TYPE |
LONG_DATA |
DOUBLE_DATA |
VARCHAR_DATA |
CLOB_DATA |
BLOB_DATA |
---|---|---|---|---|---|---|---|---|---|---|---|
1 |
GenericObject |
6013 |
9223372036854775807 |
name |
103 |
30 |
A1 |
||||
1 |
GenericObject |
6013 |
9223372036854775807 |
x |
103 |
11 |
13 |
Die Werte der Eigenschaften name
und x
finden sich in der Tabelle FlexData
.
Referenzen
Die Links zu den beiden B
-Objekten befindet sich in der Tabelle hasWrapperAttValue
.
SELECT * FROM HAS_WRAPPER_ATT_VALUE WHERE BRANCH=1 AND SOURCE_ID=6013;
BRANCH |
IDENTIFIER |
REV_MAX |
REV_MIN |
REV_CREATE |
SOURCE_TYPE |
SOURCE_ID |
DEST_TYPE |
DEST_ID |
META_ATTRIBUTE_ID |
SORT_ORDER |
---|---|---|---|---|---|---|---|---|---|---|
1 |
6016 |
9223372036854775807 |
106 |
106 |
GenericObject |
6013 |
GenericObject |
6015 |
6012 |
|
1 |
6017 |
9223372036854775807 |
106 |
106 |
GenericObject |
6013 |
GenericObject |
6014 |
6012 |
Hier sieht man in der Spalte destId die beiden Fremdschlüssel 6014
und 6015
, welche in die Tabelle GenericObject
zeigen und dort die beiden B
-Objekte referenzieren. Der Name der Modell-Referenz ist nicht direkt in der Tabelle ersichtlich. Stattdessen befindet sich in der Spalte metaAttributeId
ein weiterer Fremdschlüssel 6012
, welche in die Modell-Tabelle MetaAttribute
zeigt.
SELECT * FROM META_ATTRIBUTE WHERE BRANCH=1 AND IDENTIFIER=6012;
BRANCH |
IDENTIFIER |
REV_MAX |
REV_MIN |
REV_CREATE |
NAME |
IMPL |
OWNER_ID |
OWNER_ORDER |
TYPE_TYPE |
TYPE_ID |
END_ID |
DEFINITION_ID |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
6012 |
9223372036854775807 |
102 |
102 |
bs |
reference |
6003 |
3072 |
0 |
6011 |
6012 |
Die so referenzierte Zeile repräsentiert die Modell-Referenz bs
des Typs A
. Der Modell-Typ A
selbst wird über den Fremdschlüssel 6003 in der Spalte ownerId
referenziert:
SELECT * FROM META_ELEMENT WHERE BRANCH=1 AND IDENTIFIER=6003;
BRANCH |
IDENTIFIER |
REV_MAX |
REV_MIN |
REV_CREATE |
NAME |
SCOPE_TYPE |
SCOPE_ID |
MODULE_ID |
IMPL |
ABSTRACT |
FINAL |
---|---|---|---|---|---|---|---|---|---|---|---|
1 |
6003 |
9223372036854775807 |
96 |
96 |
A |
TLModule |
6002 |
6002 |
class |
false |
false |