Nessun titolo diapositiva

Download Report

Transcript Nessun titolo diapositiva

Basi di dati
Monica Bianchini
Dipartimento di Ingegneria dell’Informazione
E-mail: [email protected]
Sommario
Cenni storici e introduzione
Da sistemi informativi a sistemi informatici: le
basi di dati e i DBMS
Il modello relazionale: vincoli, chiavi, algebra
relazionale
I linguaggi di interrogazione
Le basi di dati distribuite e i sistemi ipermediali
Cenni storici
 Gli archivi costituiscono una memoria di lavoro indispensabile
per gestire quantità ingenti di informazione, per ordinare gli
elementi utili, metterli in relazione e filtrare i dati che devono
essere utilizzati nelle varie circostanze
 Prima della diffusione dei sistemi informatici, gli archivi erano
gestiti in forma cartacea, con schedari e registri, che
permettevano di catalogare e ordinare i dati secondo un unico
criterio di ricerca e rendevano disagevole il recupero e l’analisi
dell’informazione
 L’avvento dell’informatica ha permesso l’integrazione, in un
unico programma applicativo, delle funzionalità di archiviazione
e gestione dei dati
Introduzione  1
 Le basi di dati, ed i relativi programmi di gestione,
sono sistemi che permettono la manipolazione di
grandi quantità di informazione, per raggiungere gli
scopi di una qualche organizzazione (azienda,
istituzione, etc.):
Raccolta, acquisizione
Archiviazione, conservazione
Elaborazione, trasformazione, produzione
Distribuzione, comunicazione, scambio
Introduzione  2
 Le attività di gestione delle informazioni, così come le
informazioni stesse, mentre a livello umano possono
essere realizzate usando idee informali e linguaggio
naturale, a livello informatico devono essere
opportunamente formalizzate e codificate
 Tali formalizzazioni sono anteriori alla realizzazione
dei sistemi informatici
 Nei sistemi informatici le informazioni vengono
rappresentate in modo strutturato ed essenziale
(mediante i dati)
Introduzione  3
 Il database permette la creazione di una memoria
digitale vasta ed “intelligente”, che può essere
utilizzata a diversi livelli di complessità
 Il database è un insieme integrato di informazioni
omogenee, che fornisce strumenti, quali tabelle, query,
maschere e report, per la catalogazione, l’ordinamento
e la ricerca dei dati
Basi di dati... oggi...
DBMS
borsa
DBMS
orari
Sistemi informativi
Informazioni
Dati
Sistema informativo
 Sottosistema di un’organizzazione che gestisce
acquisizione
elaborazione
conservazione
produzione
delle informazioni di interesse
 Ogni organizzazione ha un sistema informativo
Le informazioni sono un “bene”
 L’esistenza del sistema informativo è indipendente
dalla sua automazione (sistema informatico)
Sistema informatico
 Gestisce
un
sistema
informativo
in
modo
automatizzato
 Garantisce che i dati siano conservati in modo
permanente su dispositivi di memoria
 Permette un aggiornamento veloce dei dati per
riflettere rapidamente le loro variazioni
 Rende i dati accessibili alle interrogazioni degli utenti
 Può essere distribuito sul territorio
 Anche prima di essere automatizzati, molti sistemi
informativi si sono evoluti verso una razionalizzazione
e standardizzazione delle procedure e della
organizzazione delle informazioni
Gestione delle informazioni
 Modo di gestire e comunicare le informazioni
accesso, elaborazione, trasmissione
lingua scritta e parlata
disegni, grafici, schemi
codici e numeri
 Modo di memorizzare l’informazione
ricordata a memoria
copia cartacea
in formato elettronico
Sistemi per la gestione di informazioni
 Nelle attività standardizzate dei sistemi informativi
complessi sono state introdotte col tempo
forme di organizzazione e
codifica delle informazioni
 Ad esempio, nei servizi anagrafici si è iniziato con
registrazioni discorsive e poi

nome e cognome
estremi anagrafici
codice fiscale .... una chiave per tutti!
I sistemi informativi
 Rendono disponibili le informazioni
 Permettono di gestirle in maniera efficace
 Non sono legati alla loro realizzazione automatizzata
(sistema informatico)
Informazione - dato
L’informazione si ottiene interpretando opportunamente i dati
Mario Rossi
Mario Rossi
Numero di telefono di Mario Rossi
0577233601
Numero
Dati e informazioni
 Dato: ciò che è immediatamente presente alla
conoscenza, prima di ogni elaborazione; in informatica,
elementi di informazione costituiti da simboli che
devono essere elaborati
 Informazione: notizia o elemento che consente di avere
conoscenza di fatti, situazioni, modi di essere
Basi di dati
 È una collezione di dati utilizzata per rappresentare
le informazioni di interesse in un sistema informativo
 I dati hanno vita più lunga delle procedure che
operano su di essi
Gestione di una base di dati
Organizzazione e conservazione dei dati
• Operazioni per la gestione e l’accesso ai dati
•
Un esempio: la rubrica telefonica
Dati
Nome Cognome Indirizzo Telefono
Mario Rossi Via Garibaldi 10 0577233601
Operazioni
•
•
•
•
Cercare un numero, dato il nome
Inserire un nuovo numero
Modificare un indirizzo
……
Basi di dati: dove si trovano?
 Anagrafe — anagrafe residenti, anagrafe studenti
 Servizi bancari — conti correnti, Bancomat, carte di
credito
 Elenchi delle utenze telefoniche
 Orari ferroviari
 Prenotazione voli
 Catalogo prodotti (CD,…)
 ……
 Accessibili in modo distribuito (Sportelli Bancomat, negozi,...)
 Accessibili da Internet (Orari FFSS, siti di ecommerce,...)
 Accessibili da terminali dedicati (Agenzie di viaggio, biblioteche...)
 ……
DBMS
 DBMS — Data Base Management System è un sistema software per
gestire basi di dati: ha il compito di amministrare i file in una base di
dati, in modo persistente e condiviso
Caratteristiche
Grandi dimensioni uso della memoria secondaria
Condivisione
accesso di più utenti a dati comuni; si riduce la ridondanza
dei dati e la possibilità di inconsistenze ed errori
Persistenza
Affidabilità
i dati rimangono memorizzati
capacità di non perdere i dati in caso di malfunzionamento
(backup e recovery)
Privatezza
ciascun utente è riconosciuto da un username e una password
e ha autorizzazione ad effettuare soltanto certe operazioni
Efficienza
capacità di svolgere le operazioni in tempo ragionevole e con
risorse di calcolo e memoria accettabili
Cosa si può fare con una base di dati  1
 Per l’utente finale, l’uso più comune di una base di
dati è l’esecuzione di opportune interrogazioni,
query, predefinite
 Esempi tipici di interrogazioni sono…
l’accesso al catalogo elettronico di una biblioteca
la consultazione (on-line oppure sulle apposite macchine
nelle stazioni) degli orari dei treni
la prenotazione di un volo aereo
la consultazione delle informazioni relative all’andamento dei
titoli in borsa
……
Cosa si può fare con una base di dati  2
 Le interrogazioni possono essere molto semplici…
 Elencami tutti i libri di Calvino che sono presenti in biblioteca
 …ma possono essere anche molto complesse
 Elencami i libri di Calvino che nel titolo hanno una parola che
compare anche nel titolo di un libro di Pavese e che sono
stati presi in prestito almeno 10 volte
 Le interrogazioni possono essere espresse usando
opportuni linguaggi, query language, che si
differenziano in base al modello dei dati adottato
 L’uso di linguaggi di programmazione specializzati
costituisce la maggiore differenza fra le basi di dati
ed i fogli elettronici (oltre alla diversa quantità di
informazione trattabile)
Descrizione dei dati nei DBMS
 Livelli diversi di descrizione e rappresentazione dei dati
permettono l’indipendenza dei dati dalla rappresentazione fisica
i programmi fanno riferimento alla struttura a livello più alto
le rappresentazioni sottostanti possono essere modificate
senza necessità di modifica dei programmi
 Si introduce il concetto di
modello dei dati
modalità usata per organizzare i dati e descriverne la struttura
offre
meccanismi
di
strutturazione
per
descrivere
sinteticamente il formato dei dati
I modelli dei dati
 Modalità prescelta per l’organizzazione dei dati e per
descriverne la struttura
Relazionale, gerarchica, reticolare, ad oggetti...
Il modello relazionale permette di organizzare i dati in
insiemi di record a struttura fissa (concetto di relazione)
record
Nome
Cognome
Indirizzo
Telefono
Mario
Rossi
Via Verdi 5
0577234567
Marco
Bianchi
Via Righi 73
0557456783
Anna
Dati
Via Romeo 4
0578345234
Schemi ed istanze
 Schema: parte non variabile dei dati, è il formato del
record
RUBRICA(Nome,Cognome,Indirizzo,Telefono)
 Istanza (stato): valori effettivi contenuti nella base di
dati
M a rio
R o ssi
V ia V e rd i 5
0577234567
M a rco
B ia n ch i
V ia R ig h i 7 3
0557456783
Anna
D a ti
V ia R o m e o
4
0578345234
Schemi e astrazione
utente
(applicazioni)
schema logico
schema fisico
DB
schema esterno
(vista)
descrizione, allo stesso
livello di astrazione dello
schema logico, di una
parte della base di dati
(es., la parte accessibile
ad una classe di utenti)
descrizione della base di dati
nel modello logico
(es., struttura della tabella)
rappresentazione dello schema logico
per mezzo di strutture di memorizzazione
(file)
il livello logico è indipendente da quello fisico:
una tabella è utilizzata nello stesso modo
qualunque sia la sua realizzazione fisica
(che può anche variare nel tempo)
Utenti di un DBMS
 L’amministratore della base di dati (DBA) è responsabile
della progettazione, del controllo e dell’amministrazione
della base di dati; configura il DBMS per garantirne le
prestazioni, assicura l’affidabilità del sistema, gestisce
le autorizzazioni di accesso
 I progettisti e programmatori di applicazioni realizzano
programmi che accedono alla base di dati; utilizzano gli
strumenti di sviluppo per la creazione di interfacce
verso la base di dati
 Gli utenti, in grado di utilizzare i linguaggi interattivi di
interrogazione, che effettuano transazioni (attività
frequenti e predefinite) o attività casuali
Transazioni  1
 Programmi che realizzano attività frequenti
predefinite, con poche eccezioni, previste a priori
 Esempi:
e
versamento presso uno sportello bancario
emissione di un certificato anagrafico
prenotazione aerea
 Il termine transazione ha un’altra accezione, più
specifica: una transazione è un insieme di operazioni
sulla base di dati che devono essere considerate in
modo indivisibile (o atomico); ovvero, o tutte le
operazioni dell’insieme sono eseguite correttamente
oppure nessuna
Transazioni  2
 L’effetto di una transazione deve essere corretto,
anche in presenza di transazioni concorrenti eseguite
nello stesso intervallo di tempo
 Gli
effetti
di
una
transazione
conclusasi
positivamente devono essere definitivi, ovvero devono
essere garantiti anche in presenza di guasti e di
esecuzione concorrente
 Devono costituire una transazione...
...le operazioni di addebitamento dell’importo prelevato da un
Bancomat e l’erogazione del denaro
...lo spostamento di fondi fra due conti (le operazioni di
accreditamento su un conto e addebitamento su un altro)
Vantaggi e svantaggi dei DBMS
Vantaggi
 dati come risorsa comune a disposizione di tutta l’organizzazione
 gestione centralizzata con possibilità di standardizzazione
 disponibilità di servizi integrati
 riduzione di ridondanze e inconsistenze grazie alla condivisione
 indipendenza dei dati (favorisce lo sviluppo e la manutenzione
delle applicazioni)
Svantaggi
 costo dei prodotti e della transizione verso di essi (strutture,
hardware/software, personale)
 non scorporabilità di eventuali servizi non utili (con riduzione di
efficienza)
Il modello relazionale
Codd, 1970
 Adottato dalla maggior parte dei DBMS in commercio
 Definisce come sono organizzati i dati e non come sono
memorizzati e gestiti dal sistema informatico
Relazione – Tabella
Il concetto di relazione proviene dalla matematica, mentre
quello di tabella è intuitivo
Il modello relazionale permette di trattare i dati ad un livello logico
senza preoccuparsi del livello fisico, ovvero di come i dati sono
effettivamente elaborati e memorizzati: per accedere ai dati non è
necessario conoscere le strutture fisiche con cui sono realizzati!
Prodotto cartesiano  1
 Consideriamo l’insieme dei nomi e dei numeri di telefono
dei dipendenti di un’azienda:
Mario Rossi
Luca Verdi
Anna Bianchi
2345
2367
2378
2356
D1
D2
 Il prodotto cartesiano D1 D2 è l’insieme di tutte le
coppie ordinate (NOME,TELEFONO)
Prodotto cartesiano  2
M a rio R o ssi
2345
M a rio R o ssi
2367
M a rio R o ssi
2378
M a rio R o ssi
2356
L u c a V e rd i
2345
L u c a V e rd i
2367
L u c a V e rd i
2378
L u c a V e rd i
2356
A n n a B ia n c h i
2345
A n n a B ia n c h i
2367
A n n a B ia n c h i
2378
A n n a B ia n c h i
2356
 Il prodotto cartesiano contiene tutte le possibili
associazioni fra gli elementi degli insiemi
 La rubrica dei numeri telefonici contiene solo alcune
possibili coppie
Relazioni
 Una relazione matematica sugli insiemi D1 e D2 (domini)
è un sottoinsieme del prodotto cartesiano D1  D2.
La rubrica contiene solo le coppie (NOME,TELEFONO) che esistono
Mario Rossi
Luca Verdi
Luca Verdi
Anna Bianchi
2345
2367
2378
2356
Un esempio
D1 = Squadre di Serie A
D2 = Squadre di Serie A
D3 = Numero
D4 = Numero
Relazione
Risultati delle partite della 29° giornata del campionato 2003/04
Ancona
Brescia
Juventus
Milan
Parma
Perugia
Reggina
Roma
Siena
Bologna
Modena
Lazio
Empoli
Lecce
Inter
Udinese
Chievo
Sampdoria
3
0
1
1
3
2
0
3
0
2
0
0
0
1
3
1
1
0
Relazioni con attributi
 Ogni nupla della relazione stabilisce un legame fra i dati
 Il significato dei valori dipende dall’ordine con cui sono
elencati nella nupla
Brescia
Modena
0
0
SquadraDiCasa SquadraOspite RetiCasa RetiOspitata
 Un nome può essere associato a ciascuna componente
della nupla
 I nomi associati ai domini si dicono attributi e
descrivono il ruolo che il dominio ha nella relazione
Record e campi
 Ciascuna nupla della relazione può essere vista come
un record
 Gli attributi definiscono la struttura del record ovvero
i suoi campi
 Si può accedere al valore di un attributo di un record
usando il nome del campo
tuple
SquadraDiCasa
Ancona
Brescia
Juventus
SquadraOspitata
Bologna
Modena
Lazio
RetiCasa
3
0
1
RetiOspitata
2
0
0
Si usa il termine tupla per indicare una riga di n valori
corrispondenti ad attributi (l’ordine non è significativo)
Tuple
 Data una tupla si possono estrarre i valori degli
attributi
SquadraDiCasa
SquadraOspitata RetiCasa
RetiOspitata
Bescia
Modena
0
0
t[SquadraOspitata] = Modena
t[SquadraDiCasa] = Brescia
 Si possono estrarre anche insiemi di attributi,
ottenendo tuple
t[SquadraDiCasa,SquadraOspitata]=
SquadraDiCasa
Brescia
SquadraOspitata
Modena
Tuple e relazioni
 Una relazione su X è un insieme di tuple su X (X è un
insieme di attributi)
 Si usa la definizione di tupla al posto di n–upla:
In una n–upla gli elementi sono individuati per posizione
In una tupla gli elementi sono individuati per attributi
serie A
relazione
SquadraDiCasa
Ancona
Brescia
Juventus
serie A
SquadraOspitata
Bologna
Modena
Lazio
N
RetiCasa
3
0
1
attributi
N
RetiOspitata
2
0
0
domini
tuple
Relazioni e basi di dati
 Una base di dati è in genere costituita da più relazioni
 Si possono creare corrispondenze fra le tuple di
relazioni distinte
 Le corrispondenze si ottengono fra tuple di relazioni
diverse aventi gli stessi valori su un insieme assegnato
di attributi
Corrispondenze fra relazioni
Matricola
A80198760
A80293450
A80198330
A80295640
A80197456
Cognome
Bianchi
Rossi
Neri
Felici
Melli
Nome
Anna
Andrea
Luca
Lorenzo
Mara
S tu d en te
V o to
C o rso
A 8 0 19 876 0
28
01
A 8 0 29 345 0
30
04
A 8 0 19 833 0
27
01
A 8 0 19 833 0
25
03
A 8 0 19 745 6
21
05
Data di nascita
22/03/1977
13/04/1978
04/08/1980
25/02/1979
17/10/1976
STUDENTI
ESAMI
C o d ice
T itolo
D o cen te
01
A n alisi I
A n n a V erd i
03
G eom etria
A n d rea P itagora
04
Fisica I
Lu ca G alileo
05
C him ica
L oren zo A rg en ti
CORSI
Schemi per basi di dati
 Uno schema di relazione R(X) è costituito dal nome della
relazione e da un insieme di attributi, X={A1, A2,…, An}
STUDENTI(Matricola,Cognome,Nome,Data di Nascita)
 Uno schema di base di dati è un insieme di schemi di
relazioni con nomi diversi:
R={R1(X1), R2(X2),…, Rm(Xm)}
R = { STUDENTI(Matricola,Cognome,Nome,Data di Nascita),
ESAMI(Studente,Voto,Corso),
CORSI(Codice,Titolo,Docente) }
Esempio: archivio forniture
Codice
A0001
A0004
P0010
P0230
Descrizione
Chiodi 35mm
Viti 12mm
Pinza
Cacciavite
Magazzino
234000
102400
200
600
Costo
0.15
0.25
7
3.50
A rtico lo
Q u a n tita
D a ta
C lien te
A 0 0 01
3 000
2 5/06/200 0
0 034
A 0 0 04
5 00
2 5/06/200 0
0 034
P 0 010
3
1 2/07/200 0
0 001
P 0 230
2
1 3/07/200 0
0 101
A 0 0 04
1 00
1 5/07/200 0
0 034
Codice
0001
0034
0101
0076
PRODOTTI
FORNITURE
Nome
Carlo Berti
BCD Spa
A&G Srl
Luca Nelli
Indirizzo
Via Roma 6
Via Verdi 4
Viale Morgagni 16
Piazza Bixio 5
CLIENTI
P. IVA
02332002
04554303
10920393
08832822
Informazione incompleta
 Può accadere che il valore di un attributo non sia
disponibile per tutte le tuple
 Si introduce un valore nullo (NULL) che denota l’assenza
di informazione sul valore di un attributo per una data
tupla
 Il valore di un attributo può essere sconosciuto,
inesistente o privo di informazione (non si sa se esiste)
inesistente
Codice
0001
0034
0101
Nome
Carlo Berti
BCD Spa
A&G Srl
Indirizzo
Via Roma 6
Via Verdi 4
Viale Morgagni 16
P. IVA
NULL
04554303
NULL
sconosciuto
Vincoli di integrità
 Occorre che le tuple rappresentino informazioni
corrette per l’applicazione:
Ex: Valori nulli
Non ammesso!
Matricola
NULL
A80293450
A80197456
Cognome
Bianchi
Rossi
Melli
Nome
Anna
Andrea
Mara
Data di nascita
22/03/1977
13/04/1978
NULL
STUDENTI
Può essere accettabile
Alcuni campi non possono assumere valori nulli!
In generale, occorre che i valori assegnati agli attributi
in ciascuna tupla soddisfino una serie di vincoli
Vincoli intrarelazionali
 Sono vincoli che coinvolgono il valore degli attributi
all’interno di una stessa relazione:
Non ci possono
essere due studenti
con matricola uguale!
S tu d en te
V o to
A 8 0 19 876 0
37
A 8 0 29 345 0
30
A 8 0 19 833 0
22
A 8 0 19 833 0
25
Matricola
A80198760
A80293450
A80198760
A80197456
L o de
C o rso
01
L
04
Valore non ammesso
01
L
Combinazione non ammessa
03
Cognome
Bianchi
Rossi
Felici
Melli
Nome
Anna
Andrea
Lorenzo
Mara
Data di nascita
22/03/1977
13/04/1978
25/02/1979
17/10/1976
Vincoli interrelazionali
 Sono vincoli che coinvolgono più relazioni
 Garantiscono l’integrità dei riferimenti fra tabelle
S tu d en te
V o to
C o rso
A 8 0 19 876 0
28
01
A 8 0 29 345 0
30
04
A 8 0 19 833 0
27
01
A 8 0 19 833 0
25
03
A 8 0 19 745 6
21
05
ESAMI
?
C o d ice
T itolo
D o cen te
01
A n alisi I
A n n a V erd i
03
G eom etria
A n d rea P itagora
04
Fisica I
Lu ca G alileo
CORSI
Vincoli di tupla
 Esprimono condizioni sui valori degli attributi di ciascuna
tupla indipendentemente dalle altre (intrarelazionali)
 Sono espressi con predicati che devono essere veri per
tutte le tuple
(Voto18) AND (Voto30)
NOT((Lode=‘L’) AND (Voto30))
 Possono anche essere definiti da espressioni
aritmetiche che legano fra loro i valori degli attributi
PAGAMENTI(Data,Importo,Ritenute,Netto)
Netto = Importo – Ritenute
Chiavi
 I vincoli di chiave sono fondamentali per il modello
relazionale
 Una chiave è un insieme di attributi utilizzato per
identificare univocamente le tuple di una relazione
Matricola
A80198760
A80293450
A80198777
A80197456
Cognome
Bianchi
Rossi
Felici
Melli
Nome
Anna
Andrea
Lorenzo
Mara
Data di nascita
22/03/1977
13/04/1978
25/02/1979
17/10/1976
Matricola
Nome, Cognome, Data di Nascita, Luogo di Nascita
NO
Luogo di Nascita
Siena
Poggibonsi
Montepulciano
Siena
Corso
Lettere
Fisica
Ingegneria
Lettere
SI
Nome, Cognome, Corso
Nome, Cognome, Data di Nascita
Superchiavi e chiavi
 Un insieme K di attributi è una superchiave per una
relazione R se R non contiene due tuple distinte t1 e t2
con t1[K]=t2[K]
 Un insieme di attributi K è una chiave per una relazione
R se è una superchiave minimale (cioè non esiste una
altra superchiave K’ che è contenuta in K)
CHIAVI (Superchiavi Minimali)
{Matricola}
{Nome, Cognome, Data di Nascita, Luogo di Nascita}
SUPERCHIAVI
{Matricola, Nome}
{Nome, Cognome, Data di Nascita, Luogo di Nascita, Corso}
{Matricola, Corso}
Scelta delle chiavi
 La scelta della chiave deve tenere conto delle
proprietà del mondo reale da cui provengono i dati
STUDENTI(Matricola,Cognome,Nome,Data di Nascita,Luogo di Nascita,Corso)
{Cognome,Nome,Corso}
può essere una chiave nel caso che in un dato ateneo (e quindi nella base di
dati) non ci siano due studenti con ugual Nome e Cognome iscritti allo stesso
corso… ma niente vieta che possa accadere in futuro!
Può essere aggiunto un campo ad hoc (ad esempio la
matricola) da usare come chiave
I campi corrispondenti alla chiave primaria non possono
assumere valori nulli
Integrità referenziale
 Le corrispondenze fra i dati in relazioni diverse si
stabiliscono per mezzo dei valori di chiavi delle tuple
Matricola: chiave primaria per AGENTI
chiave esterna per INFRAZIONI
Codice
174655
156732
456345
Data
25-12-2002
13-05-2003
17-08-2002
Agente
672
223
672
Art
44
12
44
AUTO
Prov, Numero: chiave primaria per AUTO
chiave esterna per INFRAZIONI
M atricola
C ognom e
N om e
672
R ossi
M ario
223
V erdi
Francesco
532
B elli
C arlo
Prov
FI
SI
GR
Prov
FI
SI
GR
Numero
M363521
BC637ZY
ZA731CD
Numero
M363521
BC637ZY
ZA731CD
AGENTI
INFRAZIONI
Proprietario
Gilli Luca
Tilli Nedo
Billi Aldo
Indirizzo
Via Oro
Via Abete
Via Sole
Vincoli di integrità referenziale
 Un vincolo di integrità referenziale (foreign key, chiave
esterna) fra un insieme di attributi X di una relazione R1
e una relazione R2 è soddisfatto se i valori su X di
ciascuna tupla in R1 compaiono come valori della chiave
(primaria) dell’istanza di R2
Codice
174655
156732
456345
Data
25-12-2002
13-05-2003
17-08-2002
Agente
672
223
345
Art
44
12
44
Prov
FI
SI
GR
?
Numero
M363521
BC637ZY
ZA731CD
INFRAZIONI
M a trico la
C o g no m e
Nome
6 72
R ossi
M ario
2 23
V erd i
Fran cesco
5 32
B elli
C arlo
AGENTI
Occorre definire un vincolo di integrità referenziale fra l’attributo Agente della
relazione INFRAZIONI e la relazione AGENTI (chiave primaria Matricola).
Un esempio
T arga
P ro prieta rio
In d irizzo
B E 370 T Z
Fab io R ossi
V ia A b ete 13 S iena
F IG 0 4 5 46
G iovan n i N eri
V ia M oro 7 Firen ze
AB 234TV
M ich ele B essi
V ia Sila 4 T ern i
TV 443AZ
M aria B ianchi
V ia B elli 4 R om a
AUTOVEICOLI
INCIDENTI
1)
2)
C o dice
T arga1
T arga2
L uog o
D a nni
5 434
B E 370 TZ
A B 2 3 4 TV
Sien a
Fari
5 534
FIG 0 4 5 46
TV 4 4 3 A Z
M onteron i
Parau rti
vincolo di integrità referenziale fra l’attributo Targa1 della relazione
INCIDENTI e la relazione AUTOVEICOLI
vincolo di integrità referenziale fra l’attributo Targa2 della relazione
INCIDENTI e la relazione AUTOVEICOLI
Algebra relazionale
 È basata su un insieme di operatori definiti su relazioni
e che producono relazioni
 Si possono combinare gli operatori di base per ottenere
interrogazioni complesse
 operatori insiemistici (unione, intersezione, differenza)
 ridenominazione, selezione, proiezione
 join (join naturale, prodotto cartesiano, theta–join)
Operatori insiemistici  1
 Hanno senso solo se si applicano a relazioni con lo stesso
schema (con gli stessi attributi)
 L’unione di due relazioni R1(X) e R2(X) è la relazione R(X)= R1(X) U R2(X)
che contiene le tuple che appartengono ad R1 oppure ad R2, oppure ad
entrambe
M a tricola
A80010012
A80010200
A80010111
N om e
M ario
G ia n n i
Fab io
C og n o m e
R o ssi
Longhi
V erd i
M atricola
A 82 010007
N om e
M arco
C og n om e
B e ni
A 82 010345
A nna
B ia nc hi
Laurea 2° livello
Laurea 1° livello
M atricola
A 80 010012
A 80 010200
A 80 010111
A 82 010007
A 82 010345
N om e
M ario
G ia nni
Fab io
M arco
A nna
C og n om e
R ossi
L o nghi
V erd i
B e ni
B ia nc hi
STUDENTI
Operatori insiemistici  2
 L’intersezione 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 differenza 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 a R1(X) ma non a R2(X)
U
M a tricola
N om e
C og n o m e
3456575
3432334
3223343
M ario
G ia n n i
Fab io
R o ssi
Longhi
V erd i
M atricola
N om e
C og n om e
3456576
3223342
3432334
A nna
Isa
G ia nni
V erd i
B e lli
L o nghi
3222122
Fab io
Fe ltri
SPECIALIZZATI
LAUREATI
M atricola
N om e
C og n om e
3432334
G ia nni
L o nghi
SPECIALIZZATI  LAUREATI
M atricola
N om e
C og n om e
3456575
3223343
M ario
Fab io
R ossi
V erd i
SPECIALIZZATI – LAUREATI
Ridenominazione
 Con l’operazione di ridenominazione si modifica il nome degli
attributi lasciando inalterato il contenuto delle relazioni
M atricola
C og nom e
A ge nzia
Stipe ndio
2321112
3432334
B e lli
L o nghi
M ila no
R o ma
55
45
M atricola
4434556
4568797
C og nom e
Sord i
B ianchi
F abbrica
M onza
V iterbo
IMPIEGATI
Salario
35
33
OPERAI
M atricola
C og n om e
S ed e
R etrib u zion e
M atricola
C og nom e
Sede
R etrib uzione
2321112
3432334
B e lli
L o nghi
M ila no
Roma
55
45
4434556
4568797
Sord i
B ia nc hi
M onza
V iterbo
35
33
Sede,RetribuzioneAgenzia,Stipendio(IMPIEGATI)
Sede,RetribuzioneFabbrica,Salario(OPERAI)
M atricola
C og nom e
Sede
R etrib uzione
2321112
3432334
4434556
B e lli
Lo nghi
Sord i
M ila no
R o ma
M onza
55
45
35
4568797
B ia nc hi
V iterbo
33
Sede,RetribuzioneAgenzia,Stipendio(IMPIEGATI) Sede,RetribuzioneFabbrica,Salario(OPERAI)
Selezione
 L’operatore di selezione cond (R) produce una relazione
che contiene le tuple della relazione R che soddisfano la
condizione cond.
 Le condizioni di selezione possono prevedere confronti
fra attributi e fra attributi e costanti e possono essere
costruite combinando condizioni più semplici con i
connettivi logici  (or),  (and) e  (not)
IMPIEGATI(Cognome,Nome,Età,Stipendio)
Età<30 AND Stipendio>2.000(IMPIEGATI)
Vengono selezionati i record relativi ad impiegati con età minore di 30
anni e stipendio superiore a 2000€
Esempi di selezione
Cognome
Rossi
Verdi
Billi
Luti
Nome
Alberto
Luca
Paolo
Anna
Età
25
40
28
29
Stipendio
1.000
2.200
2.100
2.500
Cognome Nome
Billi
Paolo
Luti
Anna
Età
28
29
Stipendio
2.100
2.500
Età<30 AND Stipendio>2.000(IMPIEGATI)
IMPIEGATI
C o g no m e N o m e
R ossi
A lb erto
C ittà d i
n a scita
Firen ze
V erd i
Lu ca
S ien a
P isa
B illi
P aolo
P isa
Lu cca
Lu ti
Anna
P rato
P rato
CITTADINI
R esid enza
C o g no m e N o m e
Firen ze
R ossi
Lu ti
R esid enza
A lb erto
C ittà d i
n a scita
Firen ze
Anna
P rato
P rato
Firen ze
Città di Nascita=Residenza(CITTADINI)
Proiezione
 Dati una relazione R(X) e un sottoinsieme Y degli
attributi in X, la proiezione di R su Y, Y(R), è l’insieme
delle tuple su Y ottenute dalle tuple di R considerando
solo i valori su Y
C o g no m e N o m e
Cognome
Rossi
Verdi
Billi
Luti
Nome
Alberto
Luca
Paolo
Anna
DOCENTI
Cat
Ric
PA
PA
PO
Stipendio
1.000
1.750
1.750
2.500
R ossi
V erd i
B illi
Lu ti
A lb erto
Lu ca
P aolo
Anna
Cat
Ric
PA
PO
Stipendio
1.000
1.750
2.500
Cognome,Nome(DOCENTI)
Cat,Stipendio(DOCENTI)
Join
 È l’operatore che permette di correlare dati contenuti in
relazioni diverse confrontando i valori contenuti in esse
 join naturale è un operatore che correla dati in relazioni diverse sulla base di
valori uguali in attributi con lo stesso nome; il risultato è una relazione che ha per
attributi l’unione degli attributi delle relazioni di partenza e le tuple ottenute
combinando quelle delle relazioni con valori uguali sugli attributi comuni
Impiegato
Rossi
Verdi
Billi
Reparto
Vendite
Produzione
Produzione
R epa rto
C a po
Prod u zion e
M ori
V en d ite
B run i
IMPIEGATI
IMPIEGATI
CAPOREPARTO
CAPOREPARTO
Impiegato
Rossi
Verdi
Billi
Reparto
Vendite
Produzione
Produzione
Capo
Bruni
Mori
Mori
Join con tuple pendenti
Im p ie g a to
R ossi
N eri
B ian ch i
R e p a rto
ven d ite
p rod u zion e
p rod u zion e
R e p a rto
Capo
p rod u zion e
M ori
acq u isti
B ru n i
CAPOREPARTO
DIPENDENTI
Impiegato
Neri
Bianchi
Reparto
produzione
produzione
Capo
Mori
Mori
CAPOREPARTO
DIPENDENTI
La prima tupla della relazione DIPENDENTI e la seconda della relazione
CAPOREPARTO non generano nessuna tupla nel join
Un esempio di join
Im p ie g a to
P ro g e tto
P ro g e tto
Capo
R ossi
A
A
M o ri
N eri
A
A
B ru n i
B ian ch i
A
COORDINATORI
RICERCATORI
I m p ie g a t o
P ro g e tto
Capo
R ossi
A
M o ri
R ossi
A
B ru n i
N e ri
A
M o ri
N e ri
A
B ru n i
B ia n c h i
A
M o ri
B ia n c h i
A
B ru n i
RICERCATORI
COORDINATORI
Ciascuna tupla della prima relazione è combinabile con tutte le tuple
dell’altra; il risultato contiene un numero di tuple pari al prodotto dei
numeri di tuple nelle due relazioni originarie
Infrazioni e auto
C o d ic e
D a ta
A g e n te
A rt
P ro v
N u m e ro
343535
1 2 /0 5 /9 9
567
44
FI
B04546
343344
1 4 /0 5 /9 9
456
22
SI
345678
342233
2 2 /0 6 /9 9
456
44
FI
B04546
332112
2 7 /0 7 /9 9
456
53
PI
768930
334545
0 7 /0 8 /9 9
567
44
GR
546788
AUTOVEICOLI
INFRAZIONI
P ro v
N u m e ro
P ro p rie ta rio
In d iriz z o
FI
B04546
P a o lo R o ssi
V ia B ixio 5 P ra to
SI
345678
P ie ro B e rti
V ia A b e te 6 S ie n a
PI
768930
Lu ca B ia n ch i
P ia zza P o 1 6 P isa
GR
546788
A n n a V e rd i
V ia le E u ro p a 4 F ire n ze
C o d ic e
D a ta
A g e n te
A rt
P ro v
N u m e ro
P ro p rie ta rio
In d iriz z o
343535
1 2 /0 5 /9 9
567
44
FI
B04546
P a o lo R o ssi
V ia B ix io 5 P ra to
343344
1 4 /0 5 /9 9
456
22
SI
345678
P ie ro B e rti
V ia A b e te 6 S ie n a
342233
2 2 /0 6 /9 9
456
44
FI
B04546
P a o lo R o ssi
V ia B ix io 5 P ra to
332112
2 7 /0 7 /9 9
456
53
PI
768930
L u c a B ia n c h i
P ia z z a P o 1 6 P isa
334545
0 7 /0 8 /9 9
567
44
GR
546788
A n n a V e rd i
V ia le E u ro p a 4 F ire n z e
INFRAZIONI
AUTOVEICOLI
Theta–join
 È un operatore derivato: corrisponde alla generazione di
tutte le possibili combinazioni fra le tuple delle due
relazioni seguita da una selezione basata su una
condizione F
R1
Selezione delle tuple che
soddisfano F
F
R2 = F( R1
R2)
Tutte le possibili combinazioni
delle tuple
 È importante dal punto di vista pratico perché è molto
utilizzato nei sistemi di basi di dati esistenti
Un esempio di theta–join
Im p ie g a to
P ro g e tto
C o d ic e
N om e
R o ssi
A
A
V e n e re
N e ri
A
B
M a rte
N e ri
B
PROGETTI
RICERCATORI
RICERCATORI
PROGETTI
Im p ie g a to
P ro g e tto
C o d ice
N om e
R ossi
A
A
V en ere
N eri
N eri
R ossi
N eri
N eri
A
B
A
A
B
A
A
B
B
B
V en ere
V en ere
M arte
M arte
M arte
Im p ie g a to
P ro g e tto
C o d ic e
N om e
R o ssi
A
A
V e n e re
N e ri
N e ri
A
B
A
B
V e n e re
M a rte
RICERCATORI
Progetto=Codice
PROGETTI
Interrogazioni in algebra relazionale  1
 Un’interrogazione, o query, a una base di dati produce
una serie di record che soddisfano i criteri richiesti
 È una funzione che, applicata ad un’istanza di base di
dati, produce una relazione, ovvero dei dati organizzati
come tuple di una relazione
 Le interrogazioni si possono rappresentare con gli
operatori dell’algebra relazionale che forniscono una
procedura per calcolarne il risultato
Interrogazioni in algebra relazionale  2
 Con le query è possibile recuperare i dati dalle tabelle
e organizzarli in modo diverso
 Le query permettono di utilizzare le tabelle in modo
dinamico…
…mettendo in relazione le informazioni
…filtrando i dati di interesse
…effettuando ricerche incrociate sui record che rispondono
a determinati criteri
Un esempio di interrogazione
M a trico la
N om e
E tà
S tip e n d io
1 01
1 03
M arco R ossi
P aolo B ian ch i
23
34
1 .50 0
2 .38 0
1 05
A n n a F alch i
33
1 .70 0
1 10
G aia B elli
36
2 .50 0
1 34
Lu ca F orti
27
2 .50 0
1 45
S on ia M elli
23
1 .50 0
1 49
M ario M ori
33
1 .80 0
1 53
B ru n o B ru n i
35
1 .50 0
1 55
F ilip p o M ei
30
2 .50 0
Capo
Im p ie g a to
1 03
1 01
1 03
1 05
1 03
1 45
1 10
1 03
1 10
1 49
1 34
1 53
SUPERVISIONE
IMPIEGATI
Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 1.700€
I passi dell’interrogazione: 1
 Si selezionano gli impiegati che guadagnano più di 1.700€
Stipendio>1.700(IMPIEGATI)
M a tric o la
N om e
E tà
S tip e n d io
103
P a o lo B ia n c h i
34
2 .3 8 0
110
G a ia B e lli
36
2 .5 0 0
134
L u c a F o rti
27
2 .5 0 0
149
M a rio M o ri
33
1 .8 0 0
155
F ilip p o M e i
30
2 .5 0 0
 Si associano gli impiegati trovati con i rispettivi capi
Stipendio>1.700(IMPIEGATI)
Impiegato=Matricola
SUPERVISIONE
M a tric o la
N om e
E tà
S tip e n d io
Capo
I m p ie g a to
103
P a o lo B ia n c h i
34
2 .3 8 0
110
103
149
M a rio M o ri
33
1 .8 0 0
110
149
I passi dell’interrogazione: 2
 Si estrae la matricola dei capi
Capo( Stipendio>1.700(IMPIEGATI)
Impiegato=Matricola
SUPERVISIONE)
Capo
110
 Si associa la matricola con la relazione IMPIEGATI
per ottenere le informazioni sui capi e poi si proietta
sugli attributi richiesti (Nome, Stipendio)
Nome,Stipendio (IMPIEGATI
Matricola=Capo
Capo( Stipendio>1.700(IMPIEGATI)
(
Impiegato=Matricola
N om e
S t ip e n d io
G a ia B e lli
2 .5 0 0
SUPERVISIONE)))
Esempio: Azienda
Un DBMS, a differenza di un semplice gestore di file, lavora a
livello dei singoli campi nei singoli record del file, ovvero agisce a
livello dei singoli attributi sulle tuple della tabella relazionale
Sia data la tabella IMPIEGATO:
ID
Nome
Età Stipendio_orario Ore
Stipendio
86
Giulia Invernizzi
51
16.60 €
94
1560.40 €
123
Francesca Perrera
18
8.50 €
185
1572.50 €
149
Franco Toccasana
43
12.35 €
250
3087.50 €
71
Gianni Calvini
53
17.80 €
245
4361.00 €
165
Bruno Ferri
17
6.70 €
53
355.10 €
Esempio: Azienda
 Un DBMS può eseguire la seguente interrogazione:
select id, nome, età, stipendio_orario, ore, stipendio
from impiegato
where id = 123;
che recupera tutte le informazioni relative all’impiegato con ID
uguale a 123; ID è la chiave primaria
 Per localizzare invece tutte le informazioni riguardanti un
impiegato con un dato nome…
select id, nome, età, stipendio_orario, ore, stipendio
from impiegato
where nome = ‘Gianni Calvini’;
L’attributo Nome può non identificare la tupla univocamente; se nella tabella
esistono più impiegati con lo stesso nome, vengono estratti tutti gli elementi
rilevanti
Esempio: Azienda
 Se l’interrogazione presuppone l’estrazione solo di alcuni
attributi, può essere formulata come…
select nome,
id, nome,
stipendio
stipendio
from impiegato
where nome = ‘Gianni Calvini’;
calvini’;
che estra solo il nome e lo stipendio dell’impiegato/i con il nome
specificato
I linguaggi di interrogazione
 I DBMS richiedono l’uso di linguaggi di interrogazione specialistici, che
permettono all’utente o ad altri programmi applicativi di interrogare la
base di dati per recuperare informazioni
 Gli esempi visti sono scritti in SQL — Structured Query Language
 Gestire una tabella relazionale non significa solo effettuare
interrogazioni
 Si deve essere in grado di aggiungere nuove tuple, cancellarle da una
tabella o modificare informazioni in una tupla esistente
 SQL realizza questi compiti per mezzo dei comandi insert, delete e
update
 Soprattutto per le basi di dati sul Web, sono spesso disponibili
maschere user–friendly (capaci anche di verificare la correttezza
dell’informazione immessa) atte a nascondere i dettagli della
interrogazione
I linguaggi di interrogazione
 Esempio 1
select *
from impiegato
ordered by id;
specifica che occorre considerare tutti i valori degli attributi
per tutte le tuple nella tabella IMPIEGATO, ordinata per ID
 Esempio 2
select *
from impiegato
where età > 21;
seleziona tutte le tuple degli impiegati con età superiore a 21 anni
Esempio: Azienda
 Sia data la tabella ASSICURAZIONE:
ID
TipoDiPiano
DataDiEmissione
86
A4
02/23/78
123
B2
12/03/91
149
A1
06/11/85
71
A4
10/01/72
149
B2
04/23/90
Poiché ID è solo una parte
della chiave primaria per
ASSICURAZIONE, un dato
impiegato potrebbe avere
più di un piano assicurativo
(es., 149), o nessuno
con chiave primaria composta, costituita dagli attributi
(ID,TipoDiPiano); l’attributo ID è una chiave esterna della tabella
IMPIEGATO: stabilisce la relazione che gli impiegati possono
avere piani assicurativi
Esempio: Azienda
 Il DBMS può mettere in relazione informazioni tra varie tabelle
attraverso i valori della chiave, ad es. tra la chiave esterna ID nella
tabella ASSICURAZIONE e la chiave primaria ID nella tabella
IMPIEGATO
select impiegato.nome, assicurazione.tipodipiano
from impiegato, assicurazione
where impiegato.nome = ‘Franco Toccasana’ and
impiegato.id = assicurazione.id;
descrive il piano assicurativo di Franco Toccasana, il cui risultato
sarà:
Franco Toccasana A1
Franco Toccasana B2
Note
 La corrispondenza tra chiavi primarie e chiavi esterne è ciò che
crea le associazioni tra le varie entità in una base di dati
 Il comando SQL per creare una tabella richiede le specifiche
dei vari attributi, ovvero nome e tipo di dato, l’identificazione
della chiave primaria, l’identificazione di ogni chiave esterna con
indicazione esplicita delle tabelle per le quali costituisce chiave
primaria
 Questa informazione è pertinente per la costruzione del file che
memorizza i dati delle tuple
Esempio: Azienda
IMPIEGATO
POLIZZA
PK
ID
TipoDiPiano
Nome
Descrizione
Età
CostoMensile
PK
Stipendio_orario
Ore
usata da
Stipendio
ha
ASSICURAZIONE
PK
PK: Primary Key
FK: Foreign Key
ID (FK)
TipoDiPiano (FK)
DataDiEmissione
Esempio: si possono
effettuare interrogazioni per trovare il costo
mensile dell’assicurazione di Franco Toccasana
Le basi di dati distribuite
 Le basi di dati distribuite permettono ai dati di risiedere in varie
locazioni collegate in rete
 L’utente del sito A pone alla base di dati un’interrogazione che
richiede l’accesso a dati che possono essere fisicamente
memorizzati nel sito B
 Il sistema di gestione della base di dati e la rete sottostante
realizzano i collegamenti e le associazioni necessarie: l’utente non
dovrebbe percepire di lavorare in remoto; tuttavia…
 … il tempo aumenta per accessi in rete
 … un guasto della rete o di qualche nodo possono rendere i dati non
disponibili agli altri siti
 … la sicurezza delle informazioni e la protezione da accessi
indesiderati sono fondamentali ed hanno pesanti implicazioni sociali,
etiche e legali
I sistemi ipermediali
 Un sistema ipermediale è una particolare forma di gestore di
basi di dati
 I dati, in un sistema ipermediale, sono raccolti in una varietà di
forme: informazione sonora e visuale, immagini fotografiche,
grafica, testo
 Un’applicazione ipermediale permette all’utente di navigare fra
le varie fonti di informazione, in modo non strutturato
 I “collegamenti” utilizzati fra le fonti di informazione sono simili
ai collegamenti tra tabelle relazionali in una base di dati