Verknüpfte Daten löschen

Wenn in einer Beziehung zwischen übergeordneter und untergeordneter Entität die übergeordnete Entität gelöscht wird, so werden auch alle ihre untergeordneten Entitäten gelöscht. Wird eine Entität gelöscht, die an einer Beziehung teilhat, so werden standardmäßig die Beziehungen für diese Entität gelöscht, nicht aber die verwandten Entitäten.

Beispiel: Die Details für alle Personen eines Haushalts wurden erfasst, Personenentitäten erstellt, die Beziehungen zwischen den Personen des Haushalts erfasst und die Beziehungsentitäten erstellt. Entscheidet sich nun der Benutzer, eine Person zu entfernen, so werden auch die Beziehungen entfernt, an denen diese Person teilhat, nicht aber die übrigen Personen des Haushalts.

Dieses Standardverhalten ist auch auf das Beispiel mit dem Einkommen und der Beschäftigung anwendbar: Entscheidet sich der Benutzer, ein Einkommen zu entfernen, so werden alle Beschäftigungsbeziehungen für dieses Einkommen entfernt, aber keine der Beschäftigungsentitäten.

Es besteht die Möglichkeit, das Standardverhalten für das Löschen verknüpfter Entitäten zu ändern, so dass alle Entitäten, die mit der entfernten Entität verwandt sind, ebenfalls entfernt werden.

Um dieses Standardverhalten zu ändern, kann der Definition einer Beziehungsentität im DS-Schema eine Anmerkung hinzugefügt werden, die ein Dokumentationselement enthält. Ein Dokumentationselement, das den Text "@curam.ieg.cascading.delete=true" enthält, zeigt an, dass beim Löschen der Beziehung auch verwandte Entitäten gelöscht werden sollten.

Abbildung 1. Schema für kaskadierende Löschoperationen
<xsd:element name="EmploymentRelationship">
  <xsd:annotation>
    <xsd:documentation>@curam.ieg.cascading.delete=true
    </xsd:documentation>
  </xsd:annotation>
  <xsd:complexType>
    <xsd:attribute name="employmentID" type="d:SVR_KEY" />
  </xsd:complexType>
</xsd:element>

Für das Beispiel mit dem Einkommen und der Beschäftigung heißt das: Wenn während des Löschens einer Einkommensentität die Eigenschaft curam.ieg.cascading.delete für die Beschäftigungsbeziehung auf "true" gesetzt ist, wird auch jede verknüpfte Beschäftigungsentität gelöscht. Das Entfernen der Beschäftigungsentitäten auf diesem Wege bewirkt nicht das Entfernen anderer Einkommensentitäten.