Ciao, e benvenuto nella quarta puntata della diciannovesima stagione. Nelle scorse puntate abbiamo organizzato i dati in tabelle e imparato a interrogarli. Oggi affrontiamo l'idea che dà il nome stesso a questo tipo di basi di dati, chiamate relazionali: le relazioni, cioè i collegamenti tra i dati. Perché i dati del mondo reale non sono isolati: un cliente ha degli ordini, un ordine contiene dei prodotti, tutto è collegato. Oggi capiamo come una base di dati collega le cose tra loro senza doverle ripetere, e perché questo è cruciale per tenere la verità in ordine.
Partiamo dal problema che le relazioni risolvono, perché è un problema concreto e insidioso: la ripetizione dei dati. Immagina di avere una tabella degli ordini, e di voler sapere, per ogni ordine, anche i dati del cliente che l'ha fatto: il suo nome, il suo indirizzo. La tentazione ingenua sarebbe copiare i dati del cliente dentro ogni suo ordine. Ma se un cliente ha fatto cento ordini, il suo nome e il suo indirizzo verrebbero copiati cento volte, identici. Uno spreco enorme, e soprattutto una trappola pericolosa, come vedremo. Ripetere gli stessi dati in tanti posti sembra comodo, ma nasconde guai seri.
Vediamo quali guai, perché è illuminante. Il primo è lo spreco: la stessa informazione occupa spazio decine di volte inutilmente. Ma il secondo è molto peggio: la contraddizione. Se l'indirizzo di quel cliente è copiato in cento ordini, e il cliente cambia indirizzo, tu dovresti aggiornarlo in tutti e cento i posti. Se te ne sfugge anche solo uno, ti ritrovi con dati contraddittori: novantanove ordini con il nuovo indirizzo, uno con il vecchio. E ora, qual è quello vero? La verità si è sdoppiata, e non sai più a quale credere. La ripetizione è la porta d'ingresso dell'incoerenza, il nemico giurato di ogni custode della verità.
La soluzione, elegante, è il cuore del modello relazionale: non ripetere, ma collegare. Invece di copiare i dati del cliente dentro ogni ordine, tieni i clienti in una loro tabella, ciascuno una volta sola, e negli ordini metti solo un riferimento, un rimando che dice questo ordine appartiene a quel cliente. È come, invece di riscrivere l'intera biografia di una persona ogni volta che la nomini, scriverne solo il nome, sapendo che i dettagli sono conservati in un unico posto a cui puoi sempre risalire. Ogni informazione vive in un solo luogo, e altrove la si richiama con un semplice riferimento. Si collega, non si copia.
Perché questo funzioni, serve un modo per identificare senza ambiguità ogni riga, e qui entra un concetto importante: la chiave. Ogni riga in una tabella ha bisogno di un identificatore univoco, qualcosa che la distingua da tutte le altre senza possibilità di confusione, come un codice personale. Questo identificatore univoco si chiama chiave: è la maniglia con cui afferri esattamente quella riga e nessun'altra. Grazie alla chiave, quando negli ordini metti il riferimento a un cliente, quel riferimento è preciso e inequivocabile: punta a quella riga specifica della tabella dei clienti, identificata dalla sua chiave. Le chiavi sono ciò che rende i collegamenti precisi e affidabili.
Voglio farti apprezzare la bellezza profonda di questo modo di organizzare i dati, perché riprende un principio che abbiamo incontrato spesso. Tenendo ogni informazione in un solo posto, e collegandola altrove con riferimenti, ottieni che ogni fatto ha un'unica dimora, un'unica fonte di verità. L'indirizzo di un cliente esiste in un solo luogo: se cambia, lo aggiorni lì, una volta sola, e automaticamente tutto ciò che vi fa riferimento vede il nuovo valore, senza contraddizioni possibili. Ricordi il principio dell'unica fonte di verità che abbiamo incontrato con Git e altrove? Eccolo qui, applicato ai dati: ogni cosa detta una volta sola, nel suo posto giusto, e richiamata ovunque serva. È l'ordine che previene la contraddizione alla radice.
Questo processo di organizzare i dati eliminando le ripetizioni, dando a ogni fatto un solo posto, ha un nome tecnico che non serve ricordare, ma un'idea che vale oro: mettere ordine perché ogni cosa stia in un unico luogo. È come organizzare bene una casa: ogni oggetto ha il suo posto stabilito, e uno solo, così sai sempre dove trovarlo e non ti ritrovi con dieci copie sparse e discordanti dello stesso documento. Un buon disegno dei dati è, in gran parte, proprio questo: decidere con cura dove vive ciascuna informazione, così che viva in un posto solo, e collegare il resto con riferimenti puliti. L'arte sta nel non ripetere mai la stessa verità.
Per oggi ci fermiamo qui. I dati del mondo reale sono collegati, e la tentazione ingenua di copiare le informazioni in tanti posti nasconde due guai: lo spreco e, molto peggio, la contraddizione, perché se aggiorni un dato ripetuto e te ne sfugge una copia, la verità si sdoppia. La soluzione del modello relazionale è non ripetere ma collegare: ogni informazione vive in un solo posto, identificata da una chiave univoca, e altrove la si richiama con un riferimento. Così ogni fatto ha un'unica fonte di verità, e cambiarlo una volta lo aggiorna ovunque. È il principio dell'unica fonte di verità applicato ai dati. Nella prossima puntata scopriamo come una base di dati trova in fretta: gli indici. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.