Verknüpfte Daten erfassen

IEG ermöglicht das Erstellen von Verknüpfungsbeziehungen zwischen Entitäten. Da für verschachtelte Entitäten und Listen die Einschränkung gilt, dass sie nur auf zwei Ebenen verschachtelt werden können, ist diese Funktionalität hilfreich. Die Verwendung von Verknüpfungsbeziehungen bietet eine wirksame Alternative dazu, Entitäten auf drei Ebenen zu verschachteln.

Beispiel: Es müssen Informationen über die Beschäftigung der Personen eines Haushalts erfasst werden. Informationen über die Beschäftigung können unabhängig von den Informationen zum Einkommen erfasst werden, da es für eine Beschäftigung mehrere Einkommen geben kann.

Nachdem die Informationen zum Einkommen und zur Beschäftigung erfasst und die Entitäten erstellt worden sind, kann die Verknüpfung zwischen den Entitäten erfolgen. Das geschieht durch Erstellen der Entität "Beziehung". Eigner der Beziehungsentität ist gewöhnlich eine der Entitäten, die an der Beziehungen teilhaben. Die Beziehungsentität wird wie andere Beziehungstypen als eine Sequenz dargestellt.

Das Definieren einer Beziehungsentität erfordert die Möglichkeit, die verwandte Entität zu ermitteln, weshalb in der verwandten Entität ein Schlüssel definiert sein muss. Übertragen auf das Beispiel mit dem Einkommen und der Beschäftigung bedeutet dies, dass die Entität "Beschäftigung" einen Schlüssel enthält, dass für den Entitätstyp "EmploymentRelationship" (Beschäftigungsbeziehung) definiert ist und dass die Entität "Einkommen" Eigner einer Sequenz von "EmploymentRelationships" ist, wie im Folgenden aufgeführt:

Abbildung 1. Schema für verknüpfte Entitäten
<xsd:element name="Employment">	
  <xsd:complexType>
    <xsd:attribute name="employmentID" type="d:SVR_KEY" />
    <xsd:attribute name="employer" type="IEG_STRING" />
    <xsd:attribute name="employmentType" type="IEG_STRING" />
  </xsd:complexType>
  <xsd:key name="Employment_Key">
    <xsd:selector xpath="./Employment" />
    <xsd:field xpath="@employmentID" />
  </xsd:key>
</xsd:element>
<xsd:element name="Income">
  <xsd:complexType>
    <xsd:sequence minOccurs="0">
      <xsd:element ref="EmploymentRelationship" minOccurs="0" 
                maxOccurs="unbounded" />
    </xsd:sequence>
    <xsd:attribute name="type" type="IEG_STRING" />
    <xsd:attribute name="amount" type="IEG_MONEY" />
  </xsd:complexType>
</xsd:element>
<xsd:element name="EmploymentRelationship">
  <xsd:complexType>
    <xsd:attribute name="employmentID" type="d:SVR_KEY" />
  </xsd:complexType>
</xsd:element>

Die Verknüpfung kann anschließend im Script erfasst werden, indem eine Listenfrage definiert und ein Attribut zum Verlinken der Entität angegeben wird, das auf den Schlüssel der verwandten Entität verweist. Um bei unserem Beispiel zu bleiben, kann auf einer Seite, die der Entität "Einkommen" zugeordnet ist, eine Listenfrage definiert werden, die den Schlüssel aus "EmploymentRelationship" angibt, mit dessen Hilfe die Entität "Beschäftigung" ermittelt wird.

Listenfragen sind Konstrukte, mit deren Hilfe der Benutzer aus einer Liste von Entitäten wählen kann. Weitere Informationen finden Sie unter Listenfragen.

Abbildung 2. Verknüpfungsbeziehungen erstellen
<question-page id="IncomePage" entity="Income"  ...
  <cluster>
    <layout>
      <label-width>0</label-width>
    </layout>
    <list-question link-entity="EmploymentRelationship.employmentID"
        entity="Employment" single-select="true">
      <label id="SelectEmployer.Label">
        <![CDATA[Select Employer]]>
      </label>
      <item-label>
        <label-element attribute-id="employer" />
      </item-label>
    </list-question>
  </cluster>
</question-page>