Capture des données associées

IEG permet de créer des relations d'association entre les entités. Cette fonction est utile car une restriction s'applique aux entités et aux listes imbriquées qui ne peuvent être imbriquées qu'à deux niveaux. L'utilisation de relations associées propose une alternative efficace à l'imbrication d'entités à trois niveaux.

Par exemple, supposons qu'il soit nécessaire d'enregistrer les informations relatives aux emplois des membres d'un foyer. Les informations relatives à l'emploi peuvent être regroupées indépendamment des informations relatives aux revenus car il existe plusieurs revenus pour un emploi donné.

Une fois les informations relatives aux revenus et à l'emploi regroupées et les entités créées, l'association entre les entités peut être effectuée. Pour ce faire, il est nécessaire de créer une entité de relation. L'entité de relation est normalement la propriété de l'une des entités participant à la relation et est représentée sous la forme d'une séquence comme avec d'autres types de relation.

La définition d'une entité de relation nécessite de pouvoir identifier l'entité associée. Une clé doit donc être définie dans l'entité associée. Pour appliquer cela à l'exemple des revenus/d'emploi, le type d'entité Employment disposera d'une clé, un type d'entité Employment Relationship sera défini et l'entité Income disposera d'une séquence d'entitéEmploymentRelationship, comme suit :

Figure 1. Schéma des entités associées
<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>

L'association peut ensuite être capturée dans le script en définissant un attribut list-question et en indiquant un attribut link-entity faisant référence à la clé de l'entité associée. Pour poursuivre notre exemple, une liste de question peut être définie sur une page mappée sur l'entité Income en indiquant la clé à partir de l'entité Employment Relationship utilisée pour identifier l'entité Employment.

Les listes de questions sont des structures qui permettent à l'utilisateur de faire son choix dans une liste d'entités. Pour plus d'informations, voir Questions de liste.

Figure 2. Création de relations d'association
<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[Sélectionner l'employeur]]>
      </label>
      <item-label>
        <label-element attribute-id="employer" />
      </item-label>
    </list-question>
  </cluster>
</question-page>