Im relationalen Datenbankmodell sind Tabellen über „Schlüssel“ verbunden; der Primärschlüssel ist eine innerhalb der Tabelle für jeden Datensatz eindeutige ID; diese eindeutige, primäre ID kann von einer anderen Tabelle referenziert werden. Diese Referenz zu einer ID in eine andere Tabelle nennt sich „Fremdschlüssel“.
Beispiel: In einer Datenbank für die Verwaltung von Benutzern soll die Zuordnung zu einem Land über einen zweistelligen Länder-Code (z.B. ‚DE’ für Deutschland) abgebildet werden. Die Länder werden mit Code und Bezeichnung in einer eigenen Tabelle gespeichert und haben den Länder-Code als eindeutige ID (Primärschlüssel). Die Nutzerdaten-Tabelle referenziert nun diesen Primärschlüssel der Ländertabelle mit einem diesem Schlüssel entsprechenden Wert. Für den Eintrag dieses referenzierten, also entfernten bzw. fremden Schlüssels in die Nutzerdaten-Tabelle ist in der Nutzerdaten-Tabelle eine entsprechende Fremdschlüssel-Spalte vorgesehen. Damit stehen beide Tabellen in einer „Relation“.
Diese Relationen lassen sich auch über die XML-Konfiguration des ZMSSqldb-Objektes abbilden: Dazu wird der zu referenzierende Tabellenname (tablename) und diejenige Tabellespalte bezeichnet, die als Fremdschlüssel (fieldname) referenziert wird. Das Beispiel zeigt ein Tabellen-Item (Spalte, columns-item), das als Select-Liste abgebildet wird und seine Werte aus einer referenzierten Länder-Tabelle erhält:
So sieht das entsprechende Redaktions-Interface aus:
Konfigurations-Code für das Datenmodell der oben dargestellten Einfachauswahl-Liste „Länder“:
... <item> <dictionary> <item key="id">country</item> <item key="label">Country</item> <item key="fk"> <dictionary> <item key="tablename">countries</item> <item key="fieldname">countryid</item> <item key="displayfield">title</item> </dictionary> </item> </dictionary> </item> ...
Alternativ ist es auch möglich bei fehlender Bezugtabelle willkürliche Auswahlwerte vorzugeben. Über das option-Element lassen sich Werte explizit vorgeben, ohne dass diese in einer Datenbank-Tabelle stehen müssen:
<item> <dictionary> <item key="id">lang</item> <item key="label">Language</item> <item key="hide" type="int">1</item> <item key="fk"> <dictionary> <item key="options"> <list> <item> <list> <item type="int">1</item> <item>English</item> </list> </item> <item> <list> <item type="int">2</item> <item>German</item> </list> </item> </list> </item> </dictionary> </item> </dictionary> </item>