Ciao, e benvenuto nella seconda puntata della cinquantatreesima stagione. Oggi guardiamo il modo stesso in cui si parla a Postgres, e scopriamo che è profondamente diverso da come scriviamo il resto del codice. È un'idea che questo podcast ha incontrato tante volte, in tanti campi, e qui la ritroviamo nel cuore delle basi di dati. Oggi capiamo il modello relazionale, e il dire cosa vuoi invece di come averlo.
Partiamo dalla differenza, perché è tutto. Quando scrivi un normale programma, dici alla macchina come fare le cose, passo dopo passo. Prendi questo, poi fai quello, poi ripeti. Comandi. Con una base di dati relazionale è diverso: tu descrivi il risultato che vuoi, e lasci a lei il compito di trovarlo. Dici: dammi tutti i clienti di questa città che hanno comprato nell'ultimo mese. Non dici come cercarli, in quale ordine, con quale strategia. Dici cosa vuoi, e la base di dati si arrangia. È dichiarativo, non imperativo.
Voglio dirti perché questo è potente, perché non è ovvio. È liberatorio, se ci pensi. Tu ti concentri sulla domanda, sul cosa, che è la parte che conosci meglio, perché riguarda il tuo problema. E il come, che è complicato, tecnico e noioso, lo deleghi a un sistema che, su quello, è molto più bravo di te. È lo stesso spirito che abbiamo visto altrove: descrivere l'aspetto di una pagina invece di disegnarla a mano, descrivere il disegno invece di piazzare ogni punto, dichiarare lo stato che vuoi invece di elencare i passi. Descrivere il risultato, e fidarsi della macchina per il percorso.
Voglio darti il modello che rende possibile tutto questo, perché è la base. Ma perché funziona? Grazie a un'idea vecchia e bellissima: il modello relazionale. I dati stanno in tabelle. Una tabella è fatta di righe e colonne: ogni riga una cosa, ogni colonna una sua caratteristica. Una tabella dei clienti, una degli ordini, una dei prodotti. E la vera magia è nelle relazioni tra tabelle: questo ordine appartiene a quel cliente, contiene quei prodotti. I dati non sono un mucchio disordinato: sono un tessuto di cose collegate, e tu puoi interrogare quel tessuto seguendo i collegamenti.
Voglio insistere sulla potenza delle relazioni, perché è il cuore. Il bello è che non devi decidere in anticipo tutte le domande che farai. Una volta che i dati sono ben organizzati in tabelle collegate, puoi fare domande che non avevi previsto quando li hai salvati. Quanti clienti di questa regione hanno comprato quel prodotto in primavera? Non ci avevi pensato, ma la struttura risponde lo stesso, perché i collegamenti c'erano già. Organizzare bene i dati oggi vuol dire potersi fare domande che non sai ancora di volere fare domani. È un investimento che paga nel tempo.
Voglio essere onesto sul prezzo, perché c'è. Questa flessibilità ha un costo: pensare bene la struttura, decidere quali tabelle esistono e come si collegano, richiede disciplina in anticipo. Non puoi buttare dentro i dati alla rinfusa: devi progettarne la forma. È un lavoro di testa che alcuni trovano noioso, e che i sistemi più liberi ti risparmiano. Ma quel lavoro fatto bene è ciò che, per anni, ti permette di interrogare i tuoi dati in modi che non avevi immaginato. La rigidità di oggi è la libertà di domani.
Voglio darti l'immagine che rende chiara questa idea, perché è quotidiana. Pensa alla differenza tra dire a un tassista svolta a destra, ora dritto, adesso a sinistra, e dirgli semplicemente portami alla stazione. Nel primo caso comandi ogni mossa, e se sbagli una svolta finisci fuori strada. Nel secondo dichiari la destinazione, e ti affidi a chi conosce la città meglio di te per trovare la strada. Interrogare Postgres è dire portami alla stazione: tu la destinazione, lui il percorso.
Voglio trarre la lezione generale, perché va oltre le basi di dati. La lezione è che dichiarare, invece di comandare, è una delle idee più potenti dell'informatica. Sposti la fatica dal come al cosa, dalla persona alla macchina, e liberi la tua testa per il problema vero. Il modello relazionale porta questa idea nel mondo dei dati: descrivi ciò che vuoi sapere, organizza bene le cose e le loro relazioni, e potrai porre domande che oggi non immagini. Nella prossima puntata vedremo la prima grande promessa che Postgres fa a chi si fida di lui.
Per oggi ci fermiamo qui. Abbiamo visto il modo di parlare a Postgres. Con un programma normale dici come fare le cose, passo dopo passo; con una base di dati relazionale descrivi il risultato che vuoi e lasci a lei il percorso: è dichiarativo, non imperativo, lo stesso spirito del descrivere una pagina o dichiarare uno stato. Funziona grazie al modello relazionale: dati in tabelle di righe e colonne, e soprattutto relazioni tra tabelle, un tessuto di cose collegate. Così puoi fare domande che non avevi previsto, se hai organizzato bene i dati: la rigidità di oggi è la libertà di domani. Come dire a un tassista portami alla stazione invece di dettargli ogni svolta. Nella prossima puntata: tutto o niente, le transazioni. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.