FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati...

55
FONDAMENTI DI BASI DI DATI Antonio Albano, Giorgio Ghelli, Renzo Orsini Copyright c 2019 A. Albano, G. Ghelli, R. Orsini Si concede il diritto di riprodurre gratuitamente questo materiale con qualsiasi mezzo o formato, in parte o nella sua interezza, per uso personale o per uso didattico alle seguenti condizioni: le copie non sono fatte per profitto o a scopo commerciale; la prima pagina di ogni copia deve riportare questa nota e la citazione completa, incluso il titolo e gli autori. Altri usi di questo materiale inclusa la ripubblicazione, anche di versioni modificate o derivate, la diffusione su server o su liste di posta, richiede un permesso esplicito preventivo dai detentori del copyright. 12 febbraio 2019

Transcript of FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati...

Page 1: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

FONDAMENTI DI

BASI DI DATI

Antonio Albano, Giorgio Ghelli, Renzo Orsini

Copyright c� 2019 A. Albano, G. Ghelli, R. Orsini

Si concede il diritto di riprodurre gratuitamente questo materiale con qualsiasimezzo o formato, in parte o nella sua interezza, per uso personale o per usodidattico alle seguenti condizioni: le copie non sono fatte per profitto o a scopocommerciale; la prima pagina di ogni copia deve riportare questa nota e la citazionecompleta, incluso il titolo e gli autori. Altri usi di questo materiale inclusa laripubblicazione, anche di versioni modificate o derivate, la diffusione su server osu liste di posta, richiede un permesso esplicito preventivo dai detentori del copyright.

12 febbraio 2019

Page 2: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e
Page 3: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

INDICE

1 Sistemi per basi di dati 1

1.1 Sistemi informativi e informatici . . . . . . . . . . . . . . . . . . . . . . . 11.2 Evoluzione dei sistemi informatici . . . . . . . . . . . . . . . . . . . . . . 31.3 Tipi di sistemi informatici . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3.1 Sistemi informatici operativi . . . . . . . . . . . . . . . . . . . . . 61.3.2 Sistemi informatici direzionali . . . . . . . . . . . . . . . . . . . . 6

1.4 I sistemi per basi di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5 Funzionalita dei DBMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.5.1 Definizione della base di dati . . . . . . . . . . . . . . . . . . . . . 131.5.2 Uso della base di dati . . . . . . . . . . . . . . . . . . . . . . . . . 171.5.3 Controllo della base di dati . . . . . . . . . . . . . . . . . . . . . . 191.5.4 Distribuzione della base di dati . . . . . . . . . . . . . . . . . . . . 231.5.5 Amministrazione della base di dati . . . . . . . . . . . . . . . . . 24

1.6 Vantaggi e problemi nell’uso dei DBMS . . . . . . . . . . . . . . . . . . . 251.7 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Note bibliografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2 I modelli dei dati 29

2.1 Progettazione e modellazione . . . . . . . . . . . . . . . . . . . . . . . . . 292.2 Considerazioni preliminari alla modellazione . . . . . . . . . . . . . . . . 30

2.2.1 Aspetto ontologico . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.2.2 Aspetto linguistico astratto . . . . . . . . . . . . . . . . . . . . . . 382.2.3 Aspetto linguistico concreto . . . . . . . . . . . . . . . . . . . . . . 382.2.4 Aspetto pragmatico . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.3 Il modello dei dati ad oggetti . . . . . . . . . . . . . . . . . . . . . . . . . 392.3.1 Rappresentazione della struttura

della conoscenza concreta . . . . . . . . . . . . . . . . . . . . . . . 402.3.2 Rappresentazione degli altri aspetti

della conoscenza astratta . . . . . . . . . . . . . . . . . . . . . . . 512.3.3 Rappresentazione della conoscenza procedurale . . . . . . . . . . 52

Page 4: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

INDICE ii

2.3.4 Rappresentazione della comunicazione . . . . . . . . . . . . . . . 532.4 Altri modelli dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

2.4.1 Il modello entita-relazione . . . . . . . . . . . . . . . . . . . . . . 552.4.2 Il modello relazionale . . . . . . . . . . . . . . . . . . . . . . . . . 56

2.5 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Note bibliografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3 La progettazione di basi di dati 61

3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.2 Le metodologie di progettazione . . . . . . . . . . . . . . . . . . . . . . . 62

3.2.1 Il ruolo delle metodologie . . . . . . . . . . . . . . . . . . . . . . . 633.2.2 Le metodologie con piu fasi . . . . . . . . . . . . . . . . . . . . . . 643.2.3 Le metodologie con prototipazione . . . . . . . . . . . . . . . . . 66

3.3 Gli strumenti formali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.3.1 I diagrammi di flusso dati . . . . . . . . . . . . . . . . . . . . . . . 683.3.2 I diagrammi di stato . . . . . . . . . . . . . . . . . . . . . . . . . . 72

3.4 L’analisi dei requisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733.4.1 Scopo dell’analisi dei requisiti . . . . . . . . . . . . . . . . . . . . 743.4.2 Come procedere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753.4.3 Un esempio di analisi dei requisiti . . . . . . . . . . . . . . . . . . 76

3.5 La progettazione concettuale . . . . . . . . . . . . . . . . . . . . . . . . . 823.5.1 Scopo della progettazione concettuale . . . . . . . . . . . . . . . . 823.5.2 Come procedere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833.5.3 I passi della progettazione concettuale . . . . . . . . . . . . . . . 84

3.6 Riepilogo della metodologia di progettazione . . . . . . . . . . . . . . . 923.7 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94Note bibliografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

4 Il modello relazionale 101

4.1 Il modello dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.1.1 La relazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.1.2 I vincoli d’integrita . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.1.3 Una rappresentazione grafica di schemi relazionali . . . . . . . . 1054.1.4 Operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

4.2 Progettazione logica relazionale . . . . . . . . . . . . . . . . . . . . . . . . 1074.2.1 Rappresentazione delle associazioni binarie

uno a molti e uno ad uno . . . . . . . . . . . . . . . . . . . . . . . 1084.2.2 Rappresentazione di associazioni molti a molti . . . . . . . . . . 1104.2.3 Rappresentazione delle gerarchie fra classi . . . . . . . . . . . . . 1124.2.4 Definizione delle chiavi primarie . . . . . . . . . . . . . . . . . . . 1154.2.5 Rappresentazione delle proprieta multivalore . . . . . . . . . . . 1174.2.6 Appiattimento degli attributi composti . . . . . . . . . . . . . . . 117

4.3 Algebra relazionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

Page 5: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

INDICE iii

4.3.1 Gli operatori primitivi . . . . . . . . . . . . . . . . . . . . . . . . . 1184.3.2 Operatori derivati . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234.3.3 Proprieta algebriche degli operatori relazionali . . . . . . . . . . 1264.3.4 Altri operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

4.4 Calcolo relazionale su ennuple . . . . . . . . . . . . . . . . . . . . . . . . 1324.5 I linguaggi logici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1334.6 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135Note bibliografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

5 Normalizzazione di schemi relazionali 137

5.1 Le anomalie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1375.2 Dipendenze funzionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

5.2.1 Definizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1415.2.2 Dipendenze derivate . . . . . . . . . . . . . . . . . . . . . . . . . . 1425.2.3 Chiusura di un insieme di dipendenze funzionali . . . . . . . . . 1455.2.4 Chiavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1475.2.5 Copertura di un insieme di dipendenze . . . . . . . . . . . . . . . 151

5.3 Decomposizione di schemi . . . . . . . . . . . . . . . . . . . . . . . . . . 1535.3.1 Decomposizioni che preservano i dati . . . . . . . . . . . . . . . . 1545.3.2 Decomposizioni che preservano le dipendenze . . . . . . . . . . 156

5.4 Forme normali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1615.4.1 Forma Normale di Boyce-Codd . . . . . . . . . . . . . . . . . . . 1615.4.2 Normalizzazione di schemi in BCNF . . . . . . . . . . . . . . . . 1635.4.3 Terza forma normale . . . . . . . . . . . . . . . . . . . . . . . . . . 1655.4.4 Normalizzazione di schemi in 3NF . . . . . . . . . . . . . . . . . 166

5.5 Dipendenze multivalore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1715.6 La denormalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725.7 Uso della teoria della normalizzazione . . . . . . . . . . . . . . . . . . . . 1735.8 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174Note bibliografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

6 SQL per l’uso interattivo di basi di dati 179

6.1 SQL e l’algebra relazionale su multinsiemi . . . . . . . . . . . . . . . . . 1806.2 Operatori per la ricerca di dati . . . . . . . . . . . . . . . . . . . . . . . . 181

6.2.1 La clausola SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . 1836.2.2 La clausola FROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846.2.3 La clausola WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . 1866.2.4 Operatore di ordinamento . . . . . . . . . . . . . . . . . . . . . . . 1926.2.5 Funzioni di aggregazione . . . . . . . . . . . . . . . . . . . . . . . 1926.2.6 Operatore di raggruppamento . . . . . . . . . . . . . . . . . . . . 1936.2.7 Operatori insiemistici . . . . . . . . . . . . . . . . . . . . . . . . . 1956.2.8 Sintassi completa del SELECT . . . . . . . . . . . . . . . . . . . . . 195

6.3 Operatori per la modifica dei dati . . . . . . . . . . . . . . . . . . . . . . 197

Page 6: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

INDICE iv

6.4 Il potere espressivo di SQL . . . . . . . . . . . . . . . . . . . . . . . . . . 1986.5 QBE: un esempio di linguaggio basato sulla grafica . . . . . . . . . . . . 1996.6 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Note bibliografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

7 SQL per definire e amministrare basi di dati 203

7.1 Definizione della struttura di una base di dati . . . . . . . . . . . . . . . 2037.1.1 Base di dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2047.1.2 Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2057.1.3 Tabelle virtuali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

7.2 Vincoli d’integrita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097.3 Aspetti procedurali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

7.3.1 Procedure memorizzate . . . . . . . . . . . . . . . . . . . . . . . . 2127.3.2 Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

7.4 Progettazione fisica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2197.4.1 Definizione di indici . . . . . . . . . . . . . . . . . . . . . . . . . . 219

7.5 Evoluzione dello schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2217.6 Utenti e Autorizzazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2217.7 Schemi esterni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2237.8 Cataloghi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2237.9 Strumenti per l’amministrazione di basi di dati . . . . . . . . . . . . . . 2247.10 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Note bibliografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

8 SQL per programmare le applicazioni 227

8.1 Linguaggi che ospitano l’SQL . . . . . . . . . . . . . . . . . . . . . . . . . 2288.1.1 Connessione alla base di dati . . . . . . . . . . . . . . . . . . . . . 2298.1.2 Comandi SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308.1.3 I cursori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308.1.4 Transazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

8.2 Linguaggi con interfaccia API . . . . . . . . . . . . . . . . . . . . . . . . . 2348.2.1 L’API ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358.2.2 L’API JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

8.3 Linguaggi integrati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2398.4 La programmazione di transazioni . . . . . . . . . . . . . . . . . . . . . . 242

8.4.1 Ripetizione esplicita delle transazioni . . . . . . . . . . . . . . . . 2458.4.2 Transazioni con livelli diversi di isolamento . . . . . . . . . . . . 246

8.5 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Note bibliografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

Page 7: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

INDICE v

9 Realizzazione dei DBMS 251

9.1 Architettura dei sistemi relazionali . . . . . . . . . . . . . . . . . . . . . . 2519.2 Gestore della memoria permanente . . . . . . . . . . . . . . . . . . . . . 2529.3 Gestore del buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529.4 Gestore delle strutture di memorizzazione . . . . . . . . . . . . . . . . . 2539.5 Gestore dei metodi di accesso . . . . . . . . . . . . . . . . . . . . . . . . . 2579.6 Gestore delle interrogazioni . . . . . . . . . . . . . . . . . . . . . . . . . . 258

9.6.1 Riscrittura algebrica . . . . . . . . . . . . . . . . . . . . . . . . . . 2589.6.2 Ottimizzazione fisica . . . . . . . . . . . . . . . . . . . . . . . . . . 2619.6.3 Esecuzione di un piano di accesso . . . . . . . . . . . . . . . . . . 273

9.7 Gestore della concorrenza . . . . . . . . . . . . . . . . . . . . . . . . . . . 2739.8 Gestore dell’affidabilita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2749.9 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277Note bibliografiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

Bibliografia 281

Indice analitico 285

Page 8: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

INDICE vi

Page 9: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

Prefazione

Dopo molti anni dalla pubblicazione della prima edizione del volume Fondamenti diBasi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscitanel 2005, e tempo di un’ulteriore ammodernamento, che coincide con la sua diffu-sione con un canale diverso da quello della carta stampata: il web, attraverso il sitohttp://fondamentidibasididati.it.

Riteniamo che questo materiale possa essere utile non solo per i classici corsi diBasi di Dati, fondamentali per le lauree in Informatica o Ingegneria Informatica, ma,data l’attenzione cha sta oggi avendo l’informatica in sempre piuu ampi settori dellaformazione e dell’istruzione ad ogni livello, in molti altri corsi di laurea e momentiformativi, in forma anche parziale, come abbiamo potuto sperimentare di personadurante questi ultimi anni.

Il passaggio alla nuova modalita di distribuzione, permettendo di mantenere ag-giornati i contenuti, ci ha richiesto di modificare la struttura del sito di supporto allibro, che non avra piu la parte di errata corrige e di approfondimenti, ma conterramateriale aggiuntivo utile per lo studio, come le soluzioni agli esercizi, i collegamentiai software gratuiti, gli appunti del corso, e gli esempi scaricabili.

Organizzazione del testoIl libro inizia presentando le ragioni che motivano la tecnologia delle basi di dati, edi concetti principali che caratterizzano le basi di dati ed i sistemi per la loro gestione.

In maggior dettaglio, il Capitolo 2 si sofferma sulle nozioni fondamentali di mo-dello informatico finalizzato al trattamento delle informazioni di interesse dei sistemiinformativi delle organizzazioni e sui meccanismi d’astrazione per costruire model-li informatici. Il modello di riferimento e il modello ad oggetti, motivato non solodalla sua naturalezza per la progettazione di basi di dati, ma anche per essere il mo-dello dei dati dell’attuale tecnologia relazionale ad oggetti per basi di dati. Il formali-smo grafico adottato si ispira all’Unified Modeling Language, UML, ormai uno standarddell’ingegneria del software.

Il Capitolo 3 presenta una panoramica del problema della progettazione di basi didati, si sofferma sulle fasi dell’analisi dei requisiti e della progettazione concettua-

Page 10: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

INDICE viii

le usando il modello ad oggetti e il formalismo grafico proposto nel Capitolo 2, edescrive un metodo di lavoro per queste fasi.

I Capitoli 4 e 5 sono dedicati alla presentazione rigorosa del modello relazionale deidati e ad un’introduzione alla teoria della normalizzazione. La scelta di dedicare que-sto spazio all’argomento e giustificata dal ruolo fondamentale che svolge il modellorelazionale per la comprensione della tecnologia delle basi di dati e per la formazionedegli addetti.

I Capitoli 6, 7 e 8 trattano il linguaggio relazionale SQL da tre punti di vista, checorrispondono ad altrettante categorie di utenti: (1) gli utenti interessati ad usareinterattivamente basi di dati relazionali, (2) i responsabili di basi di dati interessati adefinire e gestire basi di dati, (3) i programmatori delle applicazioni.

Il Capitolo 9 presenta una panoramica delle principali tecniche per la realizzazionedei sistemi relazionali. Vengono presentate in particolare la gestione delle interroga-zioni e dei metodi di accesso e la gestione dell’atomicita e della concorrenza in sistemicentralizzati.

RingraziamentiL’organizzazione del materiale di questo testo e il risultato di molti anni di insegna-mento deii corsi di Basi di Dati per le lauree in Scienze dell’Informazione e in Informatica.

Molte persone hanno contribuito con i loro suggerimenti e critiche costruttive amigliorare la qualita del materiale. In particolare si ringraziano i numerosi studentiche nel passato hanno usato le precedenti versioni del testo e Gualtiero Leoni per lasua collaborazione.

Si ringrazia infine l’Editore Zanichelli per il supporto che ci ha dato in questi anni,e, adesso che il libro e uscito dal suo catalogo, per il permesso di diffondere la nuovaversione attraverso il web.

A. A.G. G.R. O.

Page 11: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

Capitolo 4

IL MODELLO RELAZIONALE

Il modello dei dati relazionale, proposto da Codd nel 1970, e il modello dei dati cheha avuto finora la piu completa trattazione teorica. La sua semplicita, la natura deglioperatori che offre e la teoria delle basi di dati che ha consentito di sviluppare l’hannoreso molto popolare sia in ambienti scientifici che applicativi. Inizialmente ci fu moltoscetticismo sulla possibilita di realizzare sistemi commerciali basati su questo modellodei dati, competitivo con i sistemi gerarchici e reticolari che costituivano lo standarddel periodo. Ma ormai, dopo lo sviluppo dei primi prototipi nella seconda meta deglianni ’70, e diventato il prodotto di punta di molti costruttori di DBMS, per ogni tipodi elaboratore e in particolare per i calcolatori personali, e oggi i sistemi relazionalidominano il mercato. Rispetto al modello ad oggetti, il modello relazionale e moltomeno espressivo, per cui molti dei sistemi attuali offrono delle estensioni “ad oggetti”,in qualche senso, del modello. In questo capitolo verra descritto il modello nella suaforma pura.

4.1 Il modello dei dati

4.1.1 La relazione

Il modello dei dati relazionale si basa sul concetto matematico di relazione n-aria,definita come sottoinsieme del prodotto cartesiano D1 ⇥D2 ⇥ . . .Dn di n insiemi divalori di tipo elementare, detti domıini, ovvero come un insieme di ennuple ordinatedi valori hd1, d2, . . . , dni, con di 2 Di, per ogni i = 1, 2, . . . , n. Le componenti diun’ennupla sono identificate dalla loro posizione. In informatica, per agevolare l’usodel modello dei dati, la nozione di prodotto cartesiano si estende a quella di prodottocartesiano etichettato associando un’etichetta distinta ad ogni dominio del prodottoD1⇥D2⇥ . . .Dn, in modo da identificare le componenti di un’ennupla con le etichetteanziche con le posizioni, come accade per i record dei linguaggi di programmazione.Piu precisamente vale la seguente definizione:

⌅ Definizione 4.1Uno schema di relazione R : {T } e una coppia formata da un nome di relazione R eda un tipo relazione definito come segue:– int, real, boolean e string sono tipi primitivi;

Page 12: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.1. Il modello dei dati 102

– se T1, . . . , Tn sono tipi primitivi, e A1, . . . , An sono etichette distinte, dette attri-buti, allora (A1 : T1, . . . , An : Tn) e un tipo ennupla di grado n. Due tipi ennuplasono uguali se hanno uguale il grado, gli attributi e il tipo degli attributi conlo stesso nome. L’ordine degli attributi non e significativo;

– se T e un tipo ennupla, allora {T } e un tipo insieme di ennuple o tipo relazione.Due tipi relazione sono uguali se hanno lo stesso tipo ennupla.

⌅ Definizione 4.2Uno schema relazionale e costituito da un insieme di schemi di relazione Ri : {Ti},i = 1, . . . , k e da un insieme di vincoli di integrita relativi a tali schemi.1

Le definizioni precedenti caratterizzano l’aspetto intensionale del modello dei dati,mentre la definizione che segue ne caratterizza l’aspetto estensionale.

⌅ Definizione 4.3Un’ennupla t = (A1 := V1, . . . , An := Vn) di tipo T = (A1 : T1, . . . , An : Tn) e uninsieme di coppie (Ai, Vi) con Vi di tipo Ti. Due ennuple sono uguali se hannolo stesso insieme di coppie (Ai, Vi). Un’istanza dello schema Ri : {Ti} o relazione eun insieme finito di ennuple {t1, t2, . . . , tk}, con ti di tipo Ti. La cardinalita di unarelazione e il numero delle sue ennuple. Un’istanza di uno schema relazionale eformata da un’istanza di ciascuno dei suoi schemi di relazione.

Se (A1, . . . , An) sono gli attributi del tipo ennupla T , si dice che una relazione ditipo {T } ha attributi (A1, . . . , An). Inoltre, per uno schema di relazione, invece dellanotazione R : {(A1 : T1, . . . , An : Tn)}, si usera la notazione R(A1 : T1, . . . , An : Tn), chesi abbreviera ulteriormente in R(A1, . . . , An), quando non interessa evidenziare il tipodegli attributi. In questo caso si assume che attributi uguali in schemi di relazionediversi abbiano lo stesso tipo.

E tradizione visualizzare una relazione come una tabella bidimensionale, con lecolonne identificate dagli attributi, e con le righe contenenti solo i valori delle ennuple,nell’ordine indicato dall’intestazione delle colonne, come mostrato nell’esempio:

StudentiNome Matricola Provincia Nascita

Isaia 71523 Pisa 1980Rossi 67459 Lucca 1981Bianchi 79856 Livorno 1980Bonini 75649 Pisa 1981

1. Non esiste una definizione univoca di quali vincoli di integrita possono fare parte di uno schemarelazionale; questo aspetto sara comunque ripreso in seguito.

Page 13: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.1. Il modello dei dati 103

ProveEsamiMateria Candidato Data Voto

BD 71523 12/01/01 28BD 67459 15/09/02 30IA 79856 25/10/03 30BD 75649 27/06/01 25IS 71523 10/10/02 18

Si usera, inoltre, la notazione dom(Ai) per riferirsi all’insieme dei possibili valoriche puo assumere un attributo Ai in tutte le possibili istanze degli schemi di re-lazione in cui compare. Per riferirsi, invece, all’insieme dei valori che assume l’at-tributo Ai in un’estensione della base di dati, si usera la notazione adom(Ai), conadom(Ai) ✓ dom(Ai). Nella base di dati dell’esempio, dom(Voto) = {18, 19, . . . , 30},mentre adom(Voto) = {18, 25, 28, 30}.

4.1.2 I vincoli d’integritaCome gia specificato, uno schema relazionale e costituito da un insieme di schemidi relazione e da un insieme di vincoli d’integrita sui possibili valori delle estensionidelle relazioni. I tre tipi di vincoli piu importanti, che verranno definiti in questasezione, sono quelli che specificano: quali attributi non possono assumere un valorenullo (null value), quali attributi sono chiavi, e quali attributi sono chiavi esterne.

I vincoli d’integrita sono strettamente legati alla nozione di istanza valida di unoschema di relazione e di uno schema di base di dati.

⌅ Definizione 4.4Un’istanza r di uno schema di relazione R e valida se rispetta tutti i vincolidefiniti su R. Un’istanza di uno schema relazionale S e valida se rispetta tutti ivincoli definiti su S.

I valori nulli

L’esigenza di ammettere che il dominio di definizione di un attributo debba essereesteso con un particolare valore nullo scaturisce dal fatto che, quando si aggiungeun’ennupla ad una relazione, per varie ragioni puo capitare che non sia possibile spe-cificare il valore di un attributo. In un rapporto dell’ANSI (American National StandardInstitute) vengono elencati 14 motivi per cui questo puo accadere, tre dei quali sonopiu caratteristici e si illustrano con riferimento ad una relazione contenente dati suiprofessori visitatori di un’universita:

ProfessoriVisitatori (Cognome, Nazionalita, CodiceFiscale)

Quando arriva un nuovo professore, puo capitare di non conoscere il valore del codicefiscale perche: (a) il codice fiscale non e previsto per professori provenienti da certipaesi (inapplicable attribute), (b) il codice fiscale e previsto, ma non si conosce (unknownattribute), (c) non e noto se il professore ha oppure no un codice fiscale (no information).

Page 14: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.1. Il modello dei dati 104

I sistemi relazionali permettono in genere di specificare per ciascun attributo di unarelazione se tale attributo puo assumere il valore nullo, come avviene di norma, o seper tale attributo vale il vincolo di non assumere il valore nullo (vincolo not null).

Nel seguito, per semplicita, la presentazione viene fatta considerando solo relazionicon ennuple prive di valori nulli. Quando in qualche esempio si usera il valore nullo,verra fatto con il significato di valore sconosciuto.

Le chiavi

⌅ Definizione 4.5Una superchiave di uno schema di relazione e un insieme X di attributi tale che,in ogni istanza valida dello schema di relazione, i valori degli attributi in X in-dividuano univocamente un’ennupla, ovvero tale che in nessuna istanza validadello schema di relazione possono esistere due ennuple diverse che coincidonosu tutti gli attributi in X.

⌅ Definizione 4.6Una chiave di uno schema di relazione e una superchiave minimale, nel sensoche se si elimina un attributo, i rimanenti non formano piu una superchiave. Unattributo che appartiene ad una chiave e chiamato attributo primo.

⌅ Definizione 4.7La chiave primaria di uno schema di relazione e una delle chiavi, e di solito vienepreferita quella con il minor numero di attributi.

Quando si prevedono anche i valori nulli, gli attributi che definiscono la chiave pri-maria non possono assumere un valore nullo nelle ennuple delle istanze di relazione,altrimenti non sarebbe piu possibile identificarle univocamente.

Quando si vogliono evidenziare gli attributi della chiave primaria di uno schema direlazione, si adottera la convenzione di sottolinearli.

Le chiavi esterne

⌅ Definizione 4.8Un insieme di attributi A1, . . . , An di uno schema di relazione R e una chiaveesterna, che riferisce una chiave primaria B1, . . . , Bn di uno schema di relazioneS, se, in ogni istanza valida della base di dati, per ogni ennupla tr dell’istanzadi R esiste un’ennupla ts “riferita da tr”, ovvero tale che, per ogni i 2 1..n,tr.Ai = ts.Bi, dove t.A indica il valore dell’attributo A dell’ennupla t.

Attraverso il valore di una chiave esterna, un’ennupla di una relazione viene associataa quell’ennupla della relazione riferita che ha il valore della chiave primaria uguale

Page 15: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.1. Il modello dei dati 105

al valore della chiave esterna. Ad esempio, l’attributo Candidato della relazione Pro-veEsami e una chiave esterna che riferisce la chiave primaria Matricola della relazioneStudenti, e infatti vale che adom(Candidato) ✓ adom(Matricola).

Osserviamo che una chiave esterna in una relazione S puo riferire anche la chiaveprimaria della stessa relazione S, e che una relazione S puo contenere anche piuchiavi esterne che riferiscono la stessa relazione. Si consideri ad esempio una relazionePersone che descrive codice fiscale, nome, padre e madre di un insieme di persone.Lo schema della relazione potrebbe essere:

Persone(CodiceFiscale, Nome, CFPadre, CFMadre)chiave esterna CFPadre per Personechiave esterna CFMadre per Persone

I due attributi CFPadre e CFMadre sono entrambi chiavi esterne che riferiscono lastessa relazione.

Il vincolo sulla chiave esterna non era previsto nella prima definizione del modellorelazionale, ma e molto utile ed e previsto in quasi tutti i sistemi relazionali commer-ciali. Altri vincoli piu generali sulle possibili estensioni di una base di dati relazionalepotrebbero essere espressi con un opportuno linguaggio, ma qui non si prendono inconsiderazione. Le chiavi esterne rappresentano il modo standard di rappresentare leassociazioni nel modello relazionale. Questo meccanismo permette di rappresentaredirettamente la direzione unaria delle associazioni binarie uno a molti (che sono chia-mate anche associazioni gerarchiche), e quindi anche delle associazioni uno ad uno;vedremo in seguito come possa essere usato per rappresentare associazioni molti amolti, non binarie o con attributi.

4.1.3 Una rappresentazione grafica di schemi relazionali

Come per il modello ad oggetti, anche per il modello relazionale e possibile definireun formalismo grafico in cui si rappresentano solo gli schemi di relazione e le loro as-sociazioni, o piu precisamente le chiavi esterne. In questo formalismo, una relazionee rappresentata da un rettangolo che ne contiene il nome. La presenza di una chiaveesterna in R che riferisce la chiave primaria di S e rappresentata da una freccia che vada R ad S. Quando sia utile, la freccia puo essere etichettata con il nome degli attri-buti che formano la chiave esterna, e ulteriori attributi della relazione possono essererappresentati come si e potuto vedere nel Capitolo 2. Riportiamo, a titolo di esempio,in Figura 4.1 una rappresentazione grafica dei due schemi sopra descritti, il secon-do rappresentato aggiungendo anche la specifica degli attributi della chiave primaria,etichettati con⌧PK�, e delle chiavi esterne, etichettati con⌧FK�(Relazione).

4.1.4 Operatori

Il modello relazionale e stato il primo ad introdurre la possibilita di operare su insiemidi dati con operatori insiemistici, mentre nei modelli precedenti lo stile di program-

Page 16: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.1. Il modello dei dati 106

Studenti EsamiCandidato

PersoneCF :string ⌧PK�Nome :stringMadre :string ⌧FK1(Persone)�Padre :string ⌧FK2(Persone)�

Padre

Madre

Figura 4.1: La rappresentazione grafica di uno schema relazionale

mazione era basato su operatori di scansione simili agli operatori “open, read, write,next, eof, close” con i quali i linguaggi imperativi manipolano i file.

I linguaggi per interrogare una base di dati relazionale permettono di definire larelazione risultato a partire dalle relazioni che compongono la base di dati. Essi sipossono dividere in tre famiglie, che verranno esemplificate piu avanti:

1. linguaggi algebrici: un’interrogazione e definita da un’espressione con operatori surelazioni che producono come risultato altre relazioni;

2. linguaggi basati sul calcolo dei predicati: un’interrogazione e definita da una formuladel calcolo dei predicati del primo ordine;

3. linguaggi logici: sono linguaggi ispirati dal linguaggio logico Prolog in cui un’inter-rogazione e definita da un insieme di formule del calcolo dei predicati del primoordine, mutuamente ricorsive ma con una struttura molto rigida (formule Horn).

Mentre una formula del calcolo si limita a specificare quali ennuple fanno parte delrisultato, un’espressione algebrica stabilisce quali operazioni applicare per produrreil risultato. In genere, in un sistema relazionale il programmatore definisce il risultatodella propria interrogazione fornendo una formula del calcolo, ed e il sistema chesceglie l’espressione algebrica equivalente da eseguire. A questo scopo il sistema perprima cosa trasforma la formula in un’espressione algebrica equivalente e poi appli-ca a questa espressione una serie di riscritture, ovvero di trasformazioni che non nemodificano il risultato ma ne rendono la valutazione piu efficiente. Vedremo, nellaSezione 4.3.3 un esempio di tali trasformazioni.

L’algebra relazionale e il calcolo relazionale di ennuple sono esempi di linguaggi delleprime due famiglie e furono proposti da Codd come esempi di linguaggi equivalentie con le capacita minime di calcolo su relazioni. Egli, inoltre, introdusse il concetto dicompletezza di un linguaggio relazionale, intendendo con cio che si possa formularein esso un’espressione equivalente (cioe che valuti lo stesso risultato) ad una qua-lunque espressione dell’algebra relazionale, cioe una espressione formata da variabilie costanti di relazioni e da operatori dell’algebra. In realta i linguaggi esistenti persistemi relazionali offrono anche altri operatori che li rendono piu che “completi”.

Page 17: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 107

Ad esempio, quasi tutti offrono le operazioni aritmetiche e operazioni come la media,somma, minimo o massimo, per agire su insiemi di valori per ottenere una singolaquantita. I linguaggi logici sono anche piu espressivi perche riescono ad esprimereinterrogazioni “ricorsive”, per calcolare ad esempio la chiusura transitiva di una rela-zione, ma pagano questa espressivita con una maggiore difficolta nell’ottimizzazionedelle interrogazioni.

4.2 Progettazione logica relazionale

Il modello relazionale non si presta bene, per la sua poverta espressiva, alla proget-tazione concettuale; in questa fase si preferisce utilizzare il modello ad oggetti o ilmodello entita-relazioni. Al termine di questa fase poi, se si decide di realizzare labase di dati utilizzando un sistema relazionale, si trasforma lo schema concettualeprodotto in uno schema logico relazionale.

La trasformazione di uno schema ad oggetti in uno schema relazionale avvieneeseguendo i seguenti passi:

1. rappresentazione delle associazioni uno ad uno e uno a molti;2. rappresentazione delle associazioni molti a molti o non binarie;3. rappresentazione delle gerarchie di inclusione;4. identificazione delle chiavi primarie;5. rappresentazione degli attributi multivalore;6. appiattimento degli attributi composti.

Questa trasformazione dovrebbe essere guidata dai seguenti obiettivi:

– rappresentare le stesse informazioni;– minimizzare la ridondanza;– produrre uno schema comprensibile, per facilitare la scrittura e manutenzione delle

applicazioni.

In teoria, durante la trasformazione non si dovrebbe tenere conto di considerazionirelative all’efficienza delle applicazioni, poiche questi aspetti dovrebbero riguardarela fase di progettazione fisica (che in questo testo non viene presa in considerazione).

In generale nella conversione occorre duplicare certe informazioni e non si possonosempre rappresentare direttamente tutti i vincoli imposti dai meccanismi del model-lo ad oggetti. Per garantire la coerenza dei dati duplicati, e il rispetto dei vincolinon esprimibili nel modello relazionale, occorrera quindi definire opportunamente leoperazioni che modificano la base di dati.

Nel seguito verra descritto un metodo per trasformare uno schema descritto conil modello ad oggetti in uno equivalente descritto con il modello relazionale, pren-dendo in considerazione solo gli aspetti riconducibili a dati (aspetti strutturali). Nelprossimo capitolo sulla teoria relazionale dei dati vedremo invece un altro approccioalla progettazione di uno schema relazionale, basato su un metodo formale che parteda una descrizione dei fatti da trattare data in modo completamente diverso. Alcuni

Page 18: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 108

risultati di questa teoria consentono pero di giustificare anche la ragionevolezza delleregole di trasformazione presentate in questo capitolo.

Il metodo che definiremo applica i primi tre passi alla rappresentazione grafica diuno schema ad oggetti, producendo, come risultati intermedi, dei disegni che conten-gono sempre meno costrutti ad oggetti, fino ad arrivare ad uno schema totalmente re-lazionale. Gli attributi delle classi vengono quindi presi in considerazione solo per gliultimi tre passi. Il metodo sara esemplificato applicandolo ad una versione modificatadello schema studiato nel Capitolo 3, rappresentata in Figura 4.2.

DomandeTrasferimento

PraticheTrasferimento

DelibereConvalidaEsami

BozzeDiDelibere

DelibereApprovateCorsi

CorsiEsterni CorsiInterni

Causa

EvasaDa

ApprovataIn

Convalida

DichiaratoIn

ConsideratoIn

ConvalideTipiche

PrevioColloquio

||

||

|

——

Figura 4.2: Lo schema ad oggetti da trasformare

4.2.1 Rappresentazione delle associazioni binarieuno a molti e uno ad uno

Come abbiamo gia visto, le associazioni uno a molti si rappresentano aggiungendoagli attributi della relazione rispetto a cui l’associazione e univoca una chiave esternache riferisce l’altra relazione. Ad esempio, la relazione tra esami e studenti, essendounivoca rispetto agli esami, si rappresenta aggiungendo agli esami una chiave esternaCandidato.

Quando l’associazione e uno ad uno, la chiave esterna si aggiunge ad una qualun-que delle due relazioni, preferendo quella rispetto a cui l’associazione e totale, nelcaso in cui esista un vincolo di totalita. Se l’associazione ha degli attributi, questivanno aggiunti alla relazione a cui si aggiunge la chiave esterna. Graficamente, que-sto significa operare le sostituzioni specificate in Figura 4.3 su tutte le associazionipresenti nello schema, ignorando la presenza o meno delle indicazioni di parzialita,

Page 19: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 109

tranne che nel caso di associazioni uno ad uno, in cui la parzialita aiuta ad effettuarela scelta della direzione della freccia.

AAttributi

BAttributi

R

AAttributi

BAttributi

R

AAttributi

R

|

AAttributi

BAttributi

RAttributi

Tipi di associazioni

AAttributiR ⌧FK(B)�

BAttributi

R

AAttributiR ⌧FK(B)�

BAttributi

R

AAttributiR ⌧FK(A)�

R

AAttributiR ⌧FK(B)�R Attributi

BAttributi

R

Rappresentazione nel modello relazionale

Figura 4.3: Regole per il primo passo di trasformazione

La direzione dell’associazione rappresentata dalla chiave esterna e detta “la diret-ta” dell’associazione. Nel modello relazionale si riescono a rappresentare i seguentivincoli sulla cardinalita delle associazioni uno a molti ed uno ad uno:

– univocita della diretta;– totalita della diretta: si rappresenta imponendo un vincolo not null sulla chiave

esterna;– univocita dell’inversa e totalita della diretta: si rappresenta imponendo un vincolo

not null ed un vincolo di chiave sulla chiave esterna.

Non si riescono invece a rappresentare i seguenti vincoli:

– totalita dell’inversa;– univocita dell’inversa quando la diretta e parziale: in questo caso non e possi-

bile imporre un vincolo di chiave sulla chiave esterna per assicurare l’univocitadell’inversa, poiche il vincolo di chiave e sempre associato ad un vincolo not null.

Ad esempio, applicando questa trasformazione alla Figura 4.2, si ottiene il disegno inFigura 4.4.2

2. Per evitare confusione, i nomi delle chiavi esterne appariranno solo nello schema relazionale finale,e non negli schemi dei passaggi intermedi.

Page 20: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 110

DomandeTrasferimento

PraticheTrasferimento

DelibereConvalidaEsami

BozzeDiDelibere

DelibereApprovateCorsi

CorsiEsterni CorsiInterni

Causa

EvasaDa

ApprovataIn

Convalida

DichiaratoIn

ConsideratoIn

ConvalideTipiche

PrevioColloquio

||

Figura 4.4: Effetto del primo passo di trasformazione

4.2.2 Rappresentazione di associazioni molti a moltiUn’associazione molti a molti tra due classi si rappresenta aggiungendo allo schemauna nuova relazione che contiene due chiavi esterne che riferiscono le due relazionicoinvolte; la chiave primaria di questa relazione e costituita dall’insieme di tutti i suoiattributi. Questa relazione contiene un’ennupla per ogni istanza dell’associazione. Sel’associazione ha degli attributi, questi attributi vengono aggiunti alla nuova relazione,e non vanno a far parte della chiave della nuova relazione.

Graficamente, questo significa operare la sostituzione specificata in Figura 4.5 sututte le associazioni molti a molti nello schema, ignorando la presenza o meno delleindicazioni di parzialita.

Ad esempio, applicando questa trasformazione alla Figura 4.4, si ottiene il disegnoin Figura 4.6, dove la relazione EsamiInDomanda rappresenta l’associazione molti amolti tra domande e corsi. Supponendo che ad ogni corso sia stato associato un co-dice che lo identifica, la relazione EsamiInDomanda conterra, per ogni domanda conun numero di protocollo n, una coppia (c, n) per ogni corso con codice c il cui esamesia stato superato dallo studente che ha presentato la domanda. Analogamente l’asso-ciazione ConvalideTipiche diventa una relazione che contiene, oltre alle chiavi esterne,l’attributo PrevioColloquio.

Page 21: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 111

AAttributi

BAttributi

R

AAttributi

R

|

AAttributi

BAttributi

RAttributi

Tipi di associazioni

AAttributi

RA ⌧PK�⌧FK(A)�B ⌧PK�⌧FK(B)�

BAttributi

BA

AAttributi

RA1 ⌧PK�⌧FK1(A)�A2 ⌧PK�⌧FK2(A)�

A1 A2

AAttributi

RA ⌧PK�⌧FK(A)�B ⌧PK�⌧FK(B)�R Attributi

BAttributi

BA

Rappresentazione nel modello relazionale

Figura 4.5: Regole per il secondo passo di trasformazione

DomandeTrasferimento

EsamiInDomanda

PraticheTrasferimento

DelibereConvalideEsami

BozzeDiDelibere

DelibereApprovateCorsi

CorsiEsterni CorsiInterni

ConvalideTipiche

Figura 4.6: Effetto del secondo passo di trasformazione

Page 22: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 112

4.2.3 Rappresentazione delle gerarchie fra classi

Sia data una classe A con due sottoclassi B e C, tali che i tipi associati alle tre classiabbiano, rispettivamente, attributi (XA), (XAXB) e (XAXC), e sia KA la chiave primariadi A.3

Nel modello relazionale vi sono almeno tre modi diversi di rappresentare questasituazione:

1. relazione unica: si definisce un’unica relazione con attributi (XA, XB, XC, Discrimi-natore) che raccoglie tutti gli elementi delle tre classi; gli attributi XB, XC possonoassumere il valore null, e l’attributo Discriminatore serve a indicare la classe a cuiappartiene l’elemento;

2. partizionamento verticale: si definiscono tre relazioni RA(XA), RB(KA, XB) e RC(KA,XC). RA contiene tutti gli elementi della classe A, anche se stanno in qualche sotto-classe, mentre RB ed RC contengono solo quegli attributi, degli elementi di B e diC, che non sono in XA (attributi propri delle sottoclassi), ed una chiave esterna KAche permette di ritrovare in RA il valore degli altri attributi. KA e anche la chiaveprimaria di RB ed RC;

3. partizionamento orizzontale: si definiscono tre relazioni RA(XA), RB(XA,XB), RC(XA,XC). RA contiene solo gli elementi della classe A che non stanno in nessuna dellesottoclassi, mentre RB ed RC contengono tutti gli elementi di B e di C; se le sotto-classi costituiscono una copertura, la relazione RA(XA) non viene definita perchesarebbe sempre vuota.

Ad esempio, supponiamo di avere una classe Corsi con due attributi Codice (la chiave),Nome e con due sottoclassi di tipo partizione: CorsiInterni, con un attributo Crediti, edCorsiEsterni, con due attributi CorsoDiLaurea, AnnoAccademico.

Le tre tecniche precedenti darebbero i seguenti risultati:

1. relazione unica : si definisce la relazione

CorsiCodice :int ⌧PK�Nome :stringCrediti :intCorsoDiLaurea :stringAnnoAccademico :intInternoOEsterno :(’Interno’, ’Esterno’)

che raccoglie tutti i corsi; gli attributi Crediti, CorsoDiLaurea, AnnoAccademico sonoopzionali, ed il discriminatore InternoOEsterno indica se il corso e interno o meno;

2. partizionamento verticale : si definiscono tre relazioni

3. Per semplicita, trascuriamo il problema dell’eventuale ridefinizione del tipo degli attributi nellesottoclassi.

Page 23: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 113

CorsiCodice :int ⌧PK�Nome :string

CorsiInterniCodice :int ⌧PK� ⌧FK(Corsi)�Crediti :int

CorsiEsterniCodice :int ⌧PK� ⌧FK(Corsi)�CorsoDiLaurea :stringAnnoAccademico :int

Codice Codice

Corsi contiene il codice ed il nome di tutti i corsi, mentre le altre due relazionicontengono gli attributi propri delle sottoclassi, nonche il codice, che permette dirisalire al nome;

3. partizionamento orizzontale : trattandosi di sottoclassi che soddisfano il vincolo dicopertura si definiscono solo due relazioni

CorsiInterniCodice :int ⌧PK�Nome :stringCrediti :int

CorsiEsterniCodice :int ⌧PK�Nome :stringCorsoDiLaurea :stringAnnoAccademico :int

che contengono separatamente tutte le informazioni relative a corsi interni e corsiesterni.

La tecnica da usare si puo scegliere come segue. Se gli attributi propri delle sottoclassisono pochi si sceglie la relazione unica, che e la tecnica piu semplice. Altrimenti, sisceglie tra le altre due tecniche tenendo presente che:

– il partizionamento orizzontale divide gli elementi della superclasse in piu relazionidiverse, per cui non e possibile mantenere un vincolo referenziale verso la super-classe stessa; in conclusione, questa tecnica non si usa se nello schema relazionalegrafico c’e una freccia che entra nella superclasse;

– il partizionamento verticale rende piu complessa la ricostituzione di tutte le in-formazioni relative ad un elemento della sottoclasse, mentre il partizionamentoorizzontale rende piu complessa l’operazione di visita a tutti gli elementi del-la superclasse, per cui e necessario valutare l’importanza relativa di queste dueoperazioni;

– il partizionamento orizzontale e preferibile in presenza di un vincolo di coperturaperche ne puo garantire il mantenimento; il partizionamento orizzontale funzionaal meglio in presenza di un vincolo di disgiunzione, perche, quando un oggettoappartiene a piu sottoclassi, questa rappresentazione replica la chiave e gli attributidella superclasse in tutte le relazioni a cui l’oggetto appartiene, e diviene complessomantenere la consistenza di queste informazioni replicate.

Page 24: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 114

La Figura 4.7 rappresenta l’esecuzione grafica delle tre possibili trasformazioni, mo-strando anche l’effetto dell’operazione sulle associazioni che escono ed entrano neitre rettangoli.

AKA ⌧K�XAR ⌧FK(. . . )�

BXB

CXCW ⌧FK(. . . )�

R S

TW

Gerarchia da trasformare

AKA ⌧PK�XAXBXCR ⌧FK(. . . )�W ⌧FK(. . . )�Discriminatore

R

T

S

W

Rappresentazione

con relazione unica

AKA ⌧PK�XAR ⌧FK(. . . )�

BKA ⌧K�⌧FK(A)�

XB

CKA ⌧K�⌧FK(A)�

XCW ⌧FK(. . . )�

R S

TW

KA KA

Rappresentazione

per partizionamento verticale

AKA ⌧PK�XAR ⌧FK(. . . )�

BKA ⌧PK�XAXBR ⌧FK(. . . )�

CKA ⌧PK�XAXCR ⌧FK(. . . )�W ⌧FK(. . . )�

R S (?)

T

RWR

Rappresentazione

per partizionamento orizzontale

Figura 4.7: Regole per il terzo passo di trasformazione

Applicando questa trasformazione alla Figura 4.6, si ha la Figura 4.8. Le sottoclassiimmediate della classe di corsi sono state rappresentate sfruttando il partizionamentoverticale, per la presenza di attributi propri nelle sottoclassi, mentre le sottoclassi didelibere sono state trattate con la tecnica della relazione unica data la scarsita degliattributi propri. Poiche in tutti e due i casi le superclassi sono riferite da chiavi esterne,la tecnica del partizionamento orizzontale non e mai stata utilizzata.

Page 25: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 115

DomandeTrasferimento

EsamiInDomanda

PraticheTrasferimento

DelibereConvalideEsami

Corsi

CorsiEsterni CorsiInterni

ConvalideTipiche

Figura 4.8: Effetto del terzo passo di trasformazione

4.2.4 Definizione delle chiavi primarieIl quarto passo della trasformazione e il primo che non puo essere eseguito sulloschema grafico ma va eseguito a partire da un’analisi degli attributi.

In questa fase si deve definire, per ognuna delle relazioni dello schema, un insiemedi attributi che funga da chiave primaria.

Per prima cosa, si considerano le relazioni che corrispondono a classi dello schemaoriginale che erano prive di superclassi (classi radice). La chiave primaria e di normaun attributo artificiale, tipicamente un numero progressivo assegnato dal sistema. Epossibile utilizzare un attributo presente nella classe, purche l’attributo sia univoco,totale e costante. Nei nostri esempi, per semplicita, useremo questo approccio.

Poi, per ogni relazione dello schema che corrisponde ad una sottoclasse dello sche-ma originario, la chiave primaria sara la stessa della superclasse. Infine, per le relazio-ni che corrispondono ad associazioni molti a molti nello schema originario, la chiaveprimaria sara costituita dalla concatenazione delle chiavi esterne.

L’inserimento di una chiave primaria in ogni collezione trasforma effettivamentetutte le classi in relazioni in senso matematico, ovvero in collezioni dove non possonoesistere due elementi diversi che coincidono su tutti gli attributi. Tuttavia, per sod-disfare il modello relazionale, e necessario eliminare da queste relazioni gli attributimultivalore e strutturati.

In Figura 4.9 e mostrato la versione dello schema di esempio con gli attributi, lechiavi primarie e le chiavi esterne.

Page 26: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 116

DomandeTrasferimentoNumeroProtocollo :int ⌧K�DataPresentazione :date

EsamiInDomandaDomanda :int⌧K� ⌧FK(DomandeTrasferimento)�

Corso :int⌧K� ⌧FK(Corsi)�

PraticheTrasferimentoAnnotazioni :stringNumeroProgressivo :int ⌧K�Domanda :int⌧FK(DomandeTrasferimento)�

DelibereAnnotazioni :stringDataVerbale :dateNumVerbale :intBozzaOApprovata :boolCodiceDelibera :int ⌧K�Pratica :int⌧FK(PraticheTrasferimento)�

ConvalideEsamiPrevioColloquio :boolDelibera :int⌧K� ⌧FK(Delibere)�

CorsoConsiderato :int⌧K� ⌧FK(Corsi)�

CorsoEquivalente :int⌧FK(CorsiInterni)�

CorsiNome :stringCodice :int ⌧K�

CorsiEsterniCorso :int⌧K� ⌧FK(Corsi)

AnnoAccademico :int

CorsiInterniCorso :int⌧K� ⌧FK(Corsi)

Crediti :int

Corso Corso

Domanda

Pratica

Delibera

CorsoEquivalente

Domanda

Corso

CorsoConsiderato

ConvalideTipiche

CorsoEsterno :int⌧K� ⌧FK(CorsiEsterni)

CorsoInterno :int⌧K� ⌧FK(CorsiInterni)

PrevioColloquoi :bool

CorsoInternoCorsoEsterno

Figura 4.9: Lo schema finale dell’esempio

Page 27: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.2. Progettazione logica relazionale 117

4.2.5 Rappresentazione delle proprieta multivaloreUna proprieta multivalore di una classe C si rappresenta eliminando il corrispondenteattributo da C e creando una relazione con due attributi: una chiave esterna che fariferimento alla chiave primaria di C ed un attributo che corrisponde all’attributomultivalore da trasformare. Un oggetto con chiave primaria k ed in cui l’attributoassume valore a1, . . . , an si rappresenta poi inserendo nella nuova relazione n coppie(k, a1), . . . ,(k, an).

Ad esempio, si immagini che ad ogni corso interno sia associato un attributo mul-tivalore strutturato Docenti che indica tutti i docenti che insegnano attualmente talecorso.

CorsiInterniCodice :int ⌧PK� ⌧FK(Corsi)�Crediti :intDocenti :seq [Nome :string,

Cognome :string]

Applicando la trasformazione, si ottengono le due seguenti relazioni:

CorsiInterniCodice :int ⌧PK� ⌧FK(Corsi)�Crediti :int

DocentiCorsiInterniCodice :int ⌧PK� ⌧FK(CorsiInterni)�Docente :[Nome :string, Cognome :string] ⌧PK�

Codice

La chiave primaria della nuova relazione e costituita dalla concatenazione di tutti isuoi attributi. Gli attributi marcati con la stringa⌧FK� sono la chiave esterna.

4.2.6 Appiattimento degli attributi compostiSe un attributo Ai di uno schema di relazione e di tipo [Ai1 : Ti1, . . . , Aij : Tij], si sosti-tuisce con gli attributi Ai1 : Ti1, . . . , Aij : Tij. Se Ai faceva parte della chiave primariadello schema di relazione, si sostituisce Ai con gli attributi Ai1, . . . , Aij nella chia-ve, e poi si verifica che non esista un sottoinsieme degli attributi della nuova chiaveprimaria che e esso stesso una chiave.

Ad esempio, applicando la trasformazione alla relazione DocentiCorsiInterni si ottie-ne:

DocentiCorsiInterniCodice :int ⌧PK� ⌧FK(CorsiInterni)�Nome :string ⌧PK�Cognome :string ⌧PK�

A questo punto, se si ritenesse che il cognome identifichi univocamente un docente,per lo meno all’interno di un singolo corso, si dovrebbe eliminare Nome dagli attributiche costituiscono la chiave primaria.

Page 28: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 118

Al termine di questo passo, lo schema ottenuto rappresenta uno schema relazionaleche equivale a quello ad oggetti di partenza, se non per il fatto che alcuni vincoli sonoandati perduti.

4.3 Algebra relazionale

Con il termine algebra relazionale si designa in generale un insieme di operatori surelazioni che danno come risultato altre relazioni. Nel seguito si definira prima uninsieme minimo di operatori (operatori primitivi), poi si dara la definizione di altrioperatori (operatori derivati), derivati dai precedenti, che sono comodi per esprimerein modo sintetico alcune operazioni complesse molto frequenti nell’uso di basi di datirelazionali. Infine, si mostreranno alcuni operatori non definibili a partire da quellidi base, ma altrettanto utili nelle applicazioni. Per semplificare la definizione deglioperatori, si suppone che le relazioni non contengano ennuple con valori nulli.

4.3.1 Gli operatori primitivi

Nelle definizioni che seguono useremo le seguenti notazioni:

– i simboli R, S ecc. sono nomi di relazioni; A,B,C,A1, A2 ecc. sono nomi di attributie X, Y, X1 ecc. sono insiemi di attributi;

– XY e un’abbreviazione per X[ Y;– una relazione con ennuple t1, t2, . . . , tn verra denotata con {t1, t2, . . . , tn}, e una

relazione vuota verra denotata con {};– i simboli Ai, Aj ecc. denotano attributi e tk.Ai denota il valore di Ai nell’ennuplatk; se X e un sottoinsieme degli attributi di t, t.X o t[X] denota l’ennupla ottenutada t considerando solo gli attributi in X;

– quando due relazioni R ed S hanno lo stesso attributo Aj, in caso di ambiguita,R.Aj denota l’attributo Aj della relazione R ed S.Aj denota l’attributo Aj dellarelazione S.

Gli operatori primitivi sono: ridenominazione, unione, differenza, proiezione, restrizione eprodotto.

Ridenominazione

Questo operatore si usa per cambiare il tipo di una relazione R.Siano X gli attributi di R, A e B due attributi tali che A 2 X e B 62 X. R con A

ridenominato B, denotata con ⇢A B(R), e una relazione con attributi X - {A} [ {B}definita come segue:

⇢A B(R) = {t | 9u 2 R tale che t[B] = u[A]^ t[C] = u[C] se C 6= B)}.

Page 29: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 119

Unione

R[ S = {t | t 2 R_ t 2 S},

con R ed S relazioni dello stesso tipo. Restituisce la relazione ottenuta facendo l’unionedelle ennuple di R con quelle di S. Ad esempio, se R : {T }, e t : T un’ennupla non in R,R[ {t} sta per la relazione ottenuta aggiungendo ad R l’ennupla t.

Differenza

R- S = {t | t 2 R^ t 62 S},

con R ed S relazioni dello stesso tipo. Restituisce la relazione contenente le ennupledi R non presenti in S. Ad esempio, se R : {T }, e t : T un’ennupla in R, R- {t} sta per larelazione ottenuta eliminando l’ennupla t da R.

Proiezione

⇡A1,A2,...,Am(R) = {t[A1A2 . . .Am] | t 2 R},

con A1, A2, . . . , Am attributi di R. Restituisce una relazione di tipo {(A1 : T1, A2 :T2, . . . , Am : Tm)} i cui elementi sono la copia delle ennuple di R proiettate sugli attri-buti A1, A2, . . . , Am. Poiche le relazioni sono insiemi, eventuali ennuple uguali dopola proiezione appaiono una sola volta nel risultato.

Restrizione

��(R) = {t | t 2 R^�(t)}.

Restituisce una relazione dello stesso tipo di R i cui elementi sono la copia delleennuple di R che soddisfano la condizione. La condizione � e una formula definitacome segue:– Ai ✓Aj, con Ai e Aj attributi di R e ✓ un operatore di confronto {<, >, =, 6=, 6, >};– Ai ✓ c, oppure c ✓Ai, con ✓ un operatore di confronto e c una costante in dom(Ai);– se � e sono formule, allora lo sono anche �^ , �_ e ¬ .

Prodotto

R⇥ S = {tu | t 2 R^ u 2 S},

con R(A1 : T1, . . . , An : Tn) e S(An+1 : Tn+1, . . . , An+m : Tn+m) relazioni con attribu-ti distinti. Restituisce una relazione del tipo {(A1 : T1, . . . , An : Tn, An+1 : Tn+1, . . . ,An+m : Tn+m)} con elementi ottenuti concatenando ogni ennupla di R con tutte quelledi S. La concatenazione tu di due ennuple t e u e un’ennupla che ha come coppie(Ai, Vi) tutte quelle di t e di u, e si indica anche con t � u. La relazione risultante ha

Page 30: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 120

grado uguale alla somma dei gradi degli operandi, e cardinalita uguale al prodottodelle cardinalita degli operandi. Il nome di questo operatore e dato dalla sua somi-glianza con il prodotto cartesiano di insiemi, sebbene dia come risultato un insiemedi ennuple concatenate invece di un insieme di coppie di ennuple, come accadrebbenel normale prodotto cartesiano.

Espressione dell’algebra relazionale

Un’espressione dell’algebra relazionale e definita come segue:

– una relazione R o una relazione {t1, t2, . . . , tn} sono espressioni dell’algebra;– se E, E1 e E2 sono espressioni dell’algebra, lo sono anche

– E1 [ E2, se E1 e E2 hanno lo stesso tipo;– E1 - E2 , se E1 e E2 hanno lo stesso tipo;– E1 ⇥ E2, se E1 e E2 non hanno attributi comuni;– �C(E), se C e una condizione su attributi di E;– ⇡X(E), se X sono attributi di E;– ⇢A B(E), se X sono gli attributi di E, A e B sono due attributi tali che A 2 X eB 62 X.

Esempio 4.1 Siano R(A,B,C), S(A,B,C) e T(A,D), tre schemi di relazioni conattributi definiti sui domini: dom(A) = {a1, a2, a3}, dom(B) = {b1, b2, b3},dom(C) = {c1, c2} e dom(D) = {d1, d2}. Si mostra il risultato degli operatoridell’algebra applicati alle tre seguenti relazioni:

RA B C

a1 b1 c1a1 b1 c2a2 b1 c1a3 b1 c1

SA B C

a1 b1 c1a1 b2 c2

TA D

a1 d1a2 d2

R[ S = A B C

a1 b1 c1a1 b1 c2a2 b2 c2a2 b1 c1a3 b1 c1

R- S = A B C

a1 b1 c2a2 b1 c1a3 b1 c1

Page 31: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 121

�A= 0a 01(R) = A B C

a1 b1 c1a1 b1 c2

⇡A(R) = A

a1a2a3

T 0 = ⇢A A 0(T) = A’ D

a1 d1a2 d2

R ⇥ T 0 = A B C A’ D

a1 b1 c1 a1 d1a1 b1 c1 a2 d2a1 b1 c2 a1 d1a1 b1 c2 a2 d2a2 b1 c1 a1 d1a2 b1 c1 a2 d2a3 b1 c1 a1 d1a3 b1 c1 a2 d2

Esempio 4.2 Vediamo degli esempi di operazioni sulla base di dati con relazioniStudenti e ProveEsami, e i loro risultati. L’attributo Matricola e chiave primariaper la relazione Studenti e l’attributo Candidato e chiave esterna per la relazioneProveEsami ed e definito sullo stesso dominio di Matricola.

StudentiNome Matricola Provincia Nascita

Isaia 71523 Pisa 1980Rossi 67459 Lucca 1981Bianchi 79856 Livorno 1980Bonini 75649 Pisa 1981

ProveEsamiMateria Candidato Data Voto

BD 71523 12/01/01 28BD 67459 15/09/02 30IA 79856 25/10/03 30BD 75649 27/06/01 25IS 71523 10/10/02 18

“Trovare il nome e la matricola degli studenti della provincia di Pisa”

⇡Nome, Matricola(�Provincia = ’PI’(Studenti))

Page 32: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 122

Nome Matricola

Isaia 71523Bonini 75649

“Trovare il nome e l’anno di nascita degli studenti che hanno superato l’esame diBD con trenta”

Supponiamo di calcolare il risultato in piu passi usando la seguente strategia:poiche occorrono informazioni sia dalla relazione Studenti che dalla relazioneProveEsami, si calcola prima il prodotto delle due relazioni, producendo unarelazione intermedia T

T = (Studenti ⇥ ProveEsami)

Nome Matricola Provincia Nascita Materia Candidato Data Voto

Isaia 71523 PI 1980 BD 71523 12/01/01 28Isaia 71523 PI 1980 BD 67459 15/09/02 30Isaia 71523 PI 1980 IA 79856 25/10/03 30Isaia 71523 PI 1980 BD 75649 27/06/01 25Isaia 71523 PI 1980 IS 71523 10/10/02 18Rossi 67459 LU 1981 BD 71523 12/01/01 28Rossi 67459 LU 1981 BD 67459 15/09/02 30Rossi 67459 LU 1981 IA 79856 25/10/03 30Rossi 67459 LU 1981 BD 75649 27/06/01 25Rossi 67459 LU 1981 IS 71523 10/10/02 18Bianchi 79856 LI 1980 BD 71523 12/01/01 28Bianchi 79856 LI 1980 BD 67459 15/09/02 30Bianchi 79856 LI 1980 IA 79856 25/10/03 30Bianchi 79856 LI 1980 BD 75649 27/06/01 25Bianchi 79856 LI 1980 IS 71523 10/10/02 18Bonini 75649 PI 1981 BD 71523 12/01/01 28Bonini 75649 PI 1981 BD 67459 15/09/02 30Bonini 75649 PI 1981 IA 79856 25/10/03 30Bonini 75649 PI 1981 BD 75649 27/06/01 25Bonini 75649 PI 1981 IS 71523 10/10/02 18

Il prodotto di due relazioni e un’operazione che di solito non si usa da sola, neper relazioni che non descrivono fatti in associazione mediante il meccanismodella chiave esterna. Infatti, le uniche ennuple significative in T sono quelle conuguali valori degli attributi Matricola e Candidato:

R = �Matricola = Candidato(T)

Pertanto per concatenare ennuple in associazione, si restringe sempre il prodottoalle ennuple con valore uguale della chiave esterna e chiave primaria. Per questa

Page 33: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 123

ragione piu avanti si introduce un operatore derivato, chiamato giunzione, perriferirsi alla combinazione di queste due operazioni.

Nome Matricola Provincia Nascita Materia Candidato Data Voto

Isaia 71523 PI 1972 BD 71523 12/01/01 28Isaia 71523 PI 1972 IS 71523 10/10/02 18Rossi 67459 LU 1970 BD 67459 15/09/02 30Bianchi 79856 LI 1971 IA 79856 25/10/03 30Bonini 75649 PI 1972 BD 75649 27/06/01 25

Il risultato finale e calcolato con l’espressione:

⇡Nome, Nascita(�Materia = 0BD 0^Voto = 30(R))

Lo stesso risultato poteva essere calcolato direttamente con l’espressione:

⇡Nome, Nascita(�Materia = 0BD 0^Voto = 30^Matricola = Candidato(Studenti ⇥ ProveEsami))

4.3.2 Operatori derivatiDiamo la definizione di alcuni operatori che sono un’utile abbreviazione di espressio-ni dell’algebra usate frequentemente: intersezione, divisione, giunzione ( join), giunzionenaturale (natural join), giunzione esterna (external join) e semi-giunzione (semijoin).

Intersezione

R\ S = {t | t 2 R^ t 2 S},

con R ed S relazioni dello stesso tipo. Restituisce la relazione ottenuta facendo l’inter-sezione delle ennuple di R e di S. Vale l’equivalenza R\ S ⌘ R- (R- S).

Divisione

R÷ S = {w | 8s 2 S.w � s 2 R} = {w | {w}⇥ S ✓ R}.

Siano XY gli attributi di R ed Y gli attributi di S. L’operatore divisione restituisce unarelazione W = R÷ S (che si legge “W e R divisa per S”) con attributi X ed elementiw la proiezione sugli attributi X delle ennuple di R tali che per ogni ennupla s di S,w � s 2 R.

Vale l’equivalenza R÷ S ⌘ ⇡X(R)- R1, con R1 = ⇡X((⇡X(R)⇥ S)- R).Il prodotto e la divisione sono legati dalle seguenti relazioni, valide nell’ipotesi che

gli attributi di S e W siano disgiunti e la loro unione dia gli attributi di R:

Page 34: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 124

(W ⇥ S)÷ S = W, (R÷ S)⇥ S ✓ R

In piu, R÷ S e il massimo insieme per cui vale (R÷ S)⇥ S ✓ R.La divisione R÷ S serve tipicamente a rispondere a domande del tipo: trovare le

ennuple di R associate a tutte le ennuple di S. Ad esempio, la seguente espressionerestituisce la matricola di tutti gli studenti che hanno superato sia ‘BDSI1’ che ‘IA’:

⇡Candidato( ProveEsami ÷{(Materia:=’BDSI1’), (Materia:=’IA’)}).

Giunzione

R ./Ai=Aj

S = {t � u | t 2 R, u 2 S, t.Ai = u.Aj},

con R(A1 : T1, . . . , An : Tn) ed S(An+1 : Tn+1, . . . , An+m : Tn+m) relazioni con attri-buti distinti, Ai attributo di R e Aj attributo di S. Restituisce una relazione di tipo{(A1 : T1, . . . , An : Tn,An+1 : Tn+1, . . . , An+m : Tn+m)} con elementi la copia delle en-nuple del prodotto cartesiano di R ed S, con valori uguali per gli attributi Ai e Aj,ovvero (R ./

Ai=AjS) ⌘ �Ai=Aj

(R⇥ S). Questo operatore e di solito chiamato equijoin,per distinguerlo dal ✓-join in cui la restrizione non e limitata ai valori uguali degli at-tributi Ai e Aj, ma e consentita con valori in una relazione specificata con un qualsiasioperatore di confronto.

Giunzione naturale

R./S,

con gli attributi di uguali nomi in R ed S definiti sugli stessi domini. Sia R(YX) edS(ZX) con X gli attributi in comune. R./S restituisce una relazione con attributi (YXZ)tale che

t 2 R./S, t[YX] 2 R e t[ZX] 2 S.

Questo operatore puo essere definito a partire dagli operatori primitivi nel seguentemodo. Siano A1, . . . , An gli attributi X comuni ad R ed S.

1. Si cambia il tipo di R ed S, in modo da rendere diversi gli attributi comuni,definendo:

R 0 = ⇢A1 RA1,...,An RAn(R) ed

S 0 = ⇢A1 SA1,...,An SAn(S).

2. Sia T = �RA1=SA1 ^ ...^RAn=SAn(R0⇥ S 0).

3. La giunzione naturale di R ed S e la relazione

⇢RA1 A1,...,RAn An(⇡RA1,...,RAn,YZ(T)).

Page 35: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 125

Si ottiene cosı una relazione che ha come attributi l’unione di quelli degli operan-di, con le ennuple formate concatenando quelle di R ed S con valori uguali per gliattributi in comune (e togliendo naturalmente le coppie ridondanti).

La giunzione naturale, quindi, e una comoda abbreviazione dell’equijoin applicatoa relazioni in cui l’associazione fra le ennuple e descritta con la chiave esterna e lachiave primaria costituite da attributi uguali.

Si noti che:– se R ed S non hanno attributi comuni, R./S ⌘ R⇥ S;– se R ed S hanno lo stesso schema, R./S ⌘ R\ S;– gli operatori di giunzione, consentendo di correlare ennuple di relazioni diverse,

permettono la ricerca di ennuple in corrispondenza con il meccanismo delle chiaviesterne, e questi operatori sono gli unici che offrono questa possibilita.

Semi-giunzione

R B< S = {t 2 R | t[X] 2 ⇡X(S)},

dove X sono gli attributi comuni tra R ed S. Restituisce le ennuple di R che partecipanoalla giunzione naturale di R ed S.

Vale l’equivalenza R B< S ⌘ ⇡A1,A2,...,Am(R./S), con A1, A2, . . . , Am gli attributi di R.

Giunzione esterna

R$./ S,

restituisce la giunzione naturale di R ed S, estesa con le ennuple di R ed S che nonappartengono alla giunzione naturale, completate con valori nulli per gli attributimancanti. Viene anche chiamata giunzione esterna completa.

Siano X gli attributi di R, Y gli attributi di S, A1, A2, . . . , An gli attributi in R e nonin S, B1, B2, . . . , Bm gli attributi in S e non in R, vale l’equivalenza

R$./ S ⌘(R./S)[ ((R-⇡X(R./S)⇥ {(B1 = null, . . . , Bm = null)})[({(A1 = null, . . . , An = null)}⇥ (S-⇡Y(R./S))).

Esistono altri due tipi di giunzioni esterne, dette giunzione esterna sinistra (R ./ S) e

giunzione esterna destra (R!./ S). Nel primo caso, solo le ennuple dell’argomento sini-

stro R che non appartengono alla giunzione naturale appaiono nel risultato, mentrenel secondo caso appaiono solo quelle dell’argomento destro S.

Esempio 4.3 Si mostrano esempi di applicazione degli operatori derivati allerelazioni dell’esempio 4.1.

Page 36: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 126

R \ S = A B C

a1 b1 c1R ./

A=A0 T 0 = A B C A’ D

a1 b1 c1 a1 d1a1 b1 c2 a1 d1a2 b1 c1 a2 d2

R./ T = A B C D

a1 b1 c1 d1a1 b1 c2 d1a2 b1 c1 d2

R B< T = A B C

a1 b1 c1a1 b1 c2a2 b1 c1

R$./ T = A B C D

a1 b1 c1 d1a1 b1 c2 d1a2 b1 c1 d2a3 b1 c1 null

4.3.3 Proprieta algebriche degli operatori relazionaliUn’espressione dell’algebra relazionale puo essere trasformata in un’altra equiva-lente sfruttando alcune proprieta degli operatori. Queste trasformazioni sono utiliperche possono ridurre di ordini di grandezza il costo di esecuzione delle espressioni(riscrittura algebrica).

Si consideri la rappresentazione di un’espressione algebrica come un albero le cui fo-glie siano le relazioni e i nodi interni sono gli operatori dell’algebra; i figli di un nodointerno N sono gli operandi dell’operatore associato al nodo N (si veda la Figura 4.10).

L’idea alla base della riscrittura algebrica e di anticipare l’applicazione degli opera-tori di proiezione e restrizione rispetto al prodotto e alla giunzione (spostamento versole foglie della proiezione e restrizione), in modo da ridurre la dimensione dei risultatiintermedi. Poiche la restrizione e l’operatore che in generale produce una relazionecon un numero di ennuple inferiore rispetto a quello della relazione a cui viene ap-plicato, le proprieta piu utili dell’algebra relazionale sono quelle che consentono dianticipare l’operatore di restrizione. E anche utile anticipare l’operazione di proiezio-ne rispetto al prodotto e alla giunzione, perche una proiezione riduce la dimensionedelle ennuple dell’operando ed elimina eventuali ennuple uguali dal risultato.

Indicando con E un’espressione dell’algebra relazionale, esempi di regole su cui sibasa la riscrittura sono:

Page 37: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 127

⇡Nome, Matricola

./Matricola = Candidato

⇡Nome, Matricola

�Provincia= 0PI 0

Studenti

⇡Candidato

�Voto= 25

Esami

Figura 4.10: Rappresentazione ad albero di un’espressione algebrica

1. Raggruppamento di restrizioni

��X(��Y

(E)) = ��X^�Y(E),

dove ��Xe l’operatore di restrizione con condizione sull’insieme di attributi X.

2. Commutativita della restrizione e della proiezione

⇡Y(��X(E)) = ��X

(⇡Y(E)), se X ✓ Y.

Se la condizione interessa attributi X 6✓ Y, allora vale:

⇡Y(��X(E)) = ⇡Y(��X

(⇡XY(E))).

3. Anticipazione della restrizione rispetto al prodotto e alla giunzione

��X(E1 ⇥ E2) = ��X

(E1)⇥ E2,��X

(E1 ./E2) = ��X(E1)./E2,

se X sono attributi di E1.

��X^�Y(E1 ⇥ E2) = ��X

(E1)⇥��Y(E2),

��X^�Y(E1 ./E2) = ��X

(E1)./��Y(E2),

se X sono attributi di E1 ed Y sono attributi di E2.

��X^�Y ^�J(E1 ⇥ E2) = ��X

(E1)./�J

��Y(E2),

se X sono attributi di E1, Y sono attributi di E2 e �J e una condizione di giunzione.4. Raggruppamento di proiezioni

⇡Z(⇡Y(E)) = ⇡Z(E),

dove ⇡Z e l’operatore di proiezione sull’insieme di attributi Z, e Z ✓ Y in espres-sioni ben formate.

Page 38: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 128

5. Eliminazioni di proiezioni superflue

⇡Z(E) = E,

se Z sono gli attributi di E.6. Anticipazione della proiezione rispetto al prodotto e alla giunzione

⇡XY(E1 ⇥ E2) = ⇡X(E1)⇥⇡Y(E2),⇡XY(E1

./�J

E2) = ⇡X(E1)./�J

⇡Y(E2),

dove X sono attributi di E1, Y sono attributi di E2 e �J la condizione di giunzionecon attributi J ✓ XY.

⇡XY(E1./�J

E2) = ⇡XY((⇡XXE1(E1))

./�J

(⇡YXE2(E2))),

dove X sono attributi di E1, Y sono attributi di E2, XE1 sono gli attributi di giunzionedi E1 che non sono in XY e XE2 sono gli attributi di giunzione di E2 che non sonoin XY.

7. Commutativita del prodotto e della giunzione

E1 ⇥ E2 = E2 ⇥ E1E1

./�J

E2 = E2./�J

E1

8. Associativita del prodotto e della giunzione

(E1 ./E2)./E3 = E1 ./ (E2 ./E3),(E1

./�J1

E2)./

�J2^�J3

E3 = E1./

�J1^�J3

(E2./�J2

E3),

dove �J2 contiene attributi solo di E2 e E3. Se mancano le condizioni di giunzione,ne segue che anche il prodotto ⇥ e associativo.

9. Commutativita degli operatori insiemistici

E1 [ E2 = E2 [ E1E1 \ E2 = E2 \ E1E1 - E2 6= E2 - E1

10. Associativita degli operatori insiemistici

(E1 [ E2)[ E3 = E1 [ (E2 [ E3)(E1 \ E2)\ E3 = E1 \ (E2 \ E3)

11. Anticipazione della restrizione rispetto agli operatori insiemistici

��X(E1 - E2) = ��X

(E1)-��X(E2)

l’equivalenza vale anche sostituendo - con [ o \. Mentre

��X(E1 - E2) = ��X

(E1)- E2

vale anche sostituendo - con \, ma non con [.12. Anticipazione della proiezione rispetto agli operatori insiemistici

⇡X(E1 [ E2) = (⇡X(E1))[ (⇡X(E2))

Page 39: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 129

Un possibile algoritmo di riscrittura algebrica procede quindi secondo i seguentipassi:1. Si anticipa l’esecuzione delle restrizioni sulle proiezioni usando la regola 2 da de-

stra verso sinistra (in tutti gli altri casi le regole verranno usate nell’altra direzione);dato che la regola e usata in questa direzione, vale sempre la condizione X ✓ Y.

2. Si raggruppano le restrizioni usando la regola 1.3. Si anticipa l’esecuzione delle restrizioni sul prodotto e sulla giunzione usando la

regola 3.4. Si ripetono i tre passi precedenti fino a che e possibile.5. Si eliminano le proiezioni superflue usando la regola 5.6. Si raggruppano le proiezioni usando la regola 4.7. Si anticipa l’esecuzione delle proiezioni rispetto al prodotto e alla giunzione usando

ripetutamente la regola 2, ma solo nel caso in cui E e un prodotto o una giunzione,e la regola 6.

In generale, quindi, il risultato di questo algoritmo e un’espressione in cui la restri-zione e la proiezione sono eseguite il piu presto possibile, e la restrizione e anticipatarispetto alla proiezione. In particolare, nel caso di espressioni con una sola giunzione,l’espressione ottimizzata ha la forma:

⇡X1(⇡X2(��Y2(R))./⇡X3(��Y3

(S))).

Ad esempio, applicando l’algoritmo all’espressione

⇡Nome, Matricola(�Provincia = ’PI’^Voto = 30(Studenti ./Matricola=Candidato ProveEsami)),

⇡Nome, Matricola

�Provincia= 0PI 0^Voto= 30

./Matricola = Candidato

Studenti ProveEsami

(a) Albero iniziale

⇡Nome, Matricola

./Matricola = Candidato

⇡Nome, Matricola

�Provincia= 0PI 0

Studenti

⇡Candidato

�Voto= 30

ProveEsami

(b) Albero trasformato

Figura 4.11: Trasformazione di un’espressione algebrica

Page 40: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 130

4.3.4 Altri operatoriEsistono interrogazioni su una base di dati relazionale che non possono essere for-mulate usando solo gli operatori di base dell’algebra relazionale. Per questa ragionesono stati proposti altri operatori, alcuni dei quali sono il complemento, le funzionidi aggregazione (aggregate functions) e la chiusura transitiva (transitive closure). Questioperatori sono considerati non essenziali, sebbene alcuni di essi, come le funzioni diaggregazione, siano presenti in tutti i sistemi commerciali.

Proiezione generalizzata

La proiezione generalizzata estende la proiezione con la possibilita di usare costanti oespressioni aritmetiche nella lista degli attributi. Per comodita si puo anche assegnareun’etichetta ad un’espressione con l’operatore AS:⇡e1 AS ide1, e2 AS ide2,..., en AS ideN(E),

con e1, . . . , en espressioni aritmetiche, ottenute a partire da costanti e attributi di E, edide1, . . . , ideN etichette distinte.

Per esempio, se A1, A2, . . . , Am attributi di tipo intero di R, si puo scrivere:⇡A1, 2 AS due, A1+A3 AS sommaA1eA3(R),per ottenere una relazione di tipo {(A1: int, due: int, sommaA1eA3: int)}.

Funzioni di aggregazione e raggruppamenti

Le funzioni di aggregazione hanno come argomenti multinsiemi e ritornano come risul-tato un valore. Per esempio, la funzione di aggregazione sum ritorna la somma deglielementi, avg ritorna la media dei valori, count ritorna il numero degli elementi, min emax ritornano il minimo e il massimo valore degli elementi. Quando interessa appli-care una funzione di aggregazione ad un multinsieme ignorando eventuali duplicati,il nome della funzione si estende con la stringa “-distinct”. Per esempio, per contaregli elementi diversi di un multinsieme invece della funzione count si usa count-distinct.

Le funzioni di aggregazione si possono usare con l’operatore di raggruppamento �,definito come segue:

A1,...,An�f1,...,fm(E),

dove A1, . . . , An sono attributi di E ed f1, . . . , fm sono funzioni di aggregazione conargomenti che sono espressioni aritmetiche ottenute a partire da costanti e attributi diE.

L’operatore restituisce una relazione di tipo {(A1 : T1, . . . , An : Tn, f1 : Tf1, . . . , fm :Tfm)}, con Tf1, . . . , Tfm i tipi dei risultati delle espressioni f1, . . . , fm, i cui elementi sonocalcolati in questo modo (Figura 4.12):– si partizionano le ennuple di E in un insieme di gruppi, mettendo nello stesso

gruppo tutte le ennuple che coincidono su tutti gli attributi A1, . . . , An. Se l’insieme{A1, . . . , An} e vuoto, gli elementi di E fanno parte di un unico gruppo;

Page 41: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.3. Algebra relazionale 131

– si calcolano le funzioni di aggregazione per ogni gruppo;– si restituisce una relazione con un’ennupla per ogni gruppo e componenti i valori

degli attributi A1, . . . , An e i risultati delle espressioni f1, . . . , fm.

——————————————————

A1,A2,...,An�...(R)

——————————————————

——————————————————

...�f1,f2,...,fk(R)————————

R

Risultato

Figura 4.12: Valutazione del raggruppamento

Ad esempio,

Materia�avg(Voto)(ProveEsami),

calcola la media dei valori dell’attributo Voto per ogni gruppo di esami con la stes-sa materia, e restituisce la relazione con attributi Materia e avg(Voto). Ad esempio,applicata alla relazione:

ProveEsamiMateria Candidato Data Voto

BD 71523 12/01/01 28BD 67459 15/09/02 30IA 79856 25/10/03 30BD 75649 27/06/01 25IS 71523 10/10/02 18

da come risultato la relazione:

Materia avg(Voto)

BD 27.6IA 30IS 18

Come nella proiezione generalizzata, gli attributi del risultato si possono ridenomina-re usando l’operatore AS. Ad esempio,

Materia�avg(Voto) AS VotoMedio(ProveEsami),

Page 42: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.4. Calcolo relazionale su ennuple 132

da come risultato la relazione:

Materia VotoMedio

BD 27.6IA 30IS 18

4.4 Calcolo relazionale su ennupleFinora una base di dati relazionale e stata pensata come un insieme di relazioni sullequali sono previsti certi operatori che costituiscono un’algebra. Un altro punto di vi-sta, ricco di conseguenze teoriche e pratiche, e di pensare una base di dati relazionalecome l’estensione di un insieme di predicati, uno per ogni relazione, che costituisconoun’interpretazione, o un modello, di una logica del primo ordine (model theoretic perspec-tive). Un’interrogazione e espressa come una formula ben formata di un linguaggiodel primo ordine e il suo risultato e ottenuto cercando gli elementi del modello che,sostituiti alle variabili libere della formula, la rendono vera. Questo punto di vistaconsente anche di trattare vincoli d’integrita generali, espressi con formule del lin-guaggio del primo ordine. Una base di dati soddisfa i vincoli d’integrita se essi sonoveri considerando l’estensione della base di dati come un modello.

L’uso della logica consente di guardare ad una base di dati relazionale anche da unaltro punto di vista, chiamato proof theoretic perspective: una base di dati e vista come uninsieme di formule di un linguaggio del primo ordine, piuttosto che come un modello,e le interrogazioni sono formule da dimostrare, a partire dalla base di dati comepremessa. Pertanto, la valutazione di un’interrogazione diventa una dimostrazione,dalla quale si estrae il risultato cercato.

Nel seguito, si adotta il primo punto di vista e si presenta un particolare linguaggiodel primo ordine per basi di dati relazionali, chiamato calcolo relazionale su ennuple,mentre il punto di vista proof theoretic verra illustrato nella sezione successiva.

Il calcolo relazionale e un linguaggio che permette di definire il risultato di un’in-terrogazione come l’insieme di quelle ennuple che soddisfano una certa condizione�.4 Ad esempio, l’insieme delle matricole degli studenti che hanno superato qualcunodegli esami elencati nella relazione Materie(Materia), si puo definire come:

{t.Matricola | t 2 Studenti, 9m 2 Materie. 9e 2 ProveEsami.e.Candidato = t.Matricola ^ e.Materia = m.Materia}

La stessa interrogazione si esprime, con la notazione algebrica, come:

4. Esiste un altro linguaggio, detto calcolo relazionale su domini, equivalente al calcolo relazionale su ennupledal quale differisce per il fatto che le variabili della condizione � assumono come valori elementi didomini invece che ennuple.

Page 43: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.5. I linguaggi logici 133

⇡Matricola(Studenti ./Matricola = Candidato (ProveEsami ./ Materie))

E in genere piu facile scrivere ed interpretare una formula usando la notazione delcalcolo, mentre la notazione algebrica e piu adatta quando si desidera specificare nonsolo il risultato dell’interrogazione ma anche in che modo questo risultato puo essereottenuto. Per questo motivo, molti sistemi offrono ai programmatori un linguaggio ba-sato sul calcolo, che poi traducono internamente in un formato algebrico al momentodi stabilire come eseguire l’interrogazione.

Si puo dire, in sintesi, che l’algebra da la possibilita di scrivere espressioni in cui glioperatori sono applicati al risultato di altri operatori (espressioni annidate), mentre ilcalcolo ha una struttura piatta ma permette di esprimere condizioni piu complesse.Un linguaggio che si colloca a meta tra i due stili si puo ottenere in uno dei due modiseguenti:

1. aggiungendo al calcolo la possibilita di annidare il costruttore di insiemi, inserendonella condizione � predicati del tipo t 2 {u | (u)};

2. aggiungendo all’algebra la possibilita di avere nell’operatore di restrizione �� con-dizioni � che fanno uso anche di quantificatori e di predicati di appartenenza arelazioni.

Il risultato di una simile fusione tra i due stili e un linguaggio che ha sia la capacita diesprimere interrogazioni in modo annidato che la possibilita di esprimere condizionilogiche complesse, come accade, ad esempio, nel linguaggio SQL, che sara illustratonel Capitolo 6. Un linguaggio basato sul calcolo relazionale su ennuple e QUEL, usatodal sistema INGRES, mentre un linguaggio basato sul calcolo relazionale su domini eQBE, descritto brevemente nel Capitolo 6.

Un risultato importante della teoria relazionale consiste nel fatto che l’algebra re-lazionale ed il calcolo relazionale su ennuple e su domini hanno lo stesso potereespressivo, cioe permettono di scrivere le stesse interrogazioni.

4.5 I linguaggi logiciI linguaggi relazionali logici sono linguaggi ispirati al linguaggio Prolog, nei qua-li un’interrogazione si esprime scrivendo un insieme di clausole Horn piatte. Unaclausola Horn piatta e una formula con la seguente struttura:

8X1, . . . , Xn.P1(t1,1, . . . , t1,n1), . . . , Pm(tm,1, . . . , tm,nm)! Q(tr,1, . . . , tr,n),

dove ogni ti,j e una costante oppure una delle variabili Xi. Nel linguaggio Datalog, ilpiu noto tra i linguaggi relazionali logici, la clausola si scrive con la seguente sintassi:

Q(tr,1, . . . , tr,n) :– P1(t1,1, . . . , t1,n1), . . . , Pm(tm,1, . . . , tm,nm),

dove ogni Pi e una relazione della base di dati, nel qual caso Pi(ti,1, . . . , ti,ni) significa

(ti,1, . . . , ti,ni) 2 Pi, oppure e un predicato definito da un’altra clausola Horn (o dalla

Page 44: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.5. I linguaggi logici 134

stessa clausola, poiche questi linguaggi ammettono le definizioni ricorsive), o, ancora,e un predicato di confronto.

Questa clausola definisce una relazione Q che contiene il minimo insieme di ennupleche soddisfano la condizione specificata dalla clausola stessa.

Ad esempio, il seguente programma, formato da due clausole, definisce una relazio-ne HannoSuperato che contiene tutti gli studenti che hanno superato una delle materiein Materie con un voto superiore al 27, oppure che hanno superato BDSI1 con 30.

HannoSuperato(Nome, Matricola, Provincia, Nascita):– Studenti(Nome, Matricola, Provincia, Nascita),

ProveEsami(Materia, Candidato, Data, Voto),Matricola = Candidato, Voto > 27, Materie(Materia);

HannoSuperato(Nome, Matricola, Provincia, Nascita):– Studenti(Nome, Matricola, Provincia, Nascita),

ProveEsami(’BD’, Candidato, Data, 30),Matricola = Candidato;

La relazione HannoSuperato puo essere definita con la seguente espressione algebrica:

HannoSuperato =⇡Nome, Matricola, Provincia, Nascita(

�Voto > 27( Studenti ./Matricola=Candidato (ProveEsami ./ Materie))

[ �Voto = 30^Materia= ’BD’ (Studenti ./Matricola = Candidato ProveEsami)).

Generalizzando la tecnica usata in questo esempio e possibile trasformare ogni pro-gramma Datalog in un sistema di equazioni algebriche della forma

Ri = ⇡X(��(R1,1 ./ . . . ./R1,n1))[ . . . [⇡X(��(Rm,1 ./ . . . ./Rm,nm)).

Tuttavia, il linguaggio Datalog e piu espressivo dell’algebra relazionale perche le clau-sole possono essere mutuamente ricorsive, come nell’esempio seguente, dove la rela-zione virtuale Antenato e definita in termini di una relazione Genitore, definita nellabase di dati, ed in termini di se stessa:

Antenato(X,Z) :– Genitore(X,Y), Antenato(Y,Z)Antenato(X,Z) :– Genitore(X,Z)

La relazione Antenato, che corrisponde alla chiusura transitiva della relazione Genito-re, non e esprimibile nell’algebra e nel calcolo. D’altra parte il linguaggio Datalog puronon e in grado di esprimere gli operatori di differenza e di complemento, esprimibilinell’algebra e nel calcolo. Valgono tuttavia le seguenti equivalenze:– il Datalog senza definizioni ricorsive ha lo stesso potere espressivo dell’algebra e

del calcolo nelle loro versioni positive, ovvero prive di negazione, complemento edifferenza;

Page 45: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.6. Conclusioni 135

– il Datalog senza definizioni ricorsive ma con l’aggiunta di opportuni operatori dinegazione ha lo stesso potere espressivo dell’algebra e del calcolo;

– l’algebra ed il calcolo positivi, con l’aggiunta di opportuni operatori di punto fisso,hanno lo stesso potere espressivo del Datalog;

– l’algebra ed il calcolo, con l’aggiunta di opportuni operatori di punto fisso, han-no lo stesso potere espressivo del Datalog arricchito con un’opportuna forma dinegazione.

Questo tipo di risultati permette di affermare che le differenze tra i diversi tipi dilinguaggi relazionali riguardano in realta lo stile di programmazione che questi sup-portano piuttosto che il loro potere espressivo.

4.6 ConclusioniLa semplicita concettuale del modello dei dati relazionale, e la completa indipenden-za degli operatori da aspetti riguardanti l’organizzazione fisica dei dati, ha reso moltopopolare questo approccio alla descrizione ed uso di basi di dati. Inoltre, il modellorelazionale ha consentito lo sviluppo di semplici linguaggi di interrogazione, avvi-cinando cosı a questo tipo di sistemi anche utenti non esperti. Nei prossimi capitolivedremo il linguaggio piu noto: SQL.

Recentemente ci sono state diverse proposte di estensioni del modello relazionaleper superare alcune limitazioni dei suoi meccanismi di astrazione. Le proposte sipossono raggruppare in tre categorie.

– Proposte che estendono il modello relazionale dei dati per trattare non solo ennuplecon attributi elementari (relazioni in prima forma normale, 1NF), ma anche ennuplecon componenti strutturate o di tipo insieme, chiamate oggetti complessi (modellorelazionale annidato). Sulle relazioni complesse sono disponibili opportuni operatoridi tipo algebrico che sono una generalizzazione degli operatori dell’algebra rela-zionale classica [Abiteboul and Bidoit, 1984]. Del paradigma ad oggetti si adottaquindi solo la possibilita di definire relazioni di ennuple con componenti struttu-rate, di tipo ennupla o relazione complessa, ma non la possibilita di condividereoggetti, di definire gerarchie o aspetti procedurali. Un’altra estensione piu recenteprevede anche la nozione di identificatore di oggetto per modellare la condivisionedi elementi comuni.

– Proposte che estendono il modello dei dati con la possibilita di definire domini inmodo calcolato o come tipi astratti, cioe corredati di operatori propri.

– Proposte che estendono il modello dei dati con entrambe le possibilita.

Esercizi1. Elencare le differenze tra la nozione di ennupla nei sistemi relazionali e la nozione

di oggetto nei sistemi ad oggetti.

Page 46: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

4.6. Conclusioni 136

2. Si traduca lo schema grafico ottenuto dall’Esercizio 2.7 in uno schema relazionale.3. Si traduca lo schema grafico ottenuto dall’Esercizio 2.9 in uno schema relazionale.4. Dimostrare le seguenti proprieta:

a) ��^ (E) = ��(E)\� (E);b) ��1(��2(E)) = ��1 ^�2(E);c) ��(E1 [ E2) = ��(E1)[��(E2);d) ⇡Y(⇡X(E)) = ⇡Y(E), se Y ✓ X;e) ⇡X(��(E) = ��(⇡X(E)), se � usa solo attributi in X;f) ��(E1

./�J

E2) = ��(E1)./�J

E2, se � usa solo attributi di E1.g) ��(A�F(E)) =A �F(��(E)), se � usa solo attributi in A.

5. Si consideri lo schema relazionale

S(M, N, P, A)E(C, S, V)

e l’espressione dell’algebra relazionale

�P= 0c 0^S= 0s 0(⇡N,P,S(S./

M=C E)).

Si dia una rappresentazione ad albero dell’interrogazione e si mostri come si mo-difica l’albero dopo la riscrittura algebrica.

6. Si consideri lo schema relazionale dell’esercizio precedente e l’espressione dell’al-gebra relazionale

⇡N,S(�A= 0a 0^S= 0s 0(⇡N,M,A(S)./

M=C ⇡C,S(E))).

Si dia una rappresentazione ad albero dell’interrogazione e si mostri come si mo-difica l’albero dopo la riscrittura algebrica.

Note bibliografiche

Il modello e l’algebra relazionali furono introdotti in [Codd, 1970]. Una descrizio-ne approfondita del modello relazionale e riportata in [Maier, 1983], [Ullman andWidom, 2001], [Silberschatz et al., 2002], [Atzeni and Antonellis, 1993], [Abiteboulet al., 1995]. Per un’analisi dei diversi tipi di linguaggi relazionali si veda [Ullmanand Widom, 2001]. Per il Datalog si veda [Ceri et al., 1990]. Le estensioni del modellorelazionale sono trattate in particolare in [Abiteboul et al., 1995]. Ogni libro di testosulle basi di dati, comunque, dedica un ampio spazio al modello relazionale.

Page 47: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

BIBLIOGRAFIA

Abiteboul, S. and Bidoit, N. (1984). An algebra for non normalized relations. InProceedings of the ACM SIGACT-SIGMOD Symposium on Principles of Database Systems(PODS). 135

Abiteboul, S., Hull, R., and Vianu, V. (1995). Database Foundations. Addison-Wesley,Reading, Massachusetts. 27, 136, 178

Albano, A. (2001). Costruire sistemi per basi di dati. Addison-Wesley, Milano. 220, 252,279

Albano, A., Antognoni, G., and Ghelli, G. (2000). View operations on objects withroles for a statically typed database language. IEEE Transactions on Knowledge andData Engineering, 12(4):548–567. 40, 48, 49

Albano, A., Cardelli, L., and Orsini, R. (1985). Galileo: A strongly typed, interactiveconceptual language. ACM Transactions on Database Systems, 10(2):230–260. Alsoin S.B. Zdonik and D. Maier, editors, Readings in Object-Oriented Database Systems,Morgan Kaufmann Publishers, Inc., San Mateo, California, 1990. 40, 48, 49

Armstrong, W. (1974). Dependency structures of database relationships. In Proceedingsof the IFIP Congress, pages 580–583. 143

Atzeni, P. and Antonellis, V. D. (1993). Relational Database Theory. Morgan KaufmannPublishers, San Mateo, California. 136, 156, 178

Atzeni, P., Ceri, S., Paraboschi, S., and Torlone, R. (2002). Basi di dati. Modelli e linguaggidi interrogazione. McGraw-Hill, Milano. 27, 99

Batini, C., Ceri, S., and Navathe, S. (1992). Conceptual Database Design. AnEntity-Relationship Approach. The Benjamin/Cummings Publishing Company, Inc.,Redwood City, California. 72, 99

Batini, C., Lenzerini, M., and Navathe, S. (1987). A comparative analysis of me-thodologies for database schema integration. ACM Computing Surveys, 18(4):2–18.90

Beeri, C. and Bernstein, P. (1979). Computational problems related to the design ofnormal form relational schemas. ACM Transactions on Database Systems, 4(1):30–59.147

Bernstein, P. (1976). Synthesizing third normal form relations from functional

Page 48: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

BIBLIOGRAFIA 282

dependencies. ACM Transactions on Database Systems, 1(4):277–298. 169Ceri, S., editor (1983). Methodology and Tools for Database Design. North-Holland,

Amsterdam. 99Ceri, S., Gottlob, G., and Tanca, L. (1990). Logic Programming and Data Bases. Springer-

Verlag, Berlin. 136Codd, E. (1970). A relational model for large shared data banks. Communications of

the ACM, 13(6):377–387. 136, 141Connolly, T. and Begg, C. (2000). Database Solutions. A step-by-step guide to building

databases. Addison-Wesley, Reading, Massachusetts. 99Diederich, J. and Milton, J. (1988). New methods and fast algorithms for database

normalization. ACM Transactions on Database Systems, 13(3):339–365. 152Elmasri, R. and Navathe, S. (2001). Sistemi di basi di dati. Fondamenti. Prima edizione

italiana. Addison-Wesley, Milano. 27Fraternali, P. and Tanca, L. (1995). A structured approach for the definition of the

semantics of active databases. ACM Transactions on Database Systems, 20(4):414–471.216

Harel, D. (1987). Statecharts: a visual formalism for complex systems. Science ofComputer Programming, 8:231–274. 73

Kifer, M., Bernstein, A., and Lewis, P. M. (2005). Database Systems. Addison-Wesley,Reading, Massachusetts, second edition. 27, 202, 250

Lucchesi, C. and Osborn, S. (1978). Candidate keys for relations. Journal of Computerand System Sciences, 17(2):270–280. 148

Maciaszek, L. A. (2002). Sviluppo di sistemi informativi con UML. Addison-Wesley,Milano. 99

Maier, D. (1983). The Theory of Relational Databases. Computer Science Press, Rockville,Maryland. 136, 152, 153, 178

Mannila, H. and Raiha, K. (1992). The Design of Relational Databases. Addison-Wesley,Reading, Massachusetts. 178

Marco, T. D. (1979). Structured Analysis and System Specification. Prentice Hall, Inc.,Englewood Cliffs, New Jersey. 72

Ramakrishnan, R. and Gehrke, J. (2003). Sistemi di basi di dati. McGraw-Hill, Milano.27

Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F., and Lorensen, W. (1991). Object-Oriented Modeling and Design. Prentice Hall International, Inc., London. 72, 73

Schmidt, J. (1977). Some high level language constructs for data of type relation. ACMTransactions on Database Systems, 2(3):247–261. 239

Shasha, D. and Bonnet, P. (2002). Database Tuning: principles, experiments, andtroubleshooting techniques. Morgan Kaufmann Publishers, San Mateo, California. 226

Silberschatz, H. F., Korth, H. F., and Sudarshan, S. (2002). Database System Concepts.McGraw-Hill, New York, 4th edition. 27, 136

Teorey, T. (1999). Database Modeling and Design. The E-R Approach. Morgan KaufmannPublishers, San Mateo, California, third edition. 99

Tsou, D. and Fischer, P. (1982). Decomposition of a relation scheme into Boyce-Codd

Page 49: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

BIBLIOGRAFIA 283

Normal Form. ACM SIGACT News, 14(3):23–29. 165Ullman, J. (1983). Principles of Database Systems. Computer Science Press, Rockville,

Maryland, second edition. 158Ullman, J. D. and Widom, J. (2001). A First Course in Database System. Prentice Hall,

Inc., Englewood Cliffs, New Jersey, second edition. 27, 136, 152van der Lans, R. (2001). Introduzione a SQL. Seconda edizione italiana. Addison-Wesley,

Milano. 202, 250Widom, J. and Ceri, S., editors (1996). Active Database Systems: Trigger and Rules for Ad-

vanced Database Programming. Morgan Kaufmann Publishers, San Mateo, California.226

Yourdon, E. (1989). Modern Structured Analysis. Yourdon Press, Englewood Cliffs, NewJersey. 72

Zaniolo, C., Ceri, S., Faloutsos, C., Snodgrass, R., Subrahmanian, V., and Zicari, R., edi-tors (1997). Introduction to Advanced Database Systems. Morgan Kaufmann Publishers,San Mateo, California. 226

Page 50: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

BIBLIOGRAFIA 284

Page 51: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

INDICE ANALITICO

2PL (Two Phase Lock), 2733NF, 1654GL (Fourth Generation Languages), 18,

2394NF, 172

affidabilita, 19algebra relazionaledifferenza, 119divisione, 123espressione, 120funzioni di aggregazione, 130giunzione, 124giunzione esterna, 125giunzione naturale, 124intersezione, 123prodotto, 119proiezione, 119proiezione generalizzata, 130raggruppamento, 130restrizione, 119ridenominazione, 118semi-giunzione, 125unione, 119analisidei dati, 75dei requisiti, 64funzionale, 69, 75anomalia, 137API, 234applicazione, 61assiomi di Armstrong, 143associazione, 33, 44cardinalita, 34

molteplicita, 34proprieta strutturali, 34rappresentazione grafica, 44attributodi un oggetto, 42estraneo, 151primo, 104, 148

base di dati, 8BCNF, 162bloccaggio dei dati, 242blocco a due fasi, 273, 274Boyce-Coddforma normale di, 162

calcolo relazionale di ennuple, 132CASE, 75, 93catalogo, 24, 223checkpoint, 275chiave, 36, 57, 104, 148esterna, 57calcolo, 148esterna, 104primaria, 57, 104chiusuradi dipendenze funzionali, 145di un insieme di attributi, 144classe, 43rappresentazione grafica, 43collezione, 32comunicazione, 37conoscenzaastratta, 35concreta, 30

285

Page 52: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

Indice analitico 286

rappresentazione, 40struttura, 35

della comunicazione, 37procedurale, 36

operazioni degli utenti, 37operazioni di base, 37

controllodella concorrenza, 22, 273copertura, 151copertura canonica, 151

data flow diagram, 68data store, 68Datalog, 133DBA (Data Base Administrator), 24strumenti per il, 224DBMS, 10architettura dei sistemi relazionali, 251catalogo, 223funzionalita, 13DDL (Data Definition Language), 11deadlock, 274decomposizione, 154che preserva i dati, 154che preserva le dipendenze, 156con perdita di informazione, 139definizione per ereditarieta, 47denormalizzazione, 172deposito dati, 68derivazione di una dipendenza, 143diagrammadi contesto, 69di flusso dati, 68di stato, 68, 72per la descrizione dei dati, 68dipendenzeanomale, 162banali, 142copertura canonica, 151derivate, 142derivazione di, 143elementari, 152funzionali, 85, 141implicazione logica, 142multivalore, 171

proiezione, 157ridondanti, 151distribuzione della base di dati, 23DML (Data Manipulation Language), 11

ennupla, 57entita, 31debole, 56proprieta, 31tipo, 31ereditarietasingola, 48multipla, 48stretta, 48

forma normale3FN, 1654NF, 172BCNF, 162Boyce-Codd, 162

generatoredi applicazioni, 17di rapporti, 19gerarchiadi inclusione, 48di inclusione multipla, 49di tipi, 47gestione delle interrogazionialbero fisico, vedi piano di accessooperatori fisici, 261ottimizzazione fisica, 261piano di accesso, 261riscrittura algebrica, 258gestoredei metodi di accesso, 257del buffer, 252dell’affidabilita, 274della concorrenza, 273della memoria permanente, 252delle interrogazioni, 258delle strutture di memorizzazione, 253giornale, 275giunzionemetodo index nested loop, 267metodo merge join, 267

Page 53: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

Indice analitico 287

metodo nested loop, 267

identita degli oggetti, 41indice, 255indipendenzafisica, 15logica, 15integrazione di schemi di settore, 89integrita dei dati, 19interfaccia, 68di un oggetto, 41di un tipo oggetto, 41istanzadi associazione, 33valida, 103valida di una relazione, 141

JDBC (Java Data Base Connectivity), 237

linguaggiodi interrogazione, 12di quarta generazione, 18per basi di dati, 11, 18lock, 273log, vedi giornale

malfunzionamento, 20disastro, 21fallimento di sistema, 21fallimento di transazione, 21metadati, 8metodologia di modellazione, 38modellazione, 29aspetto linguistico astratto, 38aspetto linguistico concreto, 38aspetto ontologico, 30aspetto pragmatico, 38modello dei dati, 10ad oggetti, 39entita-relazione, 55relazionale, 56, 101, 118

normalizzazione, 139, 161in 3NF, 166in BCNF, 163algoritmo di sintesi, 167

algoritmo di analisi, 164

ODBC (Open Data Base Connectivity),235

oggetto, 40oggetto composto, 44OID (Object Identifier), 41operatore fisicoper eliminare duplicati, 262per il raggruppamento, 270per l’intersezione, 272per l’ordinamento, 263per l’unione, 272per la differenza, 272per la giunzione, 267per la proiezione, 262per la restrizione, 263per la scansione, 262organizzazione dei dati, 253ad albero, 254indice, 255procedurale (hash), 254scelta, 256seriale (heap) e sequenziale, 254statica o dinamica, 255ottimizzazione fisica, 261

piano di accessoesecuzione, 273PL/SQL, 239procedure memorizzate, 212processo, 68progettazioneconcettuale, 82fisica relazionale, 219logica relazionale, 107progettazione di basi di dati, 61analisi dei requisiti, 62, 73CASE, 93concettuale, 62, 64, 82fisica, 62, 65logica, 62, 65metodologia, 62strumenti formali, 67proiezione di dipendenze, 157

Page 54: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

Indice analitico 288

QBE, 199quarta forma normale, 172query language, 12

relazione, 57universale, 140report generator, 19RID (Row Identifier), 253ripristino dopo fallimento, 275riscrittura algebrica, 126

schemaconcettuale, 82della base di dati, 8di relazione, 101di relazione universale, 140esterno, 13, 223fisico, 13logico, 13relazionale, 102scheletro, 79sicurezza dei dati, 22sistemainformatico, 2

di supporto alle decisioni, 8direzionale, 6operativo, 6

informativo, 1per basi di dati, vedi DBMSsottoclassi, 48copertura, 48disgiunte, 48partizione, 48rappresentazione grafica, 49sottotipo, 47SQL, 179ALTER TABLE, 221CHECK, 209COMMIT WORK, 243CREATE SCHEMA, 204CREATE INDEX, 219CREATE TABLE, 205CREATE TRIGGER, 213CREATE VIEW, 206CROSS JOIN, 185DELETE, 197

DIRTY READ, 247DROP SCHEMA, 204DROP TABLE, 206, 207EXCEPT, 195FOREIGN KEY, 210GROUP BY, 193INSERT, 197INTERSECT, 195JOIN, 185LOCK TABLE, 248NATURAL JOIN, 185ORDER BY, 192PRIMARY KEY, 210READ COMMITTED, 247READ UNCOMMITTED, 247REPEATABLE READ, 247SELECT, 181, 195SERIALIZABLE, 248UNION, 195UNIQUE, 210UPDATE, 1974GL, 239API, 234cursor stability, 247dynamic, 234embedded, 228giunzione esterna, 185nei linguaggi di programmazione, 228potere espressivo, 198procedure memorizzate, 212tipi di giunzione, 185transazione, 242vincoli

interrelazionali, 210intrarelazionali, 209su attributi, 209

SQL-89, 179SQL-92, 179SQL2, 179SQL:2003, 179stallo, 274state diagram, 68, 72superchiave, 57, 104, 148

terza forma normale, 165

Page 55: FONDAMENTI DI BASI DI DATImizar.unive.it/fondamentibasidati/wp-content/uploads/...Basi di Dati presso l’Editore Zanichelli, aggiornato con una seconda versione uscita nel 2005, e

Indice analitico 289

TID (Tuple Identifier), 253tipoennupla, 57enumerazione, 43oggetto, 41record, 42sequenza, 43transazione, 20, 242livelli di isolamento, 246realizzazione, 274trigger, 213

UML (Unified Modeling Language), 99universo del discorso, 29

valore nullo, 103vincolod’integrita, 19, 36d’integrita dinamico, 36d’integrita statico, 36di copertura, 48di disgiunzione, 48estensionale, 48strutturale, 48