TurboDB Engine Dokumentation

Mit Link- und Relationsfelder arbeiten

Siehe auch

Top  Previous  Next

Um von der Automatic Link Technologie zu profitieren, sollten Sie darüber nachdenken in jeder Tabelle, die Sie neu anlegen, mit Link- oder Relationsfeldern zu arbeiten. Sie werden es sehr bald als völlig natürlich empfinden die Verknüpfungsinformation in der Tabelle zu speichern. Schließlich machen Sie ja dasselbe mit Ihren Delphi, C++ oder Java Klassen, oder?

Hnizufügen von Link- und Relations-Spalten

Wenn Sie mit Link- oder Relations-Felder arbeiten möchten, um eine 1-n oder n-m Beziehung zwischen Tabellen herzustellen, müssen Sie entscheiden welche der Tabellen die Quelle und welcher das Ziel der Beziehung ist. Erstere wird als Kind-Tabelle, zweitere als Eltern-Tabelle bezeichnet. Es verhält sich wie mit der referenzierenden und referenzierten Tabelle, wenn Sie an die Arbeit mit traditionellen Fremdschlüsseln denken.

Die Eltern-Tabelle muss über eine AutoInc-Spalte verfügen,. die als Primärschlüssel für die Verknüpfung dient. Die Kind-Tabelle muss eine Link- oder Relations-Spalte beinhalten, welche die Verknüpfung etabliert. Eine Link-Spalte kann genau einen Zeiger auf die Eltern-Tabelle speichern. Der Zeiger wird als AutoInc-Wert der Eltern-Tabelle angezeigt oder als den Werten der Tabellenspalten der Anzeigeinformation, falls diese für die AutoInc-Spalte der Eltern-Tabelle definiert ist. Relationsfelder können mehrere Zeiger auf die Eltern-Tabelle speichern, die als Liste der AutoInc-Werte oder als Liste der Anzeigeinformationen angezeigt werden.

Link- und Relationsfelder beim direkten Tabellen-Zugriff

(Direkter Tabellenzugriff ist mit der VCL/CLX-Komponenten-Bibliothek möglich, nicht aber mit ADO.NET.)

Wenn Sie Ihre Links und Relationen erst einmal definiert haben, werden diese bei jeder Abfrage von der Datenbank berücksichtigt. Sogar wenn Sie überhaupt kein Suchkriterium angeben, werden wirklich nur verknüpfte Detail-Datensätze zum aktuellen Master-Datensatz angezeigt. Für den seltenen Fall, dass Sie dieses Verhalten nicht möchten, können Sie jederzeit einen anderen Equate Join angeben, der den Standard überschreibt.

Link- und Relationsfelder in TurboSQL

In TurboSQL-Abfragen werden die durch Link- und Relationsfelder definierten Verknüpfungen nicht automatisch hergestellt. Mit einem einfachen JOIN erhält man allerdings den Bezug:

SELECT * FROM Master JOIN Detail ON Detail.LinkField = Master.RecordId

Zum Eintragen neuer Datensätze in den Verbund, kann man die Funktion CurrentRecordId verwenden:

INSERT INTO Master VALUES(...); INSERT INTO Detail VALUES(..., CurrentRecordId(Master), ...)

Mit diesem zusammengesetzten Statement wird zuerst ein Datensatz in die Master-Tabelle eingetragen und dann sofort ein weiterer Datensatz in die Detail-Tabelle, wobei als Wert für das Link-Feld die letzte RecordId der Master-Tabelle benutzt wird. Dadurch ist der Detail-Datensatz mit dem Master-Datensatz verknüpft.

Komaptibilität

Dieses Feature wird nur zum Teil in TurboDB Managed unterstützt. In TurboDB Managed gibt es momentan Link-Spalten, aber keine Relations-Spalten.