Inbesondere bei Personen-Datenbanken aus dem wissenschaftlichen Umfeld besteht oftmals der Bedarf, die Mitarbeit einer Person an diversen Arbeitspaketen (workpackages) sowie deren für das jeweilige Arbeitspaket spezfische Rolle abzubilden.
Im Folgenden wird eine reale Datenbank als Beispiel herangezogen, die für ein internationales Forschungsnetz im Einsatz ist. Das Übersichtsbild (übernächste Grafik, ER-Modell) veranschaulicht das oben genannte Beziehungsgefüge im rot markierten Bereich. Um ein möglichst einfaches und effizientes Interface zu erhalten, erzeugt das ZMSSqldb-Objekt auf Basis einer entsprechenden Modellierung per XML folgendes Eingabe-Interface:
<list> <!-- ######################################## ### Table person ######################################## --> <item> <dictionary> <item key="id">person</item> <item key="label">Person</item> <item key="columns"> <list> <item> <dictionary> <item key="id">workpackages</item> <item key="index" type="int">36</item> <item key="hide" type="int">1</item> <item key="label">Workpackages</item> <item key="multimultiselect"> <dictionary> <item key="fk">person_idperson</item> <item key="tablename">person_has_workpackage</item> <item key="tables"> <list> <item> <dictionary> <item key="fk">workpackage_idworkpackage</item> <item key="tablename">workpackage</item> <item key="fieldname">idworkpackage</item> <item key="displayfield">value_eng</item> <item key="label">Workpackage</item> </dictionary> </item> <item> <dictionary> <item key="fk">role_idrole</item> <item key="tablename">role</item> <item key="fieldname">idrole</item> <item key="displayfield">value_eng</item> <item key="label">Role</item> </dictionary> </item> </list> </item> </dictionary> </item> </dictionary> </item> ... </list> </item> </dictionary> </item> ... <!-- ######################################## ### Table person_has_workpackage INSECTION ######################################## --> <item> <dictionary> <item key="id">person_has_workpackage</item> <item key="type">intersection</item> <item key="columns"> <list> <item> <dictionary> <item key="id">person_idperson</item> <item key="label">Person</item> <item key="fk"> <dictionary> <item key="tablename">person</item> <item key="fieldname">idperson</item> <item key="displayfield">lastname</item> </dictionary> </item> </dictionary> </item> <item> <dictionary> <item key="id">workpackage_idworkpackage</item> <item key="label">Workpackage</item> <item key="fk"> <dictionary> <item key="tablename">workpackage</item> <item key="fieldname">idworkpackage</item> <item key="displayfield">value_eng</item> </dictionary> </item> </dictionary> </item> </list> </item> </dictionary> </item> ... </list>