Datenstrukturierung – Übersicht

Datenstrukturierung bedeutet, dass hierarchische Beziehungen zwischen zwei oder mehr logischen Entitäten in einer Abfrage definiert werden. Die Hierarchie kann in Beziehungen zwischen übergeordneten und untergeordneten Elementen eines Datensatzes in einem Recordset sowie ein oder mehreren Datensätzen (als Kapitel bezeichnet) eines anderen Recordsets erscheinen. In einer Beziehung aus übergeordneten und untergeordneten Elementen umfasst das übergeordnete Recordset das untergeordnete Recordset. Ein Beispiel für eine solche hierarchische Beziehung sind Kund*innen und Aufträge. Für jede Kundin oder jeden Kunden in einer Datenbank kann es null oder mehr Aufträge geben. Die hierarchische Beziehung kann rekursiv sein. Das bedeutet, dass in einem untergeordneten Datensatz zwei Ebenen untergeordneter Datensätze geschachtelt sein können. Im Prinzip kann ein hierarchischer Datensatz beliebig tief geschachtelt werden. In der Praxis beschränkt ADO die Rekursion auf maximal 512 Recordsets.

Im Allgemeinen können Spalten eines strukturierten Recordsets Daten von einem Datenanbieter wie SQL Server, Verweise auf ein anderes Recordset, abgeleitete Werte aus einer Berechnung für eine einzelne Zeile eines Recordsets oder Werte enthalten, die von einem Vorgang abgeleitet wurden, die für eine Spalte eines vollständigen Recordsets ausgeführt wurden. Eine Spalte kann zudem neu erstellt werden und leer sein.

Wenn Sie den Wert einer Spalte abrufen, der einen Verweis auf ein anderes Recordset enthält, gibt ADO automatisch das eigentliche Recordset zurück, das durch den Verweis dargestellt wird. Der Verweis auf ein Recordset ist eigentlich ein Verweis auf eine Teilmenge des untergeordneten Elements (als Kapitel bezeichnet). Ein einzelnes übergeordnetes Element kann auf mehrere untergeordnete Recordsets verweisen.

Da ADO die Datenstrukturierung unterstützt, können Sie eine Datenquelle abfragen und ein Recordset zurückgeben, in dem ein (übergeordneter) Datensatz ein (untergeordnetes) Recordset darstellt. Im Kundenauftragsszenario können Sie die Datenstrukturierung verwenden, um in einer einzelnen Abfrage Kundeninformationen sowie die Aufträge abzurufen, die von den einzelnen Kund*innen platziert wurden. Das resultierende Recordset wird auch als strukturiertes Recordset bezeichnet.

Darüber hinaus können Sie mithilfe der Datenstrukturierung in ADO neue Recordset-Objekte ohne eine zugrunde liegende Datenquelle erstellen. Verwenden Sie dazu das NEW-Schlüsselwort, um die Felder der übergeordneten und untergeordneten Recordsets zu beschreiben. Das neue Recordset-Objekt kann dann mit Daten gefüllt und persistent gespeichert werden. Entwickler*innen können zudem verschiedene Berechnungen oder Aggregationen (z. B. SUM, AVG und MAX) für untergeordnete Felder durchführen. Mithilfe der Datenstrukturierung kann zudem ein übergeordnetes Recordset anhand eines untergeordneten Recordsets erstellt werden. Dazu werden Datensätze im untergeordneten Element gruppiert, und im übergeordneten Element wird eine Zeile für jede Gruppe im untergeordneten Element platziert.

Mit regulärer SQL können Sie Daten unter Verwendung der JOIN-Syntax abrufen. Dies kann jedoch ineffizient und umständlich sein, da redundante übergeordnete Daten in jedem Datensatz wiederholt werden, der für eine Beziehung aus übergeordneten und untergeordneten Elementen zurückgegeben wird. Bei der Datenstrukturierung kann ein einzelner übergeordneter Datensatz im übergeordneten Recordset mit mehreren untergeordneten Datensätzen im untergeordneten Recordset verknüpft werden. Auf diese Weise lässt sich die Redundanz einer JOIN-Klausel umgehen. Für die meisten Programmierer*innen ist das Programmiermodell mit mehreren Recordsets und übergeordneten und untergeordneten Elementen natürlicher und benutzerfreundlicher als das Arbeiten mit dem JOIN-Modell mit einem einzigen Recordset.