Alberi e gerarchie in SQL
In questi giorni sto partecipando a SQL Pass 2006 a Seattle. Non ho tempo di fare un ampio reportage anche perché non ci sono moltissime novità: per una volta si possono fare un po' di approfondimenti con calma e si sfrutta la presenza di un ampio numero di persone dei team di sviluppo (siamo a 20 minuti d'auto da Redmond) per chiedere conto di bug, feature future e così via.
Fatta questa premessa, c'è una sessione oggi che ho trovato molto interessante.
Joe Celko ha presentato una sessione che riassume i concetti fondamentali del libro Trees and Hierarchies in SQL for Smarties: una delle idee è che la modellizzazione classica di una gerarchia in un modello relazionale (campo Parent che fa riferimento alla chiave primaria della tabella stessa - la stessa tecnica usata nella tabella Employees di Northwind, per capirci) male si sposa con un database relazionale, visto che obbliga all'uso di cursori o di query ricorsive (che è poi quasi come usare i cursori). L'alternativa proposta è la rappresentazione attraverso insiemi (nested set) usando una notazione che offre dei vantaggi enormi in termini di navigazione, rendendo un po' più costosi gli aggiornamenti, ma meno di quanto si potrebbe immaginare al primo impatto.
La sessione è stata interessante anche per altri motivi: Joe Celko è un vero personaggio (era vestito esattamente come nella foto e in tanti anni in una conferenza americana non avevo ancora visto uno speaker con abito sartoriale, gilet e camicia bianca con gemelli - ciò fa parte della sua figura carismatica, devo dire) e la sessione era finita dopo meno di 40 minuti, ma i 30 minuti successivi di domande e risposte sono stati se possibile ancora più interessanti perché ha toccato vari temi tra cui le problematiche di analisi temporale, suggerendo la lettura dei lavori di Richard Snodgrass della University of Arizona, in particolare del libro Developing Time-Oriented Database Applications in SQL che è disponibile in forma gratuita in PDF (tutti i link sono sulla pagina delle sue pubblicazioni).
Se volete prendervi una pausa dai problemi di versioni, patch, hotfix, feature e volete pensare a un livello più alto... sono tutte letture consigliate.