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
Mario
Marco
Anna
Rossi
Bianchi
Dati
Via Verdi 5 0577234567
Via Righi 73 0557456783
Via Romeo 0578345234
4
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
Mario Rossi
Mario Rossi
Mario Rossi
Mario Rossi
Luca Verdi
Luca Verdi
Luca Verdi
Luca Verdi
Anna Bianchi
Anna Bianchi
Anna Bianchi
Anna Bianchi
2345
2367
2378
2356
2345
2367
2378
2356
2345
2367
2378
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
Studente
A80198760
A80293450
A80198330
A80198330
A80197456
Voto
28
30
27
25
21
Nome
Anna
Andrea
Luca
Lorenzo
Mara
Corso
01
04
01
03
05
Data di nascita
22/03/1977
13/04/1978
04/08/1980
25/02/1979
17/10/1976
STUDENTI
ESAMI
Codice
01
03
04
05
Titolo
Analisi I
Geometria
Fisica I
Chimica
Docente
Anna Verdi
Andrea Pitagora
Luca Galileo
Lorenzo Argenti
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
Articolo
A0001
A0004
P0010
P0230
A0004
Quantita
3000
500
3
2
100
Magazzino
234000
102400
200
600
Data
25/06/2000
25/06/2000
12/07/2000
13/07/2000
15/07/2000
Codice
0001
0034
0101
0076
Costo
0.15
0.25
7
3.50
Cliente
0034
0034
0001
0101
0034
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:
Studente
A80198760
A80293450
A80198330
A80198330
Non ci possono
essere due studenti
con matricola uguale!
Voto
37
30
22
25
Matricola
A80198760
A80293450
A80198760
A80197456
Lode Corso
01
L
04
01
L
03
Cognome
Bianchi
Rossi
Felici
Melli
Valore non ammesso
Nome
Anna
Andrea
Lorenzo
Mara
Combinazione non ammessa
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
Studente
A80198760
A80293450
A80198330
A80198330
A80197456
Voto
28
30
27
25
21
Corso
01
04
01
03
05
ESAMI
?
Codice
01
03
04
Titolo
Analisi I
Geometria
Fisica I
Docente
Anna Verdi
Andrea Pitagora
Luca Galileo
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
672
223
532
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
Prov
FI
SI
GR
Prov
FI
SI
GR
Cognome
Rossi
Verdi
Belli
Numero
M363521
BC637ZY
ZA731CD
Numero
M363521
BC637ZY
ZA731CD
Nome
Mario
Francesco
Carlo
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
Matricola
672
223
532
INFRAZIONI
Cognome
Rossi
Verdi
Belli
Nome
Mario
Francesco
Carlo
AGENTI
Occorre definire un vincolo di integrità referenziale fra l’attributo Agente della
relazione INFRAZIONI e la relazione AGENTI (chiave primaria Matricola).
Un esempio
Targa
Proprietario
Indirizzo
BE370TZ
Fabio Rossi
Via Abete 13 Siena
FIG04546
Giovanni Neri
Via Moro 7 Firenze
AB234TV
Michele Bessi
Via Sila 4 Terni
TV443AZ
Maria Bianchi
Via Belli 4 Roma
AUTOVEICOLI
INCIDENTI
1)
2)
Codice
Targa1
Targa2
Luogo
Danni
5434
BE370TZ
AB234TV
Siena
Fari
5534
FIG04546
TV443AZ
Monteroni
Paraurti
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
Matricola
A80010012
A80010200
A80010111
Nome
Mario
Gianni
Fabio
Matricola
A82010007
A82010345
Cognome
Rossi
Longhi
Verdi
Nome
Marco
Anna
Cognome
Beni
Bianchi
Laurea 2° livello
Laurea 1° livello
Matricola
A80010012
A80010200
A80010111
A82010007
A82010345
Nome
Mario
Gianni
Fabio
Marco
Anna
Cognome
Rossi
Longhi
Verdi
Beni
Bianchi
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
Matricola
3456575
3432334
3223343
Nome
Mario
Gianni
Fabio
Cognome
Rossi
Longhi
Verdi
Matricola
Nome
Cognome
3456576
3223342
3432334
3222122
Anna
Isa
Gianni
Fabio
Verdi
Belli
Longhi
Feltri
SPECIALIZZATI
Matricola
3432334
Nome
Gianni
LAUREATI
Cognome
Longhi
SPECIALIZZATI  LAUREATI
Matricola
3456575
3223343
Nome
Mario
Fabio
Cognome
Rossi
Verdi
SPECIALIZZATI – LAUREATI
Ridenominazione
 Con l’operazione di ridenominazione si modifica il nome degli
attributi lasciando inalterato il contenuto delle relazioni
Matricola
2321112
3432334
Cognome
Belli
Longhi
Agenzia
Milano
Roma
Stipendio
55
45
Matricola
4434556
4568797
Cognome Fabbrica
Sordi
Monza
Bianchi
Viterbo
IMPIEGATI
Matricola
2321112
3432334
Cognome
Belli
Longhi
Salario
35
33
OPERAI
Sede
Milano
Roma
Retribuzione
55
45
Sede,RetribuzioneAgenzia,Stipendio(IMPIEGATI)
Matricola
4434556
4568797
Cognome Sede
Sordi
Monza
Bianchi
Viterbo
Retribuzione
35
33
Sede,RetribuzioneFabbrica,Salario(OPERAI)
Matricola
Cognome Sede
Retribuzione
2321112
3432334
4434556
4568797
Belli
Longhi
Sordi
Bianchi
55
45
35
33
Milano
Roma
Monza
Viterbo
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
Cognome Nome
Città di
nascita
Alberto Firenze
Luca
Siena
Paolo
Pisa
Anna
Prato
Residenza
Cognome Nome
Residenza
Rossi
Verdi
Billi
Luti
Firenze
Pisa
Lucca
Prato
Rossi
Luti
Firenze
Prato
CITTADINI
Città di
nascita
Alberto Firenze
Anna
Prato
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
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
Cognome
Rossi
Verdi
Billi
Luti
Nome
Alberto
Luca
Paolo
Anna
Cognome,Nome(DOCENTI)
Cat
Ric
PA
PO
Stipendio
1.000
1.750
2.500
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
Reparto
Produzione
Vendite
IMPIEGATI
IMPIEGATI
CAPOREPARTO
Capo
Mori
Bruni
CAPOREPARTO
Impiegato
Rossi
Verdi
Billi
Reparto
Vendite
Produzione
Produzione
Capo
Bruni
Mori
Mori
Join con tuple pendenti
Impiegato
Rossi
Neri
Bianchi
Reparto
vendite
produzione
produzione
Reparto
produzione
acquisti
Capo
Mori
Bruni
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
Impiegato
Rossi
Neri
Bianchi
Progetto
A
A
A
Progetto
A
A
Capo
Mori
Bruni
COORDINATORI
RICERCATORI
Impiegato
Rossi
Rossi
Neri
Neri
Bianchi
Bianchi
Progetto
A
A
A
A
A
A
Capo
Mori
Bruni
Mori
Bruni
Mori
Bruni
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
Codice
343535
343344
342233
332112
334545
Data
12/05/99
14/05/99
22/06/99
27/07/99
07/08/99
Agente
567
456
456
456
567
Art
44
22
44
53
44
AUTOVEICOLI
Codice
343535
343344
342233
332112
334545
Data
12/05/99
14/05/99
22/06/99
27/07/99
07/08/99
Agente
567
456
456
456
567
Art
44
22
44
53
44
Prov
FI
SI
FI
PI
GR
Prov
FI
SI
PI
GR
Prov
FI
SI
FI
PI
GR
INFRAZIONI
Numero
B04546
345678
B04546
768930
546788
Numero
B04546
345678
768930
546788
Numero
B04546
345678
B04546
768930
546788
INFRAZIONI
Proprietario
Paolo Rossi
Piero Berti
Luca Bianchi
Anna Verdi
Proprietario
Paolo Rossi
Piero Berti
Paolo Rossi
Luca Bianchi
Anna Verdi
AUTOVEICOLI
Indirizzo
Via Bixio 5 Prato
Via Abete 6 Siena
Piazza Po 16 Pisa
Viale Europa 4 Firenze
Indirizzo
Via Bixio 5 Prato
Via Abete 6 Siena
Via Bixio 5 Prato
Piazza Po 16 Pisa
Viale Europa 4 Firenze
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
Impiegato
Rossi
Neri
Neri
Progetto
A
A
B
Codice
A
B
PROGETTI
RICERCATORI
RICERCATORI
PROGETTI
Impiegato
Rossi
Neri
Neri
Progetto
A
A
B
Impiegato
Rossi
Neri
Neri
Rossi
Neri
Neri
Codice
A
A
B
Nome
Venere
Marte
Progetto
A
A
B
A
A
B
Nome
Venere
Venere
Marte
Codice
A
A
A
B
B
B
Nome
Venere
Venere
Venere
Marte
Marte
Marte
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
Matricola
101
103
105
110
134
145
149
153
155
Nome
Marco Rossi
Paolo Bianchi
Anna Falchi
Gaia Belli
Luca Forti
Sonia Melli
Mario Mori
Bruno Bruni
Filippo Mei
Età
23
34
33
36
27
23
33
35
30
Stipendio
1.500
2.380
1.700
2.500
2.500
1.500
1.800
1.500
2.500
Capo
103
103
103
110
110
134
Impiegato
101
105
145
103
149
153
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)
Matricola
103
110
134
149
155
Nome
Paolo Bianchi
Gaia Belli
Luca Forti
Mario Mori
Filippo Mei
Età
34
36
27
33
30
Stipendio
2.380
2.500
2.500
1.800
2.500
 Si associano gli impiegati trovati con i rispettivi capi
Stipendio>1.700(IMPIEGATI)
Matricola
103
149
Nome
Paolo Bianchi
Mario Mori
Impiegato=Matricola
Età
34
33
Stipendio
2.380
1.800
SUPERVISIONE
Capo
110
110
Impiegato
103
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)
Nome
Gaia Belli
(
Impiegato=Matricola
Stipendio
2.500
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
Scarica

Nessun titolo diapositiva - Dipartimento di Ingegneria dell