Sei sulla pagina 1di 128

Indice

Intro

3
3
4
5
6
7

Modello ER

9
9
9
14
19
26
28
29
31

Modello Relazionale

32
38
40
41
44
46
47

Progettazione Concettuale

49
49
50
50
51
54

Algebra Relazionale

57
57
57
58
61
62
64
65

1.
2.
3.
4.
5.

1.
2.
3.
4.
5.
6.
7.
8.

1.
2.
3.
4.
5.
6.

1.
2.
3.
4.
5.

1.
2.
3.
4.
5.
6.
7.

Definizioni
DBMS ................
Modelli di dati
Linguaggi per le basi di dati .
Progettazione di una base di dati .

Che Cos ..
Entit ...
Relazioni ...
Cardinalit ...
Identificatori ...
Relazioni IS-A ...
Generalizzazione ......
Riepilogo ...

Vincoli di Integrit .
Vincoli di Ennupla ..
Vincoli di Chiave ..
Valori Nulli ...
Vincoli di Integrit Referenziale .
Riepilogo ...

Che cos ..
Problematiche ..
Strategie di Analisi ...
Qualit di uno Schema ..
Strategie di Progettazione ..

Che cos ..
Operatori ..
Operatori Insiemistici ....
Operatore di Ridenominazione ...
Operatore di Selezione ..
Operatore di Proiettazione ..
Riepilogo degli Operatori di Selezione e Proiezione
1

8. Operatore di Join ...


9. Prodotto Cartesiano ....
10. Operatore Theta Join ....
11. Viste ...

66
72
73
76

SQL

77
77
77
79
81
83
84
85
86
88
89
96
98
100
101
105
106

Progettazione Logica

107
107
107
108
120
126

1. Qualit di una Interrogazione ..


2. Operatore di Selezione ..
3. Similitudini tra AR e SQL ..
4. Operatore di Ridenominazione.
5. Condizione Like ...
6. Valori Nulli ...
7. Clausola Distinct ....
8. Operatore Join ..
9. Clausola di Ordinamento ..
10. Operatori Aggregati ...
11. Clausola Having .
12. Operatori Insiemistici ...
13. Viste ...
14. Interrogazioni Nidificate ..
15. Consigli sulla Costruzione delle Interrogazioni .
16. Riepilogo SQL ..

1.
2.
3.
4.
5.

Obiettivo ...
Misura delle Risorse Elaborative ...
Fase 1: Ristrutturazione di uno Schema ER .
Fase 2: Traduzione del Modello Logico .
Riepilogo ...

Intro
Definizioni
Def. Base di dati
Una base di dati un insieme organizzato di dati utilizzati per il rappresentare le
informazioni di interesse di un sistema informativo (azienda, ufficio, persona, ecc..).
Una base di dati si suddivide in:

Schema:
o Struttura di una base di dati (ossia i suoi campi).
o Costituisce laspetto intensionale, ossia la descrizione astratta delle
propriet.
Istanza:
o Valori degli attributi.
o Costituisce laspetto estensionale, ossia i valori concreti che variano nel
tempo.

Def. Sistema informativo


Componente (sottosistema) di una organizzazione che gestisce le informazioni di
interesse (cio utilizzate per il perseguimento degli scopi dellorganizzazione).
Le principali funzioni di un sistema informativo sono:
-

Acquisizione/memorizzazione
Aggiornamento
Interrogazione
Elaborazione

Def. Sistema informatico


Porzione del sistema che gestisce un sistema informativo in modo automatizzato.
Le principali funzioni di un sistema informatico sono:
-

Garantisce che i dati siano conservati in modo permanente sui dispositivi di


memorizzazione
Permette un rapido aggiornamento dei dati per riflettere rapidamente le loro
variazioni
Rende i dati accessibili alle interrogazioni degli utenti
Pu essere distribuito sul territorio

Le informazioni vengono rappresentate attraverso i dati.

Def. Informazione
Notizia, dato o elemento che consente di avere conoscenza di fatti.
Def. Dato
Elementi di informazione costituiti da simboli che debbono essere elaborati per essere
interpretati.
Es. Differenza fra dato e informazione
Se ci dicessero Mario e 275 senza alcuna spiegazione, questi 2 valori sarebbero dei
dati, ossia elementi.
Se per in aggiunta a questi 2 elementi ci venisse detto che sono rispettivamente la
username e la password di un cliente bancario della BNL, allora linsieme diventerebbe
un informazione.

DBMS
Def. DBMS
Acronimo di Data Base Management System, ossia un sistema software capace di
gestire collezioni di dati che sono:

Grandi:
o Hanno dimensioni molto maggiori della memoria centrale.
Condivisi (tra le diverse attivit e settori dellazienda):
o Sono necessari meccanismi di autorizzazione di controllo della
concorrenza.
Persistenti:
o Tempo di vita molto lungo.

Garantiscono

Privatezza:
o Mediante meccanismi di autorizzazione.
Es.
L'utente A autorizzato a leggere tutti i dati
L'utente B autorizzato a leggere X e a modificare Y
Affidabilit:
o Resistenza ai malfunzionamenti HW e SW.
o Inoltre utilizzano un complicato meccanismo di controllo sulle transazioni.
Efficienza:
o Cercano di utilizzare al meglio le risorse del sistema (spazio, CPU, ecc..).
Efficacia:
o Cercano di offrire funzionalit articolate.
4

I DBMS permettono inoltre lindipendenza dei dati, ossia:

Non necessario modificare la base di dati in base allapplicazione software


che dovr utilizzarla.
Non necessario modificare lapplicazione in caso di modifica alla base di dati.

Vantaggi e svantaggi

Vantaggi:
o Permettono lutilizzo dei dati sotto molteplici applicazioni flessibili
(indipendenza dei dati) e utenti.
o Riducono le ridondanze (dati ripetuti inutilmente) e incoerenze.
Svantaggi:
o Sono molto complessi e costosi.
o Richiedono buone risorse HW e SW.
o Inadatti alla gestione di applicazioni con pochi utenti.

Modelli di dati
Def. Modello dei dati
Insieme di costrutti utilizzati per organizzare i dati di interesse e descriverne la
dinamica.
Ne esistono 2 tipi:

Modello logico:
o Schema che rappresenta la descrizione dellintera base di dati.
o Es. Il modello relazionale.
5

Modello concettuale:
o Cercano di descrivere i concetti del mondo reale.
o Vengono utilizzati nelle fasi preliminari di progettazione.
o Es. Il modello E-R (Entity-Relationship).

Linguaggi per le basi di dati


Si suddividono in 2 tipologie:

DDL:
o Acronimo di Data Definition Language.
o Linguaggi necessari per la definizione logica e fisica delle tabelle.

DML:
o Acronimo di Data Manipulation Language.
o Linguaggi per la manipolazione dei dati (interrogazioni, aggiornamenti..).

Il linguaggio SQL (Structured Query Language) uno standard per la manipolazione


delle basi di dati.

Progettazione di una base di dati


La metodologia di progettazione di una BD si basa sul principio di separazione tra:
-

Cosa rappresentare.
Come farlo.

Questa metodologia prevede 3 fasi:

Progettazione concettuale:
o Traduce i requisiti del sistema informatico in una descrizione
formalizzata.
o Viene espressa in modo indipendente dalle scelte implementative (DBMS,
SW e HW).
o Tale descrizione deve essere in grado di descrivere in modo globale
lambiente analizzato, concentrandosi sulla relazione che intercorre sui
dati.
o Il modello adottato quello Entit-Relazione (ER).
o Es. di modello ER

Progettazione logica:
o Traduzione dello schema concettuale nel modello dei dati del DBMS
(espresso nel DDL del DBMS).
o In questa fase si considerano anche aspetti legati ai vincoli ed
allefficienza.
o Si articola in due sotto-fasi:
Ristrutturazione dello schema concettuale (per lottimizzazione).
Traduzione verso il modello logico.
o Il modello adottato quello relazionale.
#image
Progettazione fisica:
o Completa lo schema logico ottenuto con le specifiche HW e SW.

Modello E-R
Che cos
Il modello Entit-Relazione (E-R) un linguaggio grafico semi-formale per la
rappresentazione di schemi concettuali.
Questo linguaggio grafico composto da vari elementi, qui sotto spiegati.

Entit
Classe di oggetti (fatti, persone, cose) dellapplicazione di interesse con propriet
comuni e con esistenza autonoma e della quale si vogliono registrare fatti specifici.
sempre bene assegnare una definizione ad ogni entit (solo a livello mentale) in
modo che durante la costruzione dello schema potremo verificare che tutte gli oggetti
dello schema non abbiano un significato ambiguo e che seguano un filo logico.
Es. Entit impiegato
Insieme delle persone che lavorano in azienda.

Rappresentazione
Ogni entit ha un nome che lo specifica in modo univoco nello schema, e viene
rappresentato graficamente da un rettangolo.

Per convenzione si utilizzano nomi espressivi (Es. Impiegato e non imp05) e al


singolare (Impiegato e non Impiegati).
Es. Studente, Citt, Dipartimento, ecc..

Nota
Nel modello E-R non si tiene conto delle singole occorrenze / istanze dellentit
(ossia loggetto che lentit rappresenta).
Es.
Per rappresentare un docente, si terr conto solo dellentit Docente e non di Il
docente Rossi, Il docente Mario, ecc..
9

Attributi
Un attributo di entit una propriet locale di un entit che associa ad ogni istanza
di entit / associazione un valore nel corrispondente dominio di valori, il quale dipende
solamente dallistanza dellentit e non da altri elementi dello schema.
Es.
Et del professore dipende solo dal singolo professore.
Es.

Es.

10

Es.

Ogni attributo di entit ha nome che lo identifica in modo univoco nellambito della
entit, ed rappresentato da un cerchio collegato alla entit a cui appartiene.

Nel caso di dubbi su quali attributi inserire in un entit, bene ragionare per istanze
dellentit.
Es.
Supponendo di avere lentit Studente, se avessimo un istanza dellentit del tipo
Mario Verdi nato nel 1988 e residente a Milano, appare chiaro che gli attributi
dellentit saranno: nome, cognome, data di nascita, comune di residenza.

Il valore dell attributo appartiene a un dominio, detto dominio dellattributo (es.


intero, enumerato, ecc.).
Es.
Il dominio dellet sar [0,120].
11

Nel caso si abbiano pi attributi che presentano affinit nel loro significato, possibile
raggrupparli in un unico attributo, detto attributo composto.
Es.
Via, Numero civico e CAP possono essere raggruppati con lattributo Indirizzo.

Scelta tra entit e attributo


Un concetto verr modellato come:

Una entit se:


o Le sue istanze sono concettualmente significative indipendentemente da
altre istanze.
o Ha o potr avere delle propriet indipendenti dagli altri concetti.
o Il concetto importante nellapplicazione.
Un attributo (di una entit o relazione) se:
o Le sue istanze non sono concettualmente significative (es. lattributo et
ha un valore numerico ma non possibile associare a questi valori
numerici altre propriet).
o Non ha senso considerare una sua istanza indipendentemente da altre
istanze (es. affermare che et=25 una caratteristica che si pu
associare ad un entit, non avrebbe senso dire che ha un esistenza
propria).
o Serve solo a rappresentare una propriet locale di un altro concetto.

Si tenga presente che le scelte possono cambiare durante lanalisi.

12

Es.

Es.

Come abbiam visto nel primo esempio, lattributo CittNascita diventa un entit in
quanto grazie allaggiunta della regione, il concetto di Citt viene visto come un
qualcosa a cui possono essere associate delle propriet, e quindi diventa un entit.
Nel secondo caso invece, citt potrebbe essere utilizzata come attributo in
dipartimento, tuttavia risulta essere pi naturale vederla come un'unica entit e
relazionarla in modi diversi alle 2 entit.

13

Relazioni
Una relazione (associazione o relationship) un fatto che descrive unazione o una
situazione e che stabilisce legami logici tra istanze di entit (ossia, le mette in
relazione).
Es.
La relazione Residenza tra le entit Persone e Citt.
Lentit Persona descrive linsieme delle persone, mentre lentit Citt rappresenta
linsieme delle citt.
La relazione Residenza rappresenta tutti i legami logici tra Persona e Citt, ossia
per ogni persona rappresenta la sua citt di residenza (o simmetricamente, indica per
ogni citt quali persone vi risiedono).

Rappresentazione
Ogni relazione ha un nome che la identifica in modo univoco nello schema, ed
rappresentata nel diagramma che descrive lo schema da un rombo collegato alle
entit sulle quali definita la relazione.

Per convenzione si utilizzano nomi espressivi, al singolare e sostantivi al posto dei


verbi (se ovviamente possibile).
Il motivo principalmente dato dalla simmetria, in quanto dire ad esempio Lo
studente supera lesame d un ordine da sinistra verso destra, mentre utilizzare
Esame Superato d una sorta di simmetria, ossia il senso di lettura da un entit
verso un'altra lo stesso rispetto la corrispettiva opposta (da Esame a Studente).
Es.
Al posto di utilizzare il verbo Supera si utilizza Esame Superato.
N.B.
La convenzione a volte va tralasciata nel caso in cui lutilizzo, ad esempio di un verbo,
rende la lettura della relazione con un linguaggio pi naturale.

14

Grado della relazione


2 entit possono essere coinvolte in una o pi relazioni

e le relazioni possono coinvolgere pi entit!

Il numero di entit coinvolte in una relazione determina il suo grado.


Una relazione di grado superiore al 2 viene detta relazione n-aria.
Nel primo caso vogliamo sapere la citt di nascita e la sede di lavoro di un impiegato.
La relazione Nascita (Impiegato, Citt) sar di grado 2, in quanto coinvolge 2 entit.
La relazione Sede di lavoro(Impiegato, Citt) sar anchessa di grado 2.
Nel secondo caso vogliamo sapere quale fornitore fornisce quale prodotto e quale
dipartimento.
15

La relazione Fornitura(Fornitore, Prodotto, Dipartimento) sar di grado 3 (relazione


n-aria).

Attributi di una relazione


Un attributo di entit una propriet locale di una relazione che descrive una
propriet del legame logico.
Ogni attributo di relazione ha nome che lo identifica in modo univoco nellambito della
relazione, ed rappresentato da un cerchio collegato alla relazione a cui appartiene.

In questo caso il voto non una propriet dello studente e neanche del corso, ma
una propriet del legame logico che la relazione EsameSuperato instaura tra
Studente e Corso.
Infatti se pensiamo a questo concetto con un linguaggio naturale, non avrebbe senso
chiedere ad uno studente che voto hai preso senza specificare a quale esame ci
stiamo riferimento, ma sarebbe pi naturale chiedere che voto hai preso nellesame
di basi di dati?.
La stessa cosa varrebbe nel caso in cui uno studente chiedesse ad un docente che
voto ha dato nel corso di basi di dati? senza specificare per lo studente. Sarebbe
infatti pi naturale chiedere che voto ha dato nellesame di basi di dati allo studente
Rossi?.
Appare evidente che la propriet voto andr associata al legame logico tra le 2 entit,
e non alle singole entit.
Utilizzando questo stratagemma, risulta pi facile capire se un attributo di un
entit oppure di una relazione.

16

Nel caso di una relazione n-aria, lattributo varr per ogni istanza della relazione.
Es.

17

Relazioni ad anello
Una associazione pu coinvolgere due o piu volte la stessa entit (associazione
ricorsiva o ad anello).
Es.

Il problema che in una istanza di questo schema, data una coppia che istanza di
Successione, non si pu individuare chi il sovrano predecessore e chi il sovrano
successore.
Nelle relazioni dove una stessa entit coinvolta pi volte necessario aggiungere la
specifica dei ruoli.

Scelta tra entit e relazione


Un concetto verr modellato come:

Una entit se:


o Le sue istanze sono concettualmente significative indipendentemente da
altre istanze.
o Ha o potr avere delle propriet indipendenti dagli altri concetti.
o Ha o potr avere relazioni con altri concetti.
Una relazione se:
o Le sue istanze non sono concettualmente significative indipendentemente
da altre istanze, cio se le sue istanze rappresentano insiemi di altre
istanze.

18

Non ha senso pensare alla partecipazione delle sue istanze ad altre


relazioni.

Cardinalit
Un vincolo di cardinalit tra una entit E e una relazione R esprime un limite
minimo (cardinalit minima) ed un limite massimo (cardinalit massima) di istanze
della relazione R a cui pu partecipare ogni istanza dellentit E, in modo da
caratterizzare meglio il significato di una relazione.

Rappresentazione
Per rappresentare una cardinalit si inserisce fra parentesi tonde prima la cardinalit
minima seguita da quella massima sulla linea che unisce lentit alla relazione.

Per convenzione si utilizzano:

Per la cardinalit minima 0 e 1, dove:


o 0 per una partecipazione opzionale (non tutte le istanze della entit sono
collegate con la relazione)..
o 1 per una partecipazione obbligatoria (tutte le istanze della entit sono
collegate con la relazione).
Per a cardinalit massima 1 e N, dove:
19

o
o

1 per un massimo di 1 partecipazione (le istanze della entit partecipano


al massimo una volta sola alla relazione).
N per non porre alcun limite (le istanze della entit non hanno limiti di
partecipazione alla relazione).

Es. Vincolo di cardinalit


Ad ogni impiegato sono assegnati da 1 a 5 progetti
Ogni progetto assegnato ad al pi 50 impiegati

Analizziamo le cardinalit minime

20

Analizziamo ora le cardinalit massime

21

Cardinalit di una relazione n-aria

Cardinalit di un attributo
possibile associare delle cardinalit anche a degli attributi, in modo da:

Indicare opzionalit.
Indicare attributi multivalore.

22

Es.

Classificazione delle cardinalit


Per classificare una cardinalit si f riferimento sempre alle cardinalit massime.
Si dice quindi che abbiamo una relazione del tipo:

Uno ad uno:
o Se le cardinalit massime di entrambe le entit sono 1.

23

Es.

Uno a molti:
o Se le cardinalit massime delle 2 entit sono 1 e n.

Es.

24

Molti a molti:
o Se le cardinalit massime delle 2 entit sono n e n.

Es.

Nota
La mancata presenza del vincolo di cardinalit equivalente alla coppia (0,n).
Es.

25

Si tenga in considerazione per che

Gli identificatori
Un identificatore di una entit un insieme di propriet (attributi o relazioni) che
permettono di identificare univocamente le istanze di unentit.
In altre parole, non possono esistere due istanze di una data entit che assumono
lo stesso valore per tutte le propriet che formano lidentificatore (ad esempio, il
codice fiscale di una persona unico per ogni persona).
Ogni entit deve quindi avere sempre un identificatore.

Tipologie di identificatori
Un identificatore di una entit E pu essere:

Interno:
o formato solo da attributi di E.
o Notazione grafica:
Se lidentificatore formato da un solo attributo, si annerisce il
corrispondente pallino.

26

Es.

Se lidentificatore formato da pi attributi, si uniscono gli


attributi con una linea che termina con pallino annerito.
Es.

Esterno:
o formato da attributi di E (e da relazioni che coinvolgono E) oppure solo
da relazioni che coinvolgono E.
o In questo caso, per identificare ogni istanza della entit necessario
specificare le istanze degli attributi e la istanza (le istanze) delle
relazioni.
o Notazione grafica:
Si indica unendo gli attributi e la relazione con una linea che
terminer con un pallino annerito.
Es.

La matricola di uno studente univoca allinterno di una


Universit, tuttavia se vogliamo rappresentare tutti gli studenti
delle Universit italiane, per identificare uno studente bisogner
avere la coppia Matricola-Universit.

Note
Ogni entit deve possedere almeno un identificatore, ma pu averne anche pi di
uno.
27

Una identificazione esterna possibile solo attraverso una relationship a cui lentit da
identificare partecipa con cardinalit (1,1).

Relazioni IS-A
Pu accadere che due classi rappresentate da due entit nello schema concettuale
siano una istanza dellaltra.
Es.
Studente e Studente della laurea breve.
In questi casi si dice che Studente ha una relazione di tipo IS-A con Studente della
laurea breve, ossia Studente padre dellentit figlia Studente della laurea breve
(oppure che Studente della laurea breve IS-A Studente, che in un linguaggio pi
naturale vorrebbe dire che uno studente di una laurea breve comunque uno
studente).

Rappresentazione grafica
La relazione ISA si rappresenta nel diagramma dello schema concettuale mediante
una freccia dalla sotto entit alla entit padre.

28

Principio di ereditariet
Ogni propriet dellentit padre (attributo, relazione, ecc.) anche una propriet della
sotto entit, e non si riporta esplicitamente nel diagramma.
Lentit figlia pu avere ovviamente ulteriori propriet.
Es.

Generalizzazione
Quando lentit padre generalizza diverse sotto entit rispetto ad un unico criterio,
si parla di generalizzazione.

Tipologie
Una generalizzazione pu essere di due tipi:

Completa:
o Lunione delle istanze delle sotto entit uguale allinsieme delle istanze
dellentit padre.
o Es. Lentit padre Persona con le relative entit figlie Uomo e
Donna.
In questo caso infatti unendo linsieme degli uomini e delle donne, si
ottiene per forza linsieme delle persone.
Non completa:
o Lunione delle istanze delle sotto entit rappresenta solo una parte
dellinsieme delle istanze dellentit padre.
o Es.
Lentit padre Persona con le relative entit figlie Docente e
29

Studente .
In questo caso unendo tutti i docenti e gli studenti, si arriva a ricoprire
solo una parte delle persone, in quanto esistono anche i non docenti /
lavoratori.

Rappresentazione grafica
La generalizzazione si indica collegando mediante un arco le sotto entit, e collegando
con una freccia tale arco alla entit padre.
Nel caso in cui la generalizzazione sia completa, questa freccia sar annerita:
Es.

Nel caso in cui la generalizzazione non sia completa, questa freccia sar bianca:

Principio di ereditariet
Il principio di ereditariet identico a quello delle relazioni ISA.
30

Note
La stessa entit pu essere padre in diverse generalizzazioni.
Concettualmente, non c alcuna correlazione tra due generalizzazioni diverse,
perch rispondono a due criteri diversi di classificare le istanze della entit padre.
Es.

Riepilogo
Quando si deve modellare un oggetto, per riuscire a rappresentarlo nel modo corretto
bisogna ragionare con la seguente logica:
Sar un:

Entit:
o Se ha propriet significative e descrive oggetti con esistenza autonoma.
Attributo:
o Se semplice e non ha propriet
Relazione:
o Se correla due o pi concetti.
Generalizzazione:
o Se caso particolare di un altro.

31

Modello relazionale
Il modello relazionale un modello logico dei dati, ossia un insieme di strutture di
rappresentazione utilizzabili per descrivere un insieme di dati (o schema logico) che a
sua volta descrive una realt di interesse.
Es. Modellazione di una realt mediante il modello concettuale

Es. Modellazione di una realt mediante il modello relazionale

Def. Relazione
Una relazione (o tabella) nel modello relazionale rappresenta una relazione (in
matematica) in cui:
32

I valori di ogni colonna (attributo) sono fra loro omogenei (es. Juve, Lazio,
ecc.).
Le righe (n-ple o tuple) sono diverse fra loro.
Le intestazioni delle colonne (nomi di attributi) sono diverse tra loro.

Es.
Vogliamo rappresentare con tre relazioni gli studenti Rossi Mario, Neri Paolo, Verdi
Luisa, Rossi Maria, con matricola, nome, cognome, data nascita, tutti gli esami
superati, con voto, e per i corsi corrispondenti il titolo e il docente.

Se volessimo sapere quanti esami ha passato la studentessa Maria Rossi, baster


guardare la matricola relativa a Maria Rossi nella relazione Studenti, e cercare
questa matricola nella tabella Esami.

33

Def. Schema di relazione


Uno Schema di relazione (o relazione o tabella) caratterizzato da un nome R con un
insieme di attributi
, ..,

R(

,...,

Es.
Data la seguente tabella:

Lo schema di relazione sar:


Studenti(Matricola, Nome, Cognome, Data di nascita)
Def. Schema basi di dati
Uno schema di basi di dati un insieme di schemi di relazione, tali che:

R={

), ...,

Es.
Data la seguente base di dati:

34

)}

R = {Studenti(Matricola, Nome, Cognome, Data di nascita),


Esami (Studente, Voto, Corso),
Corsi (Codice, Titolo, Docente)}
Def. Ennupla
Una ennupla (o n-pla) su insieme di attributi X una funzione che associa a ciascun
attributo A in X un valore del dominio di A.
Es.

Preso il seguente schema, una possibile ennupla (Matricola: 6554, Cognome: Rossi,
Nome: Mario, Data di nascita: 05/12/1978).
In questo schema di relazione, avremo quindi 4 ennuple.
Per convenzione, possibile utilizzare Il simbolo t[A], che denota il valore della
ennupla t sull'attributo A.
Es. Dato il seguente schema di relazione

Def. Istanza di relazione


Una istanza di relazione (o relazione) su uno schema R(X) insieme r di ennuple su X.
In sostanza quindi, una relazione un insieme di ennuple.

35

Es.

Def. Istanza di basi di dati


Una istanza di base di dati (o base di dati) su uno schema R= { (
un insieme di relazioni r = { ,...,
} (con
relazione su
).

), ...,

Es. Istanza di base di dati

La base di dati sar quindi costituita dalle 3 relazioni (Studenti, Esami e Corsi).
Def. Ridondanza
In una base di dati si definisce dato ridondante uno o pi dati che vengono
rappresentati pi volte inutilmente.
Es.
Supponiamo di avere il seguente database:

36

)}

possibile rappresentare questo schema in un modo alternativo:

Ci accorgiamo per di qualcosa che non v molto bene, ossia la ripetizione inutile di
alcuni dati (con conseguente spreco di memoria), e la presenza di celle vuote.

Facendo un rapido confronto fra i 2 schemi quindi, possiamo desumere che:


Nello schema a 2 tabelle [Studenti ed Esami] abbiamo che ogni informazione viene
rappresentata una volta sola.
Nello schema a 1 tabella [StudentiEsami] abbiamo che alcune informazioni vengono
rappresentate pi volte e abbiamo inoltre pi difficolt a distinguere i diversi concetti
rappresentati.

37

Vincoli di integrit
Che cosa sono
Def. Vincolo di integrit
Propriet che deve essere soddisfatta da tutte le istanze di uno schema che
rappresentano informazioni corrette per lapplicazione.

A cosa servono
Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano
stati possibili nella realt.
Es.
Supponiamo di voler rappresentare gli studenti e gli esami che hanno superato con
voto, lode (si, no), data.

In questo caso non ci sono problemi, ma se prendiamo ora come esempio la seguente
istanza, ci accorgiamo che:

38

I vincoli di integrit quindi:


Permettono una rappresentazione pi accurata della realt, e quindi
contribuiscono alla qualit dei dati, cio alla propriet dei dati di essere una
corretta rappresentazione della realt.
Sono utili nella progettazione perch portano a generare uno schema di
elevata qualit.

Tipologie di vincoli
I vincoli si suddividono in 2 macro tipologie:
Vincoli intra relazionali:
o Definiti allinterno di una relazione.
o Si suddividono a loro volta in 4 tipologie:
Vincoli su valori (o di dominio):
Definiti sui singoli valori di attributi.
Vincoli di ennupla:
Definiti sulle ennuple di una relazione.
Vincoli di relazione:
Vincoli relativi allinsieme ennuple una relazione.
Vincoli di chiave.
Vincoli inter relazionali:
o Definiti tra due o pi relazioni.
Es.

Sintassi
I vincoli di integrit vengono espressi mediante:
Un espressione booleana (AND, OR, NOT).
Condizioni elementari che confrontano (>, >=, =, <, <=, ) valori di attributo
o espressioni aritmetiche su di essi.
39

Es.
(Voto 18) AND (Voto 30)
(Voto = 30) OR NOT (Lode = "e lode")
Che in linguaggio naturale sarebbe:
In ogni ennupla il voto compreso tra 18 e 30.
Il voto uguale a 30 oppure il campo Lode non deve avere il valore e lode.

Calcolo del valore di verit


Per calcolare il valore di verit di un vincolo in una n-pla, occorre sostituire i valori
degli attributi nella n-pla e poi calcolare il valore vero o falso.
Es.
<, Voto: 24, >
Il valore del vincolo: (Voto 18) AND (Voto 30) 24 >= 18 AND 24 30 = Vero.

Vincoli di ennupla
Che cosa sono
I vincoli di ennupla sono condizioni sui valori di ciascuna ennupla in una relazione.
Es.
Data la seguente istanza di schema:

(Voto = 30) OR NOT (Lode = "e lode")


Solo se il voto = 30 possibile attribuire una lode.
Nel primo caso, avremo che voto uguale a 30 (quindi la condizione voto = 30
vera), mentre la condizione che il campo Lode non abbia il valore e lode falsa
(infatti il valore e lode) tuttavia essendoci loperatore OR lintera condizione vera
(vero or falso vero).
Nel secondo caso invece abbiamo che la condizione voto=30 non soddisfatta ( 27,
quindi il valore di verit falso).
La condizione che il campo Lode non abbia il valore e lode falsa (infatti il valore
e lode), e quindi avremo un falso OR falso falso.
Es.
Data la seguente istanza di schema:

40

Un vincolo di ennupla in questo caso pu essere che il campo Lordo debba essere la
somma dei valori contenuti nei campi Ritenute e Netto, ossia:
Lordo = (Ritenute + Netto)

Vincoli di chiave
Che cosa sono
I vincoli di chiave permettono di identificare univocamente ogni ennupla.
I vincoli corrispondono a propriet del mondo reale modellato dalla base di dati, e
sono propriet dello schema (cio fanno riferimento a tutte le possibili istanze).

A cosa servono
Supponiamo di avere la seguente istanza dello schema:

necessario poter identificare univocamente ogni studente.


Per farlo, necessario capire quali insiemi di attributi della tabella identificano
univocamente, senza ambiguit, uno studente.

41

In questo caso, il campo Matricola in grado di identificare univocamente ogni


studente, in quanto pi studenti possono avere lo stesso nome o cognome (ad
esempio Rossi Mario).
Prendiamo un altro esempio.
Supponiamo di avere la seguente istanza dello schema:

Lidentificazione di ogni ennupla avviene mediante la coppia Studente-Corso.


Infatti nella tabella esami uno stesso studente pu aver passato pi esami, e pi corsi
possono essere stati passati da pi studenti, tuttavia ogni studente pu aver passato
solo una volta lo stesso esame.

Tipologie di chiavi
Supponiamo di avere la seguente istanza dello schema:

Def: Chiave
Attributo in grado di identificare univocamente le ennuple di una relazione.
Def: Super chiave (o Super chiave non minimale)
Un insieme K di attributi super chiave per una relazione r se r non contiene due
ennuple di t1 e t2 tali che t1[K] = t2[K].
Ossia, K una super chiave se linsieme dei suoi attributi in grado di identificare
univocamente ogni ennupla in quanto non esistono 2 ennuple con gli stessi valori di
questi attributi.
Es. Matricola + cognome super chiave, perch nellinsieme dei suoi attributi c
Matricola che una super chiave.
42

Es. Linsieme di attributi (Cognome, Nome, Corso, DataNascita) una superchiave


non minimale in quanto linsieme di attributi (Cognome, Nome, DataNascita) una
superchiave.
Def: Super chiave minimale
K anche chiave per r se una super chiave minimale per r (cio non contiene
unaltra super chiave).
Ossia:
Si dice che una chiave super chiave minimale se nessuno dei suoi attributi
contengono altre super chiavi.
Es. Matricola chiave perch minimale (nellinsieme dei suoi attributi c solo una
super chiave).
Es. Linsieme di attributi (Cognome, Nome, DataNascita) una superchiave minimale,
in quanto nessun altro sottoinsieme di (Cognome, Nome, DataNascita) una
superchiave.
Infatti:

Cognome-Nome

Cognome-Nascita

43

Nome-Nascita

Valori nulli
Def: Valore nullo
Valore che denota lassenza di un valore del dominio (e non un valore del dominio).
I valori nulli sono valori particolari utilizzati quando:
-

Il valore sconosciuto (non lo conosciamo ma esiste).


Il valore non esiste.
Il valore senza informazione (non sappiamo se esiste o meno, e comunque
non lo abbiamo).

N.B.
I DBMS non distinguono le 3 tipologie di valori.
Es.

Rappresentazione
Per rappresentare un valore nullo, si utilizza il valore NULL.

44

Es.

Limite dei valori nulli


Alcuni valori nulli possono essere ammissibili, altri invece no.
Es. Valore nullo ammissibile

In questo caso semplicemente non sappiamo la data di nascita di un dato studente.


Es. Valore nullo non ammissibile

In questo caso non avrebbe senso non sapere la matricola di uno studente, in quanto
cosi non saremmo in grado di identificarlo.
In generale la presenza dei valori nulli sulle chiavi non permette pi la funzionalit
della chiave, e pertanto questi valori vanno limitati / non permessi.
Def. Chiave Primaria
Chiave (generica) su cui non sono ammissibili valori nulli.
Una chiave primaria viene rappresentata semplicemente sottolineando il campo
scelto.

45

Es.

Vincoli di integrit referenziale (di chiave)


Def. Vincolo di integrit referenziale
Un vincolo di integrit referenziale (foreign key) fra
Un insieme di attributi X di una relazione R e
Unaltra relazione R2
Impone ai valori su X in R1 di comparire come valori della chiave primaria di R2
il pi importante vincolo inter relazionale, perch esprime una propriet strutturale
degli schemi di relazione e delle istanze corrispondenti in una base di dati.
anche chiamato vincolo di chiave esterna o foreign key, perch linsieme di
attributi X della relazione esterna R1 coincide con la chiave primaria di R2.
Es.
Supponiamo di voler rappresentare la relazione logica che esiste tra vigili cha
segnalano infrazioni (rappresentati con matricola, cognome, e nome) e le infrazioni
segnalate (rappresentate con codice, data, vigile, provincia e numero targa della
automobile).
Informalmente diciamo che:
Nella tabella Infrazioni vi sia il codice di un vigile che non esiste nellanagrafica della
tabella Vigili.

46

In questo caso notiamo che tutti i valori di Vigile nella relazione Infrazioni sono
rappresentati nella chiave Matricola della relazione Vigili.
Notiamo per che nella tabella Vigili vi un vigile che non compare nella tabella
infrazioni:

Questo per non un problema, in quanto significa semplicemente che quel vigile non
ha fatto multe.

Rappresentazione grafica
Per rappresentare graficamente un vincolo di integrit referenziale si collega con una
freccia il campo da referenziare, che va verso il campo della tabella in cui devono
esistere tutti i valori presenti del campo dal quale parte la freccia.
Es.

Riepilogo
Es. di uno schema relazionale
47

48

Progettazione concettuale
Che cos

La progettazione concettuale rappresenta


lanalisi dei requisiti utente e la relativa
trasformazione nel modello relazionale.

49

Problematiche
Il problema durante questa fase che spesso i dati forniti dallutente sono ambigui e
ricchi di sfumature.
Es.

Strategie di analisi
Quando i requisiti sono molto articolati e composti da diverse pagine di testo
necessario avere di un piano di azione che permetta di fare le scelte di progettazione.
Le strategie principali sono 2:
Ricerca dei requisiti pi importanti:
o Prendiamo in esame il seguente schema:

50

Nel 1 passo si iniziano a tirar fuori quelle entit che risultano essere pi
importanti (in questo caso studente).
o Nel 2 passo si iniziano a cercare quali relazioni e quali entit sono
collegate al concetto principale (in questo caso studente).
o Nel 3 passo si raffinano tutti questi concetti modellati.
Ricerca di tutte le possibili entit:
o Prendiamo in esame il seguente schema:
o

o
o
o

Nel 1 passo si iniziano a tirar fuori tutte le possibili entit.


Nel 2 passo si iniziano a cercare quali relazioni esistono fra queste
entit.
Nel 3 passo si raffinano tutti questi concetti modellati.

Qualit di uno schema concettuale


Def: Qualit
Insieme di caratteristiche desiderabili per rappresentare uno schema concettuale.

Quali sono
Le qualit di uno schema concettuale sono 5:
Correttezza:
Rispetto ai requisiti:
o I requisiti vengono rappresentati nello schema in coerenza con il
significato dei concetti nel modello E-R.
o Es. di correttezza
Rappresentare il legame tra Persona e Citt di nascita con una relazione
1 a n.
o Es. di non correttezza
Rappresentare il legame tra Persona e Citt di nascita con una relazione
1 a 1.
Rispetto al modello:
o I concetti del modello sono usati nello schema in accordo al loro
significato.
o Es. positivo:
Usare in una anagrafe clienti il cliente come entit.
o Es. negativo:
51

In una base dati di indirizzi usare una entit per il concetto di Numero
civico.
Completezza:
Tutti i requisiti devono essere rappresentati nello schema.
Es. positivo:
In una data in cui non sia di interesse specificare lora del giorno, rappresentare
la data come giorno, mese, anno.
Es. negativo:
Non rappresentare il voto nella relazione Esame.
Pertinenza:
Caratteristica complementare rispetto alla completezza, infatti in questo caso
non vi devono essere nello schema concetti che non compaiono nei
requisiti.
Es. negativo:
Rappresentare nella relazione Esame lora e il minuto in cui stato verbalizzato
lesame.
Es. negativo
Supponiamo di avere i seguenti requisiti:
Gli studenti superano i corsi attraverso esami, con un certo voto.
Il progettista sviluppa lo schema aggiungendoci per anche la data.

Il progettista pu aver aggiunto questo campo per una sua vista di completezza
(che in questo caso pu aver senso) tuttavia sempre meglio chiedere
conferma al cliente, e quindi in questo caso lo schema non pertinente.
Minimalit:
Non vi devono essere pi concetti che rappresentano gli stessi requisiti.
Es. negativo
Rappresentare la Citt di Nascita di Studente con un attributo della entit
Studente e con una relazione Nato a tra Nato-Studente e Citt.
N.B: La non minimalit (ridondanza) a livello concettuale pu essere ammessa.
Leggibilit:
Lo schema deve rappresentare i requisiti in modo comprensibile, ossia lutente
non deve fare un grande sforzo nel capire i requisiti guardando lo schema.
Caratteristica dello schema per cui lo schema rappresenta il significato dei
requisiti, senza necessit di ulteriore documentazione aggiuntiva.
Pu essere di 2 tipi:
o Leggibilit grafica:
Intesa come leggibilit del diagramma rappresentante lo schema,
basata sul rispetto di criteri estetici, quali:
Non vi devono essere incroci tra linee.
Le linee devono essere orizzontali o verticali, non oblique.
52

Es.

Per aiutarsi a costruire uno schema pi rigido si pu immaginare


di organizzare il foglio mediante una griglia (immaginaria o reale).

Leggibilit concettuale:
Intesa come scelta delle strutture del modello che, in virt delle
loro propriet, danno luogo ad uno schema compatto, e quindi pi
semplice da comprendere.

53

Es.

In questo caso grazie alla relazione ISA otteniamo uno schema pi


leggibile e compatto.

Strategie di progettazione
Le strategie di progettazione pi avanzate possono essere di 3 tipologie:

Top-down:
o Da un piccolo schema molto astratto si passa a schemi via via pi
dettagliati.
o Si parte inizialmente cercando le varie entit e assegnandole i relativi
attributi.
o Segue quindi la ricerca delle relazioni tra le varie entit.
o Si cercano eventuali entit da generalizzare.
Bottom-up:
o Da tanti piccoli schemi fatti di pochi concetti si passa alla loro
integrazione in uno schema completo.
o Steps:
Si analizza linsieme delle specifiche.

Queste specifiche vengono frammentate fino a quando questi


frammenti non sono abbastanza semplici da poter esser
rappresentati mediante un insieme di schemi concettuali.

54

Una volta ottenuti tutti questi piccoli insiemi, verranno uniti nello
schema finale.

Inside-out:
o Dal concetto pi importante si va verso tutti gli altri a macchia dolio.

Possiamo riassumere queste 3 strategie indicandone i vantaggi e gli svantaggi:


Metodologia
Vantaggi
Top-Down - Non ci sono mai ristrutturazioni
da fare.
- In ogni momento il progettista
rappresenta sempre lintero
insieme dei requisiti.
Bottom-Up - Naturale.
- Permette di dividere il lavoro di
progettazione tra diversi gruppi
Inside-Out

- Naturale, perch parte dai


concetti pi importanti e poi
procede verso quelli di dettaglio

Svantaggi
- Poco naturale.
- Richiede una elevata capacit di
dominare specifiche complesse.
- Richiede ristrutturazioni, perch
la progettazione separata di parti di
schemi porta a possibili ridondanze
e inconsistenze.
- Porta anchessa a ristrutturazione,
ma meno rispetto la Bottom Up.

Da questanalisi, proviamo quindi a creare una strategia mista, ossia:

Mix delle 3 tipologie in cui vengono presi solo i vantaggi di ogni tipologia.
Si parte individuando i concetti principali realizzando uno schema a scheletro
(ossia uno schema che raccoglie i concetti pi importanti).

Si sceglie se continuare con una strategia mista di tipo:


55

Top down completa:


Analisi dei requisiti:
Analizzare i requisiti ed eliminare le ambiguit
Raggruppare i requisiti in insiemi omogenei
Passo base
Definire uno schema scheletro con i concetti pi
Rilevanti.
Passo iterativo:
Da ripetere finch non sono stati rappresentati requisiti.
Steps:
o Raffinare i concetti presenti sulla base delle loro
specifiche.
o Aggiungere concetti per descrivere specifiche non
descritte (in modalit inside, quindi moderata).
o Verificare le qualit dello schema e eventualmente
modificarlo per raggiungere le qualit desiderate
(cercare eventuali alternative che porterebbero a
migliorare lo schema).
Ibrida:
Analisi dei requisiti.
Passo base:
Creare uno schema scheletro.
Decomposizione (passo bottom-up):
Decomporre i requisiti con riferimento ai concetti nello
schema scheletro.
Creare i diversi sottoschemi.
Passo iterativo, per ogni sottoschema Integrazione:
Integrare i vari sottoschemi in uno schema complessivo,
facendo riferimento allo schema scheletro.
Analisi di qualit:
Cercare eventuali alternative che porterebbero a migliorare
lo schema.

Possiamo riassumere i vantaggi e gli svantaggi della tecnica mista:


Metodologia
Vantaggi
Mista
- Coniuga tutti i vantaggi delle
precedenti, mantenendo sempre
una rappresentazione completa
delle specifiche.

56

Svantaggi
- Richiede una visione complessiva
delle specifiche (pi moderatamente
rispetto la top down).

Algebra Relazionale
Che cos
I modelli concettuali e logici permettono di descrivere informazioni, ma non sono
direttamente interpretabili da un elaboratore.
Per poter eseguire delle operazioni sulle basi di dati (ad esempio interrogare e
aggiornare) necessario utilizzare dei linguaggi dotati di una sintassi propria.
Le operazioni possibili sono di 2 tipologie:

DDL:
o
o
DML:
o
o

Acronimo di Data Definition Language.


Operatori che permettono di descrivere uno schema
Acronimo di Data Manipulation Language.
Operatori che permettono di effettuare manipolazioni sui dati.

I linguaggi di interrogazione si distinguono in 2 categorie:

Procedurali:

Descrivono come viene generato il risultato, specificando le modalit di


generazione.
Descrivono lordine delle singole operazioni che, se eseguite nel loro insieme, ci
permettono di generare il risultato.
Es. Un esempio di questo linguaggio lalgebra relazionale.

Dichiarativi:

Dichiarano che cosa devessere ottenuto nel risultato.


Descrivono direttamente quali sono le caratteristiche del risultato, e poi sar il
DBMS a generare il risultato.
Es. Un esempio di questo linguaggio il calcolo relazionale, anche se questo
linguaggio solo teorico.
Es. Un altro esempio di questo linguaggio il QBE (Query By Example), ossia
un linguaggio adottato nei DBMS per interrogare direttamente la BD mediante
un esempio.
Questo linguaggio utilizza un interfaccia grafica molto intuitiva e user-friendly.
Es. Un esempio di linguaggio ibrido fra le 2 categorie lSQL.

Operatori
La caratteristica comune degli operatori che operano su relazioni e producono
relazioni.
Si suddividono in:

Operatori insiemistici:
57

Operatori che permettono di effettuare delle operazioni su insiemi


(unione, intersezione e differenza).
Ridenominazione.
Selezione.
Proiezione.
Join:
o Join Naturale, Theta join, Prodotto cartesiano.
o

Semantica
La semantica di un operatore esprime il significato delloperatore, ossia quali
elaborazioni effettua.
Es.
Loperatore di selezione indica quali campi mostrare nel risultato.

Sintassi
La sintassi di un operatore rappresenta un insieme di regole che devono essere
rispettate per comporre listruzione.
Es.
Loperatore di selezione in SQL si indica mediante il comando SELECT.

Operatori insiemistici
Essendo le relazioni degli insiemi, gli elementi dellinsieme sono sempre distinti tra
loro (appaiono al pi una sola volta).
Valgono quindi le principali propriet degli operatori insiemistici:
1. possibile applicarli solo a relazioni a relazioni definiti sugli stessi attributi.
2. I risultati devono essere relazioni, quindi ennuple identiche vengono
semplicemente raccolte in un'unica ennupla.

58

Operatore di Unione
Si applica a 2 o pi relazioni (definite sugli stessi attributi), fornendo come risultato
una relazione che comprende tutte le ennuple della prima relazione e tutte le ennuple
della seconda relazione (le ennuple identiche vengono raggruppate).
Def:
Lunione di due relazioni r1 e r2 la relazione r= r1
r2 che contiene le tuple che
appartengono ad r1oppure ad r2, oppure ad entrambe.
La sintassi la seguente:

Es.

Operatore di Intersezione
Si applica a 2 o pi relazioni (definite sugli stessi attributi), fornendo come risultato
una relazione che comprende solo le ennuple comuni nella prima relazione e nella
seconda relazione.
Def:
Lintersezione di due relazioni r1(X) e r2(X) definite su un insieme di attributi X la
relazione r(X)= r1(X)
r2(X) contenente le tuple che appartengono sia a r1(X) che
a r2(X).
La sintassi la seguente:

59

Es.

Operatore di Differenza
Si applica a 2 o pi relazioni (definite sugli stessi attributi), fornendo come risultato
una relazione che comprende le ennuple della prima relazione che non compaiono
anche nella seconda relazione.
Def:
La differenza tra due relazioni r1(X) e r2(X) definite su un insieme di attributi X la
relazione r(X)= r1(X) - r2(X) contenente le tuple che appartengono solo a r1(X).
La sintassi la seguente:

Es.

60

Operatore di ridenominazione
Supponiamo di voler effettuare la seguente unione:

Loperazione a livello naturale avrebbe senso, tuttavia non possibile in quanto (come
gi detto) lunione possibile solo su relazioni con gli stessi attributi.
Questa operazione possibile per grazie alloperatore monadico (cio con un
argomento) di ridenominazione, che "modifica lo schema" lasciando inalterata l'istanza
dell'operando (ossia rinomina semplicemente un campo).
Sintassi:

REN NuovoCampo CampoDaRinominare (NomeTabella)


Es.

Se riprendiamo lesempio fatto poco sopra, ci accorgiamo come loperazione di unione


tra le 2 tabelle Padre e Madre diventi possibile.

61

Operatore di selezione
Loperatore monadico di selezione permette di selezionare un sottoinsieme delle
ennuple, e produce un risultato che:
- Ha lo stesso schema dell'operando.
- Contiene un sottoinsieme delle ennuple che soddisfano una condizione espressa
dalloperatore.
La sintassi la seguente:

Dove la condizione un espressione booleana che segue la seguente sintassi:


Data una relazione r(X), una formula ottenuta combinando con i connettivi OR, AND,
e NOT condizioni atomiche del tipo:
A CONFR B oppure A CONFR c, dove:
1. CONFR un operatore di confronto (=, >, ecc.).
2. A e B sono attributi in X sui cui valori CONFR abbia senso.
3. c una costante per cui il confronto CONFR sia definito.

62

Es. Condizioni
Dato il seguente schema:

Seleziona gli impiegati che:


- Guadagnano pi di 50 Stipendio > 50
- Guadagnano pi di 50 e vivono a Milano Stipendio > 50 AND Filiale = Milano
- Hanno un cognome uguale al nome del luogo della filiale presso cui lavorano
Cognome = Filiale
Facciamo quindi un esempio completo
Dato il seguente schema:

1. Seleziona gli impiegati che guadagnano pi di 50:

2. Seleziona gli impiegati che guadagnano pi di 50 e lavorano a Milano:

63

3. Seleziona gli impiegati che hanno un cognome uguale al nome del luogo della
filiale presso cui lavorano:

Operatore di Proiezione
Loperatore monadico di proiezione produce un risultato che:
- Ha una parte degli attributi dell'operando.
- Il risultato contiene le ennuple dell'operando ristrette ai soli attributi
nella lista attributi.
La sintassi la seguente:

Es.
Dato il seguente schema:

64

1. Trova matricola e cognome di tutti gli impiegati

2. Trova cognome e filiale di tutti gli impiegati

Riepilogo operatori di selezione e proiezione


In sostanza, loperatore di selezione permette di selezionare alcune ennuple, mentre
loperatore di proiezione permette di proiettare solo gli attributi (campi) desiderati.
Combinando insieme questi operatori possibile effettuare interrogazioni pi mirate.
Es.
Dato il seguente schema:

Trovare matricola e cognome degli impiegati che guadagnano pi di 50


65

Tuttavia, questi 2 operatori sono limitati alla singola relazione sulla quale vengono
eseguiti (es. la tabella Impiegati).

Operatore di Join
A differenza degli altri operatori che non creano nuove relazioni, questo operatore
crea invece nuove relazioni.
Questo operatore permette infatti di mettere insieme dati che si trovano in relazioni
diverse.
Es.
Uniamo le 2 relazioni tramite il campo Numero:

Join naturale
la tipologia di join pi semplice, e produce un risultato:
Sullunione degli attributi degli operandi.
Con le ennuple costruite ciascuna a partire da una ennupla di ognuno degli
operandi.
66

Il risultato sar quindi dato dagli attributi della relazione R1 e della relazione R2, e le
sue ennuple saranno solo quelle che avranno gli stessi valori nello stesso attributo di
entrambe le relazioni.
Il join naturale utilizza implicitamente i nomi degli attributi per stabilire la
condizione!
La sintassi la seguente:

R1 JOIN R2
Es.
Supponiamo che la relazione Impiegato-Reparto si chiami Impiegati e che la relazione
Reparto-Capo si chiami Reparti.
Iniziamo con lunire la n-pla Rossi-A con A-Mori

67

Uniamo quindi la n-pla Neri-B con B-Bruni

In fine, uniamo Bianchi-B con B-Bruni

Il risultato che si ottiene, rappresenta la lista degli impiegati e dei capi a loro associati.
Quando (come in questo caso) ogni ennupla di entrambe le relazioni contribuisce al
risultato, si parla di join completo.
Quando invece non tutte le ennuple di entrambe le relazioni (o anche di una sola)
contribuiscono al risultato, si parla di join non completo.
68

In questo caso essendo il valore A diverso dal valore C non possibile accoppiarle, e
quindi di fatto non contribuiscono al risultato.
Quando invece nessuna delle n-ple contribuisce al risultato, si parla di join vuoto.
Es.

In questo caso infatti, non esiste nessun valore contenuto nel campo Reparto della
relazione R1 che esiste nel campo Reparto di R2.

69

Join esterno
Supponiamo di avere le seguenti relazioni:

Se dovessimo fare un join fra queste 2 relazioni, ci accorgeremmo che le ennuple


Rossi-A e C-Dini non si accoppierebbero

Per far si che vengano salvate anche le ennuple che non si accoppiano, si pu
utilizzare il join esterno.
Il join esterno estende con valori nulli le ennuple che verrebbero normalmente
escluse in un join naturale.

70

Esistono 3 tipologie di join esterno:

Sinistro (Left Join):


o Mantiene tutte le ennuple del primo operando.
o Es.

Destro (Right Join):


o Mantiene tutte le ennuple del secondo operando.
o Es.

71

Completo (Full Join):


o Mantiene tutte le ennuple (sia del primo che del secondo operando).
o Es.

Prodotto cartesiano
Il prodotto cartesiano un join naturale applicato a relazioni che non hanno attributi
in comune.
Il risultato delloperatore sar una relazione che contiene il numero delle ennuple della
relazione R1, moltiplicato per il numero delle ennuple della relazione R2.
La sintassi la seguente:

Es.

R1

R2

72

Operatore Theta Join


Il prodotto cartesiano ha senso solo se seguito da una selezione, ossia una volta
prodotto tutte le possibili ennuple, si selezionano solo quelle di interesse.
La sintassi la seguente:

Dove la condizione un AND di operatori di confronto (>, <, =, ecc..).


Es.

In alternativa, era anche possibile utilizzare la seguente sintassi:

Loperatore Equi-Join
Quando loperatore utilizzato in una theta join luguaglianza, allora si parla di equi
join.
La sintassi la seguente:

73

Es.

N.B.
Questo esempio identico a quello del theta join, la differenza sostanziale fra i 2
operatori per che nel theta join si sarebbe anche potuto utilizzare loperatore
diverso o maggiore / minore, mentre nellequi join obbligatorio utilizzare
loperatore di uguaglianza.

Join naturale vs Equi Join


La differenza principale tra join naturale ed equi join che il join naturale utilizza
implicitamente gli attributi uguali per fare il join, mentre lequi join li indica
esplicitamente nella condizione (ed quindi possibile effettuare dei join su attributi
con nomi diversi).

1. Trovare linsieme delle relazioni sulle quali applicare gli operatori.


2. Procedi secondo una strategia dallinterno verso lesterno, ossia una strategia
che allinizio collega le varie relazioni e che poi elimina tutto ci che non
serve (attributi e / o ennuple che non soddisfano determinate condizioni):
a. Cerca di capire se servono dei join sulle relazioni, in quanto spesso le
informazioni che ci necessitano sono frammentate in pi relazioni.
b. Cerca di capire se vi sono operazioni insiemistiche (che non alterano la
struttura della tabella) in grado di farti avvicinare al risultato.
c. Individua eventuali selezioni per selezionare solo quelle ennuple che
soddisfano le condizioni desiderate.
d. Definisci la proiezione finale della relazione, ossia quali campi vuoi
visualizzare.

74

Es.
Supponiamo di avere la seguente base di dati:

Supponiamo di voler ottenere una relazione che mostrer gli studenti con matricola,
cognome, insieme degli esami sostenuti con il nome del corso ed un voto maggiore di
24.
1. Linsieme delle relazioni sulle quali applicare gli operatori sono tutte e 3 le
tabelle, in quanto solo con loperatore di proiezione necessiteremmo dei campi
Studenti-Matricola, Studenti-Cognome, Esame-Voto, Esame-Corso, Corsi-Titolo.
2. Operatori:
a. Join: sono necessari dei join su Studenti-Matricola = Esami-Studente, e
Esami-Corso = Corsi-Codice, ossia:

Studenti JOIN

Matricola = Studente

Esami JOIN

Corso = Codice

Corsi

Otteniamo quindi una relazione (che chiameremo Studenti-Esami-Corsi)


composta dagli attributi Matricola, Cognome, Nome, Data di nascita,
Voto, Titolo, Docente).
b. In questo caso non ci servono operazioni insiemistiche, in quanto grazie
ai join otterremmo tutte le informazioni che ci servono.
c. Come operazione di selezione noi vogliamo visualizzare solo quegli
studenti che abbiano ottenuto una valutazione maggiore di 24, e quindi:

SEL

Voto>24

(Studenti-Esami-Corsi)

d. Come proiezione invece, noi siamo interessati a visualizzare solo i campi


Matricola, Cognome, Titolo e Voto, e quindi:

PROJ

Matricola, Cognome, Titolo, Voto

75

3. Componiamo quindi le 3 diverse operazioni:

PROJ Matricola, Cognome, Titolo, Voto (


SEL Voto>24 (Studenti JOIN Matricola = Studente Esami
JOIN Corso = Codice Corsi))
In questo caso per, linterrogazione formerebbe prima tutta la tabella con tutte
le possibili ennuple, e poi di queste farebbe una selezione.
Come possibile ottimizzazione si potrebbe fare il join diretto su quegli esami con
una valutazione superiore al 24.

PROJ Matricola, Cognome, Titolo, Voto (


Studenti JOIN Matricola = Studente
(SEL Voto>24 (Esami)) JOIN Corso = Codice Corsi)

Viste
Le viste sono una sorta di relazioni virtuali, dove si pu assegnare ad un nome
simbolico una porzione dellinterrogazione.
Vantaggi

Semplificazione della scrittura delle query (grazie alla riduzione della lunghezza
totale della query).
La ripetizione di eventuale codice nelle query risulta meno fastidioso.
Lettura semplificata.

Svantaggi

Lutilizzo delle viste non influisce sulle prestazioni.

Es.

76

SQL
Al contrario dellalgebra relazionale, SQL un linguaggio dichiarativo. ossia
specifica cosa si vuole, non come lo si vuole.

Qualit di una interrogazione


Una interrogazione devessere:
Corretta.
Efficiente (eseguita in poco tempo e/o con basso utilizzo della memoria).
Comprensibile (leggibile).
Ad oggi i compilatori ottimizzano in automatico le query, pertanto il progettista
dovrebbe scegliere la query pi comprensibile possibile.

Operatore Select
Permette di selezionare un insieme di campi e record mediante delle determinate
condizioni.
In pratica rappresenta loperatore PROJ dellalgebra relazionale.

Sintassi
Lista degli attributi (campi) da
visualizzare, separati da virgola.
Lista delle tabelle coinvolte dalla
query, separate da virgola.
Formula ottenuta combinando i
connettivi AND, OR, NOT.
77

A CONFR B oppure A CONFR c, dove:


1. CONFR e un operatore di
confronto (=, <> ,<, >, <=,
>=, LIKE, BETWEEN, IS NULL,
IS NOT NULL)
2. A e B sono attributi in X sui cui
valori CONFR abbia senso (es.
intero CONF intero).
3. c una costante per cui il
confronto CONFR abbia senso
(es. COSTO >= 5)
N.B.
Nel caso in cui interessino tutti gli attributi di una stessa relazione, possibile
utilizzare il carattere * al posto di elencare tutti gli attributi!

Supponiamo di avere il seguente schema:

Vogliamo sapere il nome e il reddito delle persone con meno


di 30 anni.

Select *
From Impiegati
Where Reddito<30

equivalente a

Select Nome, Et, Reddito


From Impiegati
Where Reddito<30

equivalente a

SEL

Che in AR corrisponde a:
Select *
From Impiegati
Where Reddito<30

Reddito<30

(Impiegati)

Semantica
1. Viene effettuato il prodotto cartesiano delle tabelle citate nella FROM.
2. Seleziona dal prodotto cartesiano le n-ple che soddisfano la condizione presenti
nella WHERE.
3. Delle n-ple selezionate, fornisci in output solo i valori degli attributi citati nella
ListaAttributi.

78

Similitudine tra AR e SQL


Supponiamo di avere il seguente schema:

Scriviamo una query in algebra relazione e in SQL che selezioni nome, cognome e
mansione degli impiegati dellufficio 10.

Notiamo come SQL sia molto simile allAR, per tanto valgono le stesse strategie di
progettazione.

Strategie di progettazione
Per SQL valgono le stesse strategie di progettazione delle query in AR.
1. Individuiamo le relazioni che ci servono:
a. La relazione su cui effettuare la interrogazione Persone (From Persone).
2. Filtriamo prendendo solo le ennuple che ci interessano:
a. Selezione delle persone con meno di 30 anni (Where Et < 30).
3. Mostrare solo gli attributi che ci interessano:
a. Produrre Nome e Reddito (Select Nome, Reddito).

79

Es.
Supponiamo di avere il seguente schema:

Vogliamo sapere il nome e il reddito delle


persone con meno di 30 anni.

Applichiamo le strategie:

Individuiamo le relazioni (in questo


caso la tabella Persone contiene tutte
le informazioni che ci interessano).

From Persone

Filtriamo solo le ennuple che ci


interessano (Persone con meno di 30
anni).

Where Et < 30

Mostriamo solo gli attributi che ci


interessano.

Select Nome,
Reddito

80

Operatore di ridenominazione
possibile rinominare alcuni attributi utilizzando loperatore AS per questioni di
leggibilit oppure in caso di join multiplo con lo stesso attributo.
Es. Leggibilit
Supponiamo di avere il seguente schema:

Query: Selezionare i nomi, i cognomi e le citt di provenienza degli impiegati.


SELECT Nome, Cognome, citt AS citt_provenienza
FROM Impiegato
Otteniamo quindi questo schema:

Es. Join multiplo


Supponiamo di avere il seguente schema:

Query: Selezionare i nomi e i cognomi degli impiegati, le citt di provenienza e le citt


in cui lavorano.
SELECT Nome, Cognome, CittDip AS citt_lavoro, Citt AS citt_provenienza
FROM Impiegato, Dip
WHERE Dipart = NomeDip

81

In alternativa alloperatore AS anche possibile ometterlo ottenendo lo stesso


significato!
In questo caso si parla di variabile di assegnazione.
Es.
SELECT Nome, Cognome, CittDip citt_lavoro, Citt citt_provenienza
FROM Impiegato, Dip
WHERE Dipart = NomeDip
Inoltre la ridenominazione applicabile anche ai nomi delle relazioni.
Es.
SELECT Nome, Cognome, CittDip, Citt
FROM Impiegato, Dip Dipartimento
WHERE Dipart = NomeDip

Notazione NomeTabella.NomeAttributo
Un altro metodo per distinguere pi campi con lo stesso nome ma in diverse relazioni
(o nella stessa in caso di multi join dello stesso campo) consiste semplicemente nello
specificare a quale relazione appartengono.
In generale, se A il nome di un attributo ed X il nome di una relazione su cui
definito A, X.A denota lattributo A della relazione X.

82

Es.
Supponiamo di avere il seguente schema:

SELECT Studenti.Matricola, Nome, Cognome


FROM Studenti, Esami, Corsi Corso
WHERE Studenti.Matricola = Esami.Matricola AND Esami.Corso = Corso.Codice

Condizione LIKE
La condizione LIKE viene applicata alle stringhe, e funziona come tutti gli altri
operatori condizionali.
Le condizioni possono essere 2:

Operatore _:
o Indica che in questa posizione qualsiasi carattere andr bene.
Operatore %:
o Indica che una stringa pu avere un numero qualsiasi di caratteri e di
valore.

Es.
Supponendo di voler trovare le persone che hanno un nome che inizia per A e come
terza lettera hanno una d, allora:
SELECT *
FROM Persone
WHERE Nome LIKE A_d%

83

Es.
Supponendo di voler trovare le persone che hanno un nome che finisce per O e come
terza lettera hanno una l, allora:
SELECT *
FROM Persone
WHERE Nome LIKE __l%O
Es.
Supponendo di voler trovare le persone che hanno nel nome la lettera c, allora:
SELECT *
FROM Persone
WHERE Nome LIKE %c%

Valori nulli
I valori nulli hanno la stessa interpretazione dei valori nulli in AR.
Es.
Dato il seguente schema:

Supponiamo di voler sapere quali impiegati hanno pi di 40 anni o potrebbero averne


pi di 40.
SELECT *
FROM Impiegati
WHERE Et>40 OR Et is NULL
Supponiamo ora di voler invece di voler sapere di quali impiegati si conosce let:
SELECT *
FROM Impiegati
WHERE Et is not NULL

84

Clausola Distinct
Al contrario dellalgebra relazionale, in SQL eventuali ennuple identiche verranno
mantenute.
Per ovviare a questa problematica esiste la clausola Distinct, che serve appunto ad
eliminare eventuali tuple identiche.
Es.
Supponendo di avere il seguente schema:

Supponiamo di voler avere il cognome e la filiale di tutti gli impiegati:


In AR sarebbe:

In SQL invece:

SELECT Cognome, Filiale


FROM Impiegati

SELECT Distinct Cognome, Filiale


FROM Impiegati

85

Operatore Join
Loperatore di join unisce 2 o pi relazioni in un'unica relazione, mediante un attributo
in comune.
Per spiegare le varie tipologie di join prendiamo in esempio il seguente schema:

I join si suddividono in 2 macro categorie:

Join
o
o
o

interni:
il join di default.
Non vengono considerate le ennuple che non si accoppiano.
Si suddividono in:
Join implicito:
Effettua il join in modo automatico in base alla condizione
richiesta.
Es.
Select Paternit.Figlio, Madre, Figlio
From Maternit, Paternit
Where Paternit.Figlio = Maternit.Figlio
Join esplicito:
Effettua il join direttamente sulle tabelle su esplicita
richiesta su quali attributi farlo.
La condizione quindi non compare nella clausola WHERE ma
direttamente nella clausola FROM, rendendo quindi la query
pi comprensibile rispetto unaltra con il join implicito.
Sintassi:
86

SELECT
FROM Tabella1 JOIN Tabella2 ON CondizioneDiJoin
WHERE
Es.
Select Paternit.Figlio, Madre, Figlio
From Maternit JOIN Paternit ON Paternit.Figlio =
Maternit.Figlio
Join naturale:
Effettua il join su attributi con lo stesso nome delle 2
relazioni.
Poco utilizzato.
Es.
SELECT Madre, Paternit.Figlio, Padre
FROM Maternit NATURAL JOIN Paternit
Join esterni:
o Estende con valori nulli quelle ennuple che non si accoppiano.
o Esistono 3 tipologie:
Left Outer Join:
un join interno con in aggiunta le tuple che non si
accoppiano della tabella che sta a sinistra.
Sintassi:
R1 left outer join R2
Es.
Select Paternit.Figlio, Padre, Madre
From Maternit LEFT OUT JOIN Paternit ON
Maternit.Figlio = Paternit.Figlio
Right Outer Join:
un join interno con in aggiunta le tuple che non si
accoppiano della tabella che sta a destra.
Sintassi:
R1 right outer join R2
Es.
Select Paternit.Figlio, Padre, Madre
From Maternit RIGHT OUT JOIN Paternit ON
Maternit.Figlio = Paternit.Figlio
Full Outer Join:
un join interno con in aggiunta le tuple che non si
accoppiano di entrambe le tabelle.
Sintassi:
R1 full outer join R2
Es.
Select Paternit.Figlio, Padre, Madre
From Maternit FULL OUT JOIN Paternit ON
Maternit.Figlio = Paternit.Figlio

87

Clausola di Ordinamento
La clausola di ordinamento permette di ordinare le ennuple della relazione fornita
come risultato in base ad uno o pi attributi.

Sintassi
ORDER BY Attributo
Es.
Supponendo di avere il seguente schema:

E la seguente query:
Elencare lo stipendio, la mansione e il nome di tutti gli impiegati che hanno stipendio
> 40, ordinando il risultato in ordine crescente in base allo stipendio.

Ordine in modo decrescente


Di default loperatore ordina in modo crescente, ma possibile aggiungere la
notazione DESC per ordinare in modo decrescente.
Es.
Supponendo di avere il seguente schema:

E la seguente query:
Elencare lo stipendio, la mansione e il nome di tutti gli impiegati che hanno stipendio
> 40, ordinando il risultato in ordine decrescente in base allo stipendio.
88

Ordine su pi attributi
possibile ordinare tenendo conto di pi attributi.
In questo caso verranno ordinati partendo dal primo attributo sul quale fare
lordinamento che viene specificato, fino allultimo.
Es.

Operatori aggregati
Gli operatori aggregate sono funzioni che si applicano sullinsieme delle tuple
prodotte dallinterrogazione base.
Essendo una funzione, restituiranno un unico valore.

Sintassi

Per spiegare i vari operatori, verr preso come esempio il seguente schema:

89

Count
Effettua la conta delle ennuple che ha per argomento.
Es. Trovare il numero dei figli di Franco

Select COUNT (*) as NumFigliDiFranco


From Paternit
Where Padre = Franco
Come prima operazione la verr eseguita
la query normalmente (quindi la selezione
delle ennuple che soddisfano la condizione)

Loperatore Count opera sullinsieme delle


ennuple restituite dalla query:
90

Select *
From Paternit
Where Padre = Franco
N.B.
I valori nulli NON vengono conteggiati dagli operatori aggregati!
Es.
Supponendo di avere il seguente schema:

Select COUNT (*) From Persone 4


Select COUNT(Reddito) From Persone 3
Select COUNT(Distinct Reddito) From Persone 2

Min
Cerca il valore (numerico) minimo dallinsieme di valori di un attributo.

Max
Cerca il valore (numerico) massimo dallinsieme di valori di un attributo.

Avg
Calcola la media (su un campo numerico) dallinsieme di valori di un attributo.
91

Es.
Calcola la media dei redditi dei figli di Franco
Select AVG(Reddito) as RedditoMedio
From Persone Join Paternit On Nome=Figlio
Where Padre=Franco
Supponendo di avere il seguente schema:

Select AVG (Reddito) As RedditoMedio From Persone 25,6


Select AVG (*) As RedditoMedio From Persone Errore
Select AVG (Nome) As RedditoMedio From Persone Errore

Sum
Calcola la somma (su un campo numerico) dellinsieme dei valori di un attributo.
Es.

Limite degli operatori aggregati


Supponiamo di voler trovare la persona con il reddito massimo e il suo nome.
Select Nome, Max(Reddito) From Persone Non sintatticamente corretta!
92

Infatti gli operatori aggregati non hanno la stessa semantica degli attributi, e quindi
non possibile utilizzarli insieme ad altri attributi (a meno di non usare la clausola
Group By).
Una possibile soluzione (senza lutilizzo della nuova clausola) la seguente:
RedditoMax = Select Max(Reddito) From Persone
Select Nome, Reddito
From Persone
Where Reddito = RedditoMax
Un altro esempio pu essere il seguente:
Trovare let minima e il reddito medio delle persone.
Select Min(Et), Avg(Reddito) From Persone Corretta

Operatore Group By
Le funzioni di aggregazione si applicano allintero risultato dellinterrogazione, tuttavia
mediante loperatore GROUP BY possibile applicare queste funzioni a gruppi di
tuple del risultato.

Sintassi

Semantica
1. Viene eseguita la query senza tener conto degli operatori aggregati / funzioni.
2. Raggruppa le righe che hanno gli stessi valori per gli attributi che compaiono
nella lista attributi della group by.
3. Applica loperatore aggregato a ciascun gruppo di ennuple.
Es.
Supponiamo di avere il seguente schema:

93

Query:
Trovare il numero dei figli di ciascun padre che hanno un reddito maggiore di 25.
Select Padre, Count(*)
From Paternit
Where Reddito>25
Group By Padre
Lordine di esecuzione il seguente:
Select Padre, Count(*)
From Paternit
Where Reddito>25
Group By Padre
Ossia, trova tutti i figli che hanno un
reddito superiore a 25
Select Padre, Count(*)
From Paternit
Where Reddito>25
Group By Padre
Ossia, raggruppa ne ennuple del
risultato per padre (le ennuple che
avranno lo stesso padre saranno viste
come un sottoinsieme di una ennupla.
Select Padre, Count(*)
From Paternit
Where Reddito>25
Group By Padre
Ossia, esegui il conteggio dei gruppi
della relazione risultante.

Limite delloperatore
In una query chef uso di questo operatore c una regola fondamentale da
rispettare, ossia che pu comparire come argomento della select (ossia linsieme degli
attributi della target list) solamente un sottoinsieme degli attributi che compaiono
nella clausola group by.

94

Es. Corretto
Trova il numero dei figli di ciascun padre con un reddito maggiore di 50
Select Padre, Count(*) As NumFigli
From Paternit
Where Reddito>50
Group By Padre
Es. Scorretto
Supponiamo di avere il seguente schema:

Linterrogazione:
Select Dipartimento, Ufficio, Count(Ufficio)
From Impiegato
Group By Dipartimento
sbagliata, in quanto nella target list degli attributi della select c lattributo Ufficio
che non compare nella target list della Group By!
Infatti..
Select Dipartimento, Ufficio,
Count(Ufficio)
From Impiegato
Group By Dipartimento
Non essendoci restrizioni nella
selezione, la prima operazione svolta
quella di raggruppamento.

95

Select Dipartimento, Ufficio,


Count(Ufficio)
From Impiegato
Group By Dipartimento
Ci accorgiamo per che questa
rappresentazione non coerente con
la definizione di istanza del modello
relazione, dove le ennuple non
possono avere multi valori per lo
stesso attributo!

Es. Corretto e scorretto con group by multi attributi

Clausola Having
Mediante la clausola GROUP BY possibile raggruppare ennuple in sotto insiemi.
Tuttavia solo con questa clausola non possibile esprimere condizioni su questi sotto
insiemi (ossia condizioni che se soddisfatte permettono alla ennupla di entrare nel
sotto insieme).

Semantica
La clausola HAVING permette di esprimere condizioni sui gruppi, che vengono
applicate ad ogni sotto insieme di ennuple che vengono restituite come risultato della
group by.

96

Sintassi

Es.
Supponiamo di avere il seguente schema:

E la seguente query:
Trovare i padri i cui figli hanno un reddito maggiore di 25.

97

Having VS Where
La clausola WHERE verr utilizzata quando si vorranno esprimere condizioni su
ennuple elementari, mentre la clausola Having verr utilizzata quando si vorranno
esprimente condizioni su gruppi di ennuple.
Es.

Operatori insiemistici
Semantica
Negli operatori insiemistici le ennuple duplicate vengono eliminate (e questo perch
per definizione devono restituire insiemi).
Loperazione insiemistica possibile solo su campi che abbiano lo stesso
significato e che seguano lo stesso ordine ( anche possibile effettuarli su relazioni
diverse, purch poi si selezionino gli stessi campi da entrambe le relazioni e nello
stesso ordine).
98

Operatore di Unione
Supponiamo di aver il seguente schema:

Se volessimo avere una relazione che comprende il padre e la madre con il relativo
figlio:
Select Padre, Figlio
From Paternit
UNION
Select Madre, Figlio
From Maternit

Operatore di Intersezione
Supponiamo di aver il seguente schema:
Persona (Nome, Cognome, Et)

Se volessimo trovare i nomi degli impiegati che sono anche cognome:


Select Nome
From Impiegato
INTERSECT
Select Cognome
From Impiegato

Operatore di Differenza
Supponiamo di aver il seguente schema:
Persona (Nome, Cognome, Et)

Se volessimo trovare i nomi di impiegati che non sono anche cognome di altri
impiegati:

99

Select Nome
From Impiegato
EXCEPT
Select Cognome
From Impiegato

Viste
Le viste possono essere considerate come tabelle virtuali, e sono particolarmente
utili quando si vogliono effettuare dei join dei singoli attributi di interesse e non di
intere tabelle.
Hanno la stessa funzionalit delle viste in AR, ma mentre nellAR vengono solo
utilizzate per rendere pi leggibile il codice, in SQL vengono utilizzate anche per
possibili ottimizzazioni dei join.

Sintassi
La sintassi per creare una vista la seguente:

CREATE VIEW "nome_di_vista" AS "istruzione_SQL ";


Es.
Supponiamo di aver il seguente schema:

Create View RelVis AS Select Reddito FROM Persone

Se volessi effettuare un join con questa tabella:


Select *
From Tab1 JOIN RelVis
100

Interrogazioni nidificate
Nel caso in cui il confronto tra valori elementari non sia sufficiente, possibile
effettuare il confronto fra intere relazioni.

Sintassi

Le interrogazioni nidificate permettono:

Confronto fra uno o pi attributi e il risultato di una sotto interrogazione:


o Dove:
Lattributo (o gli attributi) nella clausola where pu essere
confrontato con il risultato dellinterrogazione mediante i seguenti
operatori di confronto =, <, <=, >, >=, <>.
Subito loperatore di confronto:
Any / In:
o Il valore dellattributo soddisfa la condizione se risulta
vero che nella sotto query esiste almeno una ennupla
che soddisfa la condizione.
All:
o Il valore dellattributo soddisfa la condizione se risulta
vero che nella sotto query tutte le ennuple soddisfano
la condizione.
Not In / <> All:
o Il valore dellattributo soddisfa la condizione se risulta
vero che nella sotto query non esiste alcuna ennupla
che soddisfa la condizione.

101

Es.
Supponiamo di avere il seguente schema:

Supponiamo di voler trovare il nome e il reddito dei padri di Francesco e


Giorgio:

Ogni valore di Nome della tabella Persone viene confrontato con il


risultato dellinterrogazione interna, ossia i padri di Francesco e
Giorgio.
Il confronto restituisce il valore vero se un qualsiasi padre
selezionato nella select ha come figlio Francesco o Giorgio.
Uso di quantificatori esistenziali (esiste o non esiste):
o Exists:
Semantica:
Restituisce il valore vero se esiste almeno un valore nella
sotto query che soddisfa la condizione.
Sintassi:
Where EXISTS = (SottoQuery)
o Not Exists:
Semantica:
Restituisce il valore vero se NON esiste nessun valore nella
sotto query che soddisfa la condizione.
Sintassi:
Where NOT EXISTS = (SottoQuery)
102

Es.

Strategie di semantica
Vi sono 2 tipologie di approccio:

Top-Down:
o La query viene analizzata partendo dallalto verso il basso, ossia si
eseguire linterrogazione partendo dai blocchi pi esterni verso quelli
interni (nellesempio sotto) dal verde, al rosso fino al viola.
Bottom-Up:
o La query viene analizzata partendo dal basso verso lalto, ossia si
esegue linterrogazione partendo dallinterno e via via raffinandolo
(nellesempio sotto) dal viola, al rosso fino al verde.

Es.
Supponiamo di voler trovare Nome, Reddito dei padri di Persone che guadagnano pi
di 20 mila.

103

Strategia top-down:

Strategia bottom-up:

Regole di visibilit
1. Non possibile fare riferimenti da blocchi esterni a variabili definite in
blocchi interni.
Se una variabile viene definita in un blocco, visibile soltanto nello stesso
blocco o nei suoi sotto blocchi.

104

2. In un blocco pi interno si pu fare riferimento a variabili definite in blocchi


pi esterni.
Questa regola complementare alla prima.

3. Se un nome di variabile omesso, si assume come riferimento la variabile


pi vicina (nel blocco pi vicina in cui stata dichiarata).
4. Non possibile eseguire le query dai blocchi interni verso i blocchi esterni (a
causa della 1 regola).
Vale quindi solo la semantica top-down.

Consigli sulla costruzione delle query


Fase 1 Analisi in linguaggio naturale

Fai un analisi della richiesta in linguaggio naturale, ossia:


o Cerca di capire quali attributi bisogna produrre in output.
o Esegui a mano linterrogazione per capire quali relazioni saranno
coinvolte.

Fase 2 - Individuazione delle operazioni base

Cerca di capire quali sono i join (i collegamenti fra le tabelle).


Cerca se servono aggregazioni.
Cerca le selezioni (capire se devon esser fatte su singole tuple o su un insieme
di tuple).
Cerca gli operatori insiemistici.

105

Fase 3 Scelta fra forma semplice / nidificata

La forma nidificata andrebbe utilizzata in casi molto complessi (nei casi in cui si
necessita una ricorsione, in cui per ogni tupla di una select, necessario
confrontarla con un nuovo insieme individuato da una select.

Fase 4 Distribuzione degli operatori

Distribuisci i join, gli operatori insiemistici e le condizioni nel where / having.


In caso di aggregazioni rispetta le regole tra gli attributi della select e group by.
Scegli eventuali operazioni aritmetiche (es. count) nella select alla fine (in
quanto verranno effettivamente svolte alla fine).

Fase 5 Caso di query nidificata

In fase di progettazione possibile progettare la query sia con approccio topdown che bottom-up
Finita la stesura, bisogna ricontrollarla in modalit top-down per verificare che
non violi una delle regole di visibilit.

Fase 6 Test

Testa la query su pi input per verificarne la correttezza.


Verifica i risultati parziali, per isolare eventuali errori.
In caso di errore, dopo la correzione riesegui la fase 6.

Riepilogo SQL

106

Progettazione logica
La progettazione logica prende in input:
-

Uno schema concettuale (modello ER)


Informazioni sul carico applicativo
Un modello logico (modello relazionale)

E fornisce in uscita:
-

Uno schema logico


La relativa documentazione

Obiettivo
Tradurre lo schema concettuale in uno schema logico corretto (ossia deve
rappresentare la stessa realt del modello ER) ed efficiente (il carico applicativo deve
utilizzare il meno possibile la memoria e il tempo di calcolo).
Def. Carico applicativo
Insieme di tutte le query che estraggono informazioni sulle basi di dati unito
allinsieme delle transazioni che modificano le istanze del DB.
Queste operazioni vengono considerate in ordine di frequenza e tempo impiegato per
ciascuna operazione.
Def. Efficienza
Rendere minimo linsieme delle risorse elaborative (memoria, CPU, tempo).
Il problema che alcune strutture del modello concettuale (ER) non sono
rappresentabili nel modello logico (relazionale).
I casi pi importanti sono:
-

Le generalizzazioni
Le relationship
Gli attributi multi valore
Gli identificatori

Misura delle risorse elaborative


Le risorse principali che necessario ottimizzare sono principalmente 2:

Tempo:
o Tempo per necessario per eseguire loperazione richiesta.
o Come si misura:
Mediante la tavola degli accessi che descrive per ogni operazione
rilevante, il numero di istanze / entit visitate.
107

Spazio:
o Spazio occupato dalle entit e relazioni.
o Come si misura:
Mediante la tavola dei volumi che descrive il numero delle istanze
delle entit e relazioni.

Fase 1 Ristrutturazione dello schema ER


Lo scopo di questa fase quella di semplificare la traduzione nello modello relazionale
costruendo un nuovo schema ER equivalente al precedente ma senza le strutture
che non sono rappresentabili nel modello relazionale (es. le generalizzazioni).
Inoltre il nuovo schema dovr ottimizzare le prestazioni del carico applicativo.

1. Analisi delle ridondanze


1. Una ridondanza un concetto (entit / relazione / attributo) che pu essere
derivato da altri concetti.
Es. Ridondanza di un attributo sulla stessa entit

In questo caso lattributo Importo del lordo pu essere derivato dalla somma
di Importo netto e IVA.
Es. Attributo derivabile da altre entit

108

In questo caso il prezzo totale derivabile dalla somma dei prezzi di tutti i
prodotti acquistati.
Es. Relazione derivabile mediante un altro percorso

In questo caso la relazione


Docenza derivabile, in
quanto possibile sapere se
una persona docente di
uno studente vedendo quali
corsi frequenta lo studente e
quali sono gli insegnanti di
questi corsi.

2. In questa fase si cerca di capire se lasciare le ridondanze o meno, cercando di


capire quali sono i:
a. Vantaggi:
i. Interrogazioni pi semplici.
b. Svantaggi:
i. Operazioni di aggiornamento pi onerose.
ii. Maggiore occupazione dello spazio di memoria.
c. Lanalisi avviene mediante uno studio della tavola dei volumi e quella
degli accessi.
Es. Analisi dei vantaggi / svantaggi di una ridondanza.
Supponiamo di avere il seguente schema:

Lattributo Numero abitanti ridondante, in quanto derivabile.


Vediamo quindi se conviene rimuoverlo o meno.
Carico applicativo
Operazione 1
Inserire una nuova persona con la
relativa citt di residenza.
Frequenza
500 volte al giorno
109

Operazione 2
Stampare tutti i dati di una citt,
incluso il numero degli abitanti.
Frequenza
2 volte al giorno

Tabella dei volumi

Analisi con la ridondanza


Calcolo della tavola degli accessi per loperazione 1:

Dove:
Inserire una nuova persona 1 accesso in scrittura su Persona
Con la relativa citt 1 accesso in scrittura su Residenza
La penultima ennupla indica la lettura del valore Numero abitanti
Lultima ennupla indica la scrittura (aggiornamento) del numero degli
abitanti (+1).
Calcolo della tavola degli accessi per loperazione 2:

Dove:
Stampa i dati di una citt 1 accesso in lettura
Calcolo dei costi
Formula N accessi * frequenza di accesso
Operazione 1 [(3 accessi in scrittura) * 2 + 1 in lettura] * 500 = 3500
Operazione 2 (1 accesso in lettura) * 2 = 2
N.B.
Gli accessi in scrittura vengono fatti in memoria principale, e quindi si
conta un doppio trasferimento da memoria secondaria a memoria
principale e viceversa.

110

Analisi senza ridondanza


Calcolo della tavola degli accessi per loperazione 1:

Dove:
Inserire una nuova persona 1 accesso in scrittura su Persona
Con la relativa citt 1 accesso in scrittura su Residenza
Calcolo della tavola degli accessi per loperazione 2:

Dove:
Stampa i dati di una citt 1 accesso in lettura
Siccome non abbiamo pi lattributo Numero abitanti dovremo
calcolarcelo (utilizzando la tavola dei volumi), e per farlo si far una
stima, dividendo il numero delle ennuple della relazione Residenza per
quello di Citt
Residenza / Citt = 1.000.000 / 200 = 5000
Calcolo dei costi
Formula N accessi * frequenza di accesso
Operazione 1 [(2 accessi in scrittura) * 2] * 500 = 2000
Operazione 2 (5001 accessi in lettura) * 2 = 10002
N.B.
Gli accessi in scrittura vengono fatti in memoria principale, e quindi si
conta un doppio trasferimento da memoria secondaria a memoria
principale e viceversa.
Riepiloghiamo
Il costo totale delle operazioni con la ridondanza sar dato dalla somma
dei costi delle 2 operazioni: OP1 + OP2 = 3500 + 2 = 3502
Il costo totale delle operazioni con la ridondanza sar dato dalla somma
dei costi delle 2 operazioni: OP1 + OP2 = 2000 + 10002 = 12002
In sostanza senza la ridondanza bisogner si ricalcolare ogni volta il
numero degli abitanti di una citt, in quanto loperazione 2 talmente
rara che non conviene memorizzare lattributo in memoria.
111

Senza questa ridondanza infatti, non solo si risparmia dello spazio su


disco per tenere in memoria il valore, ma si risparmiano 8500 accessi
giornalieri, e quindi ogni volta conviene ricalcolare il numero degli
abitanti

2. Eliminazione delle generalizzazioni e IS-A


1. Non essendo rappresentabili nel modello relazionale, vanno sostituite con
entit o relazioni.
2. Vi sono 3 possibilit:
a. Accorpamento delle entit figlie con lentit genitore.
Es.

In questo caso gli attributi singoli A11 di E1 e A21 di E2 sono stati


accorpati nellentit padre.
Per riuscire a distinguerli per, sar necessario aggiungere un nuovo
campo Tipo.
b. Accorpamento dellentit genitore con le entit figlie.
112

Es.

113

c. Sostituzione delle generalizzazioni con relazioni:


Es.

La relazione RG1 collega le istanze di E1 con le identiche istanze di E0 (e


analogamente succede con E2).
La cardinalit minima di E0 in RG1 0 in quanto esistono istanze di E0
che non sono di E1 (quando sono di E2) e analogamente succede per
RG2.
Lidentificatore esterno di E1 indica che le istanze di E1 sono identificate
dalle corrispettive in E0 (e analogamente per E2).

114

3. La scelta fra queste 3 alternative utilizzando delle regole qualitative:


a. Regola 1: Entit figlie Genitore
i. Conviene se gli accessi al genitore e alle figlie sono fatti dalle
stesse operazioni.
b. Regola 2: Genitore Entit figlie
i. Conviene se gli accessi alle figlie vengono fatte da operazioni
diverse.
c. Regola 3: Generalizzazione Relazione
i. Conviene se gli accessi alle entit figlie sono distinti dagli accessi al
padre.

3. Partizionamento / accorpamento delle entit / relazioni


1. Un partizionamento una ristrutturazione con lo scopo di rendere pi efficienti
le operazioni.
2. Lefficienza viene misurata mediante dei criteri qualitativi:
a. Separando gli attributi di un concetto che vengono acceduti
separatamente da molte operazioni.
b. Raggruppando gli attributi di concetti diversi che vengono acceduti
insieme da molte operazioni.
3. Tipologie di ristrutturazione:
a. Partizionamento verticale di entit:
Es.
Supponiamo di avere un entit Impiegato con i relativi attributi:

Come sappiamo, gli attributi anagrafici non variano molto nel


tempo, mentre quelli relativi alla retribuzione variano pi spesso.
Come soluzione, spezziamo lentit in 2 entit dividendo gli
attributi:

115

b. Eliminazione attributi multi valore:


i. Nel modello relazione gli attributi multi valore non sono
rappresentabili.
ii. Queste eliminazione viene quindi effettuata non per fini
prestazionali, ma per semplificare la traduzione dal modello logico
al modello relazionale.
Es.
Supponiamo di avere unagenzia che pu avere pi numeri di
telefono.

Possiamo eliminare lattributo multi valore in questa maniera:

In sostanza diciamo che un agenzia pu avere da 1 a pi numeri di


telefono, mentre un numero di telefono pu essere referenziato ad
1 e 1 sola agenzia.
116

Si noti come nonostante un numero di telefono possa essere un


identificatore, viene utilizzato un identificatore esterno in quanto
un istanza di telefono ha senso solo se associata ad un agenzia.
c. Accorpamento di entit / relationship:
i. Supponiamo che tutti gli attributi siano acceduti tutti insieme dalla
maggioranza delle operazioni.
ii. Per evitare operazioni di join e altre operazioni, conviene accorpare
tutti questi attributi in un'unica entit.
Es.

La soluzione in questo caso quindi quella di accorpare tutti gli


attributi in un'unica entit.

In questo caso era possibile accorpare perch una persona pu


avere da 0 a 1 appartamenti.
Se avesse potuto avere da 0 a n appartamenti, questo
accorpamento non sarebbe stato possibile, in quanto una persona
sarebbe dovuta comparire pi volte nella stessa tabella, ma questo
non possibile a causa dellunicit del codice fiscale.
117

d. Partizionamento orizzontale di relationship:


i. Nel partizionamento orizzontale lo scopo quello di dividere
istanze che raramente verranno accedute da quelle che invece
avranno un accesso pi frequente.
Es.

In questo caso interessa sapere in quale squadra gioca un


giocatore, mentre dove ha giocato interesser raramente.
Una possibile soluzione quindi la seguente:

La relazione Comp. Attuale sar quella pi acceduta, ed avendo


meno ennuple al suo interno le operazioni risulteranno pi veloci.

118

4. Scelta degli identificatori primari


1. Criteri di scelta:
a. Lidentificatore devessere strutturalmente semplice e formato da
pochi attributi.
b. Lattributo scelto come identificatore devessere utilizzato da molte
operazioni o per operazioni importanti, in modo da ottimizzare laccesso.
c. Lattributo non deve contenere valori nulli.
2. Nel caso in cui tutti gli attributi di un entit non soddisfino questi criteri,
possibile introdurre un nuovo attributo con il solo scopo di essere
lidentificatore.
Es. Di codici
Codice fiscale Persone
Matricola Studenti universitari
Partita IVA Aziende

Fase 2 Traduzione del modello logico


1. Traduzione delle entit
1. Le entit del modello logico diventano relazioni nel modello relazionale.
2. Gli attributi di un entit nel modello logico diventano gli attributi nel modello
relazionale.
Es.

2. Traduzione delle relazioni


1. Regola base:
a. Le relationship ER sono tradotte in relazioni aventi come attributi:
i. Gli identificatori delle entit coinvolte (in modo da relazionare le
varie istanze delle diverse relazioni tra loro).
ii. Gli attributi propri.

119

Es.

2. Vincoli di integrit:
a. Matricola (in Partecipazione) e la chiave di Impiegato.
Codice (in Partecipazione) e la chiave di Progetto.
b. Per motivi di leggiblit, possibile ridenominare le chiavi esterne in
Partecipazione.
Es.

3. Relationship n-arie:
a. Formate da:
i. Tante relazioni quante sono le entit.
ii. Una relazione per la relationship.
iii. Tanti vincoli di integrit quante sono le entit collegate alla
relationship.

120

Es.

Con i relativi vincoli di integrit:

3. Casi particolari
1. Caso particolare relazione 1:n:
a. Supponiamo di avere nello schema una super chiave non minimale.
b. La traduzione dello schema segue inizialmente la regola generale.

121

Es.

c. Ci accorgiamo per che nella relazione Contratto, la chiave


(CognGiocatore, DataNascG, Squadra) super chiave ma non primaria,
perch la chiave Cognome-DataNascita in virt della cardinalit 1:1,
determina univocamente la squadra.
d. Possiamo quindi eliminare la tabella della relazione in questa maniera:

Con questo nuovo schema abbiamo il vantaggio di avere una relazione


in meno, pur mantenendo la stessa quantit di informazione.
e. In conclusione, quando abbiamo una relazione 1:n non applichiamo la
regola generale, ma una regola che dar luogo a 2 sole relazioni, dove:
i. Una delle relazioni rappresentata da un entit con cardinalit x:1
e la relationship.
ii. Laltra sar formata dallaltra entit.

122

2. Relationship definita sulla stessa entit:


Es.

3. Entit con identificazione esterna:


a. Supponiamo di avere il seguente schema, con un identificatore esterno e
con cardinalit fra le 2 entit 1 a n:
Es.

Essendo una relazione 1 a n, possiamo applicare lo stesso principio del 1


caso particolare, e quindi eliminare la relazione Iscrizione ed integrarla
nella relazione Studente (insieme alla chiave esterna Universit).

123

4. Relazione 1 a 1:
a. Caso 1:
i. Entrambe le entit hanno partecipazione minima = 1.

Es.

ii. Vi sono 2 possibili soluzioni:


1. Fondere la relazionship da una parte (o dallaltra) con una
delle 2 entit.

2. Fondere le 2 entit e la relationship in un'unica relazione


(ma sconsigliato in quanto questa tipologia di
ristrutturazione dovremmo averla gi fatta
nellaccorpamento, e quindi se non stata fatta significa che
cera un motivo).
b. Caso 2:
i. Una delle entit ha partecipazione minima = 0.

124

Es.

La soluzione quella di inglobare nella relazione che ha cardinalit


minima 1 laltra entit.

Se avessimo usato invece Direttore come entit in cui incorporare


Dipartimento, essendo che la cardinalit minima 0 vi sarebbero
stati potenziali valori nulli!
c. Caso 3:
i. Entrambe le entit hanno partecipazione minima = 0.

ii. In questo caso la soluzione migliore quella di utilizzare 3


relazioni.
Il vantaggio principale che nella relazione non ci saranno valori
nulli, ma come svantaggio avremo 3 relazioni (quindi una
complicazione per le interrogazioni).
iii. Questa soluzione andr scelta quando ci saranno poche istanze
della relazione Iscrizione.

Riepilogo
Idea di base
Traduci prima:
1. Le entit (che in casi particolari comporta anche la traduzione delle relazioni,
dove la relazione R viene integrata nellentit E).
2. Le relazioni.
3. Le relazioni definite sulla stessa entit (se vi sono pi relationship tra le stesse
entit, fai una distinzione mediante una ridenominazione degli attributi).

125

Es.
Supponiamo di avere il seguente schema:

Applichiamo il primo passo, ossia la traduzione delle entit:

Iniziamo con la traduzione


dellentit Sede.
Lattributo composto viene
semplicemente scomposto in
attributi pi semplici.

126

Procediamo con la traduzione


dellentit Progetto.

Rappresentiamo ora lentit


Dipartimento, dove possiamo
anche rappresentare la relazione
Composizione perch
dipartimento ha un identificatore
esterno con una relazione 1:1 e
quindi possiamo anche inserire la
chiave di Sede, e lo stesso vale
per la relazione Direzione, dove
possiamo utilizzare lattributo
Direttore.

Rappresentiamo ora Impiegato,


e nel farlo siccome ogni
impiegato afferisce ad unico
dipartimento, possiamo anche
includere la relazione Afferenza
(e quindi anche lattributo
Data).

127

Infine, rappresentiamo la
relazione Partecipazione, che
avr come attributi le 2 chiavi
delle relative entit (il codice di
Impiegato che rinomineremo
Impiegato e il nome del
Progetto, che chiameremo
Progetto).

128

Potrebbero piacerti anche