• Non ci sono risultati.

Il modello relazionale

Nel documento La Scienza dei Dati (pagine 75-79)

Capitolo 3 - Come rappresentare i dati: i modelli Carlo Batini

2. Il modello relazionale

Il modello relazionale rappresenta i dati mediante tabelle, chiamate anche relazioni. Le tabelle sono le strutture di dati adottate da molto tempo nei sistemi di gestione di basi di dati tradizionali, e furono introdotte come già detto da Ted Codd per offrire all’utente una rappresentazione di “spartana semplicità”, superando le rappresentazioni gerarchiche dei primi sistemi di gestione di basi di dati. Riproduciamo in Figura 6 qui sotto la Figura 10 del Capitolo 1, tre tabelle che rappresentano tre studenti di una Università, gli esami che hanno superato e i corrispondenti corsi.

Figura 6 - Tre tabelle per rappresentare studenti universitari, corsi frequentati ed esami svolti Proviamo a fare un esercizio sulle tre tabelle di Figura 6; trovate i voti degli esami superati da Batini e i nomi dei corrispondenti corsi. Come “muoviamo gli occhi” per trovare risposta alla domanda? Beh, diciamo che prima cerchiamo nella tabella Studente il dato “Batini” e il corrispondente numero di matricola “13242”; a questo punto cerchiamo 13242 nella tabella Esami, dove lo troviamo una volta sola, accoppiato con il voto 25 e il codice del corso 27; a questo punto, infine, cerchiamo nella tabella Corsi il codice 27 e concludiamo che il nome del corso è Analisi. Come abbiamo fatto a trovare la risposta? Abbiamo dovuto navigare nelle tre tabelle, utilizzando per due volte dati di una tabella per muoverci verso un’altra tabella (la matricola 13242 per passare dalla prima alla seconda, e il codice corso 27 per passare dalla seconda alla terza).

Abbiamo scoperto che nel modello relazionale per poter collegare logicamente tabelle (e quindi navigare tra esse) lo strumento a nostra disposizione sono i valori dei dati, cioè le matricole e i codici dei corsi: rappresentandoli in due tabelle, possiamo navigare tra esse. Si dice anche che il modello relazionale e un modello basato su valori.

Un modello diverso è adottato in Figura 7; qui invece dei valori abbiamo usato frecce, anche dette puntatori, che visivamente indirizzano al dato corrispondente nelle tabelle Esame e Corso.

In particolare, le frecce che partono da Corso nella tabella Esame puntano ai corsi nella tabella Corso associati agli esami superati, le frecce che partono da Studente nella tabella Esame puntano al corrispondente studente nella tabella Studente. Nella memoria di un calcolatore, i puntatori possono essere rappresentati mediante gli indirizzi in memoria del dato “puntato”.

Matricola Cognome Stato Estero

13242 Batini

-24195 Xu Cina

32845 Smith USA

Studente

Matricola Codice Corso Voto

13242 27 25

24195 77 28

32845 27 30

Codice Nome Corso Anno

27 Analisi 1

49 Algoritmi 1

77 Logica 2

76

Figura 7 - Le tre tabelle in cui i legami sono rappresentati da puntatori invece che da valori Un altro modo con cui possiamo rappresentare il contenuto informativo delle tre tabelle di Figura 6 è mediante l’unica tabella di Figura 8.

Figura 8 - I dati delle tre tabelle rappresentanti in un’unica tabella

Introduciamo ora alcune definizioni che esprimono i concetti più importanti per il modello relazionale. Facciamo riferimento alla Figura 9.

La tabella (o relazione) di Figura 9 è costituita da due parti distinte, lo schema e la istanza. Lo schema è descritto dal nome della relazione e da un insieme di attributi, che sono le proprietà che intendiamo rappresentare degli studenti, degli esami e dei corsi. L’istanza è costituita da righe tutte con la stessa struttura, che sono anche chiamate n-ple o record. Lo schema più la istanza (o in caso di più tabelle, l’insieme degli schemi + le istanze) è anche chiamato base di dati.

Lo schema è relativamente stabile nel tempo, mentre la istanza viene modificata ogni volta che c’è la necessità di aggiungere un nuovo studente o esame o corso. Possiamo dire che lo schema descrive il significato della tabella, mentre la istanza rappresenta i dati, descritti da valori.

Matricola Cognome Stato Estero

13242 Batini

-24195 Xu Cina

32845 Smith USA

Studente

Corso Studente Voto

25 28 30

Nome Corso Anno

Analisi 1

Algoritmi 1

Logica 2

Esame Corso

Matricola Cognome Stato Estero Codice Corso Voto Nome Corso Anno

13242 Batini - 27 25 Analisi 1

24195 Xu Cina 77 28 Analisi 1

32845 Smith USA 27 30 Logica 2

- - - - - Algoritmi 1

77

Figura 9 – Concetti rilevanti nel modello relazionale

Vedi nella seguente Figura 10 lo schema delle tre tabelle di Figura 6, rappresentato in forma lineare con il nome di tabella seguito dai nomi degli attributi.

Studente (Matricola, Cognome, Stato Estero) Esame (Matricola, Codice Corso, Voto) Corso (Codice Corso, Nome Corso, Anno)

Figura 10 – Lo schema delle tre tabelle di Figura 6 Vi propongo a questo punto un esercizio.

Esercizio 1 - Provate a modificare lo schema precedente, aggiungendo le date degli esami, e inoltre i professori che insegnano corsi, con la matricola, il cognome, il nome, e i corsi che insegnano. Suggerimento: rappresentate i corsi più i professori che li insegnano con una tabella a parte. La soluzione in Appendice.

Torniamo ora alla base di dati di Figura 8. In questo caso, come si vede, le coppie di dati relative alle matricole e i codici corsi vengono rappresentati una sola volta; questo apparentemente dà luogo ad una rappresentazione più compatta. Potrebbe sembrare a prima vista che sia più immediatamente comprensibile la tabella di Figura 8 delle tre tabelle di Figura 6. In realtà la tabella di Figura 8 presenta diversi problemi:

1. Se un corso non è stato sostenuto come esame da nessuno studente (è il caso del corso di Algoritmi), e vogliamo rappresentare quel corso nella tabella, dobbiamo completare i dati del corso (nome e anno) con valori che hanno come significato “nessuna informazione”, anche detti valori nulli. Ciò sembra una sorta di forzatura innaturale.

2. Se più di uno studente ha sostenuto l’esame di Analisi, il fatto che analisi sia tenuto il primo anno è ripetuto più volte.

Matricola Cognome Stato Estero Codice Corso Voto Nome Corso Anno

13242 Batini - 27 25 Analisi 1

24195 Xu Cina 77 28 Analisi 1

32845 Smith USA 27 30 Logica 2

- - - - - Algoritmi 1 Studente-Esame-Corso Schema Istanza N-pla Attributo Nome di relazione

78

3. Se scorriamo le colonne della tabella ci accorgiamo che esse corrispondono a diversi concetti, Studente, Esame e Corso, esattamente quelli che avevamo utilizzato come nomi delle tre tabelle viste in precedenza.

Insomma, utilizzando una sola tabella noi mescoliamo diversi concetti. Questa è la ragione per cui si dice che lo schema a tre tabelle è in forma normale, o normalizzato, perché abbiamo usato ognuna delle tre tabelle per un concetto diverso, dando luogo a una rappresentazione meno confusa rispetto a quella costituita da una sola tabella, e perciò “normalizzata”.

Quando c’è la esigenza di produrre una base dati, per esempio la base di dati degli studenti, dei corsi e degli esami di Figura 6, la sua produzione è formata da due attività distinte (vedi Figura 11):

 prima di tutto una attività di progettazione, che ha lo scopo di produrre lo schema;

 successivamente una attività di alimentazione, che ha lo scopo di inserire i dati nella istanza.

Figura 11 – Le due fasi del processo di produzione di una base di dati

Quindi: prima lo schema e poi la istanza. Se nella attività di progettazione produciamo uno schema non normalizzato, come lo schema di Figura 9, poi non sarà facile modificarlo in corso d’opera. Questo significa che è nel corso della progettazione di uno schema che dobbiamo avere l’obiettivo di produrlo normalizzato.

Lo strumento concettuale per produrre uno schema normalizzato da uno normalizzato sono le dipendenze funzionali, concetto che non approfondirò nel seguito (il lettore interessato può

Matricola Cognome Stato Estero Studente

Matricola Codice Corso Voto Codice Nome Corso Anno

Esame Corso

Matricola Cognome Stato Estero

13242 Batini

-24195 Xu Cina

32845 Smith USA

Studente

Matricola Codice Corso Voto

13242 27 25

24195 77 28

32845 27 30

Codice Nome Corso Anno

27 Analisi 1 49 Algoritmi 1 77 Logica 2 Esame Corso Requisiti Progettazione Alimentazione

79

approfondire sul testo [Batini 2016] liberamente scaricabile dal Web); piuttosto ne discutiamo una versione intuitiva.

Guardiamo la Figura 8, in cui lo schema è non normalizzato. e individuiamo nella tabella gli attributi associati agli studenti; è chiaro che essi sono Matricola, Cognome e Stato Estero. Possiamo rappresentare questi tre attributi con una tabella chiamata Studente. Possiamo operare nello stesso modo con Corso, dando luogo a una tabella con attributi Codice Corso, Nome e Anno. Infine con gli attributi residui (in pratica solo Voto) possiamo costruire una terza tabella relativa a Esame, in cui dobbiamo ricordarci di aggiungere i due attributi che permettono di collegare le tabelle, Matricola Studente e Codice Corso.

Concludiamo questa sezione, ricordando quali sono le due operazioni fondamentali che si effettuano su una tabella o un insieme di tabelle nelle basi di dati: le interrogazioni, che selezionano da una tabella o un insieme di tabelle tutti i record che rispettano una data proprietà, e le transazioni, che modificano la base di dati, aggiungendo n-ple, modificando n-ple o cancellando n-ple. I modelli dei dati sono molto utili perché permettono di esprimere le interrogazioni e le transazioni sulla base di dati mediante linguaggi semplici, come ad esempio per le interrogazioni nel modello relazionale il linguaggio SQL. Ad esempio. la interrogazione in linguaggio naturale

Seleziona i corsi superati come esami dallo studente con Matricola = “13242” e il voto ottenuto

effettuata sulla tabella di Figura 9, è espressa nel linguaggio SQL con la seguente istruzione SELECT NomeCorso, Voto

From Studente-Esame-Corso Where Matricola = “13242”

Nel documento La Scienza dei Dati (pagine 75-79)