Panoramica del data shaping

Per data shaping si intende la creazione di relazioni gerarchiche tra due o più entità logiche in una query. La gerarchia può essere vista nelle relazioni padre-figlio tra un record di un recordsete uno o più record (noti anche come capitolo) di un altro recordset. In una relazione padre-figlio, l'oggetto Recordset padre contiene l'oggetto Recordset figlio. Un esempio di tale relazione gerarchica è clienti e ordini. Per ogni cliente in un database, possono essere presenti zero o più ordini. La relazione gerarchica può essere ricorsiva, vale a dire che i record nipote possono essere annidati in un record figlio. In linea di principio, un record gerarchico può essere annidato a qualsiasi profondità. In pratica, ADO limita la ricorsione a un massimo di 512 Recordset.

In generale, le colonne di un oggetto Recordset con forma possono contenere dati di un provider di dati, ad esempio Microsoft® SQL Server, riferimenti a un altro recordset, valori derivati da un calcolo su una singola riga di un recordset o valori derivati da un'operazione su una colonna di un intero Recordset. Una colonna può anche essere appena creata e vuota.

Quando si recupera il valore di una colonna che contiene un riferimento a un altro recordset, ADO restituisce automaticamente l'oggetto Recordset effettivo rappresentato dal riferimento. Il riferimento a un recordset è in realtà un riferimento a un subset dell'elemento figlio, denominato capitolo. Un singolo elemento padre può fare riferimento a più recordset figlio.

Il supporto ADO per il data shaping consente di eseguire query su un'origine dati e restituire un oggetto Recordset in cui un record (padre) rappresenta un recordset (figlio). Nello scenario dell'ordine dei clienti è possibile usare il data shaping per recuperare le informazioni dei clienti e gli ordini effettuati da ogni cliente in una singola query. Il recordset risultante è noto anche come recordset di forma.

Inoltre, il data shaping in ADO consente di creare nuovi oggetti Recordset senza un'origine dati sottostante usando la parola chiave NEW per descrivere i campi dei recordset padre e figlio. Il nuovo oggetto Recordset può quindi essere popolato con dati e archiviato in modo permanente. Gli sviluppatori possono anche eseguire vari calcoli o aggregazioni (ad esempio SUM, AVG e MAX) nei campi figlio. Il data shaping può anche creare un recordset padre da un recordset figlio raggruppando i record nell'oggetto figlio e inserendo una riga nel padre per ogni gruppo nell'oggetto figlio.

La SQL consente di recuperare i dati usando la sintassi JOIN, ma può risultare inefficiente e ingombrante perché i dati padre ridondanti vengono ripetuti in ogni record restituito per una determinata relazione padre-figlio. Il data shaping può correlare un singolo record padre nell'oggetto Recordset padre a più record figlio nel recordset figlio, evitando la ridondanza di un oggetto JOIN. La maggior parte degli utenti trova più modello di programmazione Recordset padre-figlio più naturale e più facile da usare rispetto al singolo modello RECORDSET JOIN.