Prinzip
Bestimmte Objekte (Adressen, Gefahrstoffe und Produkte) können in Lobster Data Platform / Orchestration mehrfach verwendet werden.
Hier wird z.B. auf eine Adresse über einen Adressbucheintrag, eine Firma und 2 Sendungen verwiesen.
Folgende Anforderungen sollen bei der Verwendung von referenzierten Objekt erfüllt sein:
Es soll vermieden werden, dass Änderungen von Adressen Auswirkungen auf die anderen referenzierenden Objekte haben. (z.B. soll eine Änderung der Adresse in einer Sendung die Adresse der Firma nicht beeinflussen, obwohl beide anfangs auf die gleiche Adresse verweisen)
Falls die Adresse 1 in der Sendung 2 geändert wird, soll eine neue Adresse 2 entstehen, auf die dann von Sendung 2 aus verwiesen wird. Die anderen refenzierenden Objekte verweisen noch immer auf die Adresse 1Es soll vermieden werden, dass viele Duplikate der gleichen Adresse enstehen, damit die Anzahl der Adressen in der Datenbank so gering wie möglich gehalten wird.
Falls für die Sendung 2 eine Adresse 2 erfasst wird, die genau der Adresse 1 entspricht, soll beim Speichern der Sendung 2 nicht die neue Adresse 2 erzeugt, sondern stattdessen auf die Adresse 1 verwiesen werden.
Um diese Anforderungen zu erfüllen, wurde folgende Lösung entwickelt, die beispielhaft anhand von Adressen erklärt wird:
Hinweis: In in Lobster Data Platform / Orchestration können referenzierte Objekt nicht ohne ein referenzierendes Objekt erzeugt, geändert oder gelöscht werden.
Jede Adresse erhält einen Hashwert, der über die Daten ermittelt wird. Für gleiche Daten ensteht immer der gleiche Hashwert.
Beim Speichern einer Sendung werden die Hashwerte der Adressen ermittelt, die in dem Objekt enthalten sind.
Entspricht der Hashwert der Adresse in der Sendung nicht dem Hashwert der Adresse auf die in der Datenbank verwiesen wird, dann wird eine neue Adresse erzeugt, wenn noch andere referenzierende Objekte (Adressbuch, Firma, Sendung) darauf verweisen.
Bevor die neue Adresse erzeugt wird, wird überprüft, ob es bereits eine Adresse mit diesem Hashwert gibt, auf die dann verwiesen werden kann.
Falls keine anderen Referenzen vorhanden sind, entsteht keine neue Adresse, sondern die vorhande wird in der Datenbank geändert. In diesem Fall wird aber auch zuvor geprüft wird, ob bereits eine Adresse mit dem gleichen Hashwert vorhanden ist, denn dann wird stattdessen auf diese verwiesen.