UNIVAC
Il primo calcolatore concepito ed impostato come prodotto commerciale, fu realizzato da Eckert e Mauchly
(gli stessi costruttori dell’ENIAC) per l’Ufficio Centrale di Statistica degli Stati Uniti.
Sommario
L’algebra di Boole
Fu teorizzata dal matematico inglese George Boole (18101864) nel lavoro “Analisi Matematica della
Logica”, pubblicato nel 1847. Include un insieme di operazioni su variabili logiche (o variabili booleane),
che possono assumere i due soli valori true e false, indicati da 1 e 0. Le tecniche sviluppate nell’algebra
booleana possono essere applicate all’analisi ed alla progettazione dei circuiti elettronici, poiché essi sono
realizzati con dispositivi che possono assumere solo due stati.
Le basi di dati
Su insiemi di costanti e variabili logiche possono essere definite funzioni che hanno esse stesse la
caratteristica di assumere due soli valori. La definizione di una funzione booleana può essere effettuata per
mezzo di una tabella di verità, che indica il valore della funzione in corrispondenza di ogni possibile
configurazione dei valori degli argomenti. Le funzioni booleane possono essere scritte e manipolate anche
con metodi algebrici, dato un insieme di funzioni (o operazioni) elementari tramite le quali poter esprimere
ogni altra funzione.
Cenni storici e introduzione
Da sistemi informativi a sistemi informatici: le basi di
dati e i DBMS
Il modello relazionale
Vincoli
Chiavi
Algebra relazionale
1
Le basi di dati
2
Cenni storici
Gli archivi costituiscono una memoria di lavoro indispensabile
per gestire quantità ingenti di informazione, per ordinare gli
elementi significativi, 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
3
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
4
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
Tuttavia, tali formalizzazioni sono per lo più anteriori alla
realizzazione dei sistemi informatici
Nei sistemi informatici le informazioni vengono rappresentate
in modo strutturato ed essenziale (mediante i dati)
5
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
6
Basi di dati oggi...
DBMS
borsa
DBMS
orari
Sistemi informativi
Informazioni
Dati
7
Sistema informativo
Sottosistema di un’organizzazione che gestisce
acquisizione
elaborazione
conservazione
produzione (distribuzione)
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)
8
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
Nota: prima di essere automatizzati, molti sistemi
informativi si sono evoluti verso una razionalizzazione e
standardizzazione delle procedure e dell’organizzazione
delle informazioni
9
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
10
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!
11
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
0577233601
Numero di telefono di Mario Rossi
12
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
13
Base 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
14
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
……
15
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...)
 ……
16
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; necessario un
meccanismo di contollo di concorrenza
Persistenza
i dati rimangono memorizzati
Affidabilità
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
17
A cosa serve 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
……
18
A cosa serve 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, detti 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)
19
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 fisiche 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 rappresentazione per
descrivere sinteticamente il formato dei dati
20
Il modello 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
21
Schemi ed istanze
Schema: parte non variabile dei dati, è il formato del
record (nome della relazione ed attributi)
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
22
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)
23
Esempio
Corso
Docente
CdL
Materia
Anno
Basi di dati
Rossi
II
Basi di dati
5
Impianti
Neri
II
Impianti
5
Linguaggi e traduttori
Verdi
II
Linguaggi e traduttori
4
IE
Basi di dati
5
IE
Linguaggi e traduttori
5
DOCENZA
MANIFESTO
ELETTRONICA
CdL
Materia
Anno
IE
Basi di dati
5
IE
Linguaggi e traduttori
5
Una “vista” relazionale
24
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, effettuano transazioni (attività frequenti
e predefinite) o attività casuali
25
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
26
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
Costituiscono 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)
27
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)
28
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 a 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 (file) con cui sono
realizzati!
29
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)
30
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
31
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
32
Un esempio
D1 = Squadre di Serie A
D2 = Squadre di Serie A
D3 = Numero
D4 = Numero
Relazione
Risultati delle partite della 27° giornata del campionato 2004/05
Fiorentina
Inter
Messina
Parma
Sampdoria
Siena
Udinese
Livorno
Reggina
Lecce
Lazio
Cagliari
Chievo
Brescia
Bologna
Palermo
2
2
1
3
1
2
0
2
1
1
0
2
0
3
1
2
33
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
Fiorentina
Reggina
2
1
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
34
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
Fiorentina
Inter
Messina
SquadraOspitata
Reggina
Lecce
Lazio
RetiCasa
2
2
1
RetiOspitata
1
1
0
Si usa il termine tupla per indicare una riga di n valori
corrispondenti ad attributi (l’ordine non è significativo)
35
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
Fiorentina
Inter
Messina
serie A
SquadraOspitata
Reggina
Lecce
Lazio
N
RetiCasa
2
0
1
N
RetiOspitata
1
0
0
domini
tuple
attributi
36
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
37
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/1985
13/04/1982
04/08/1985
25/02/1983
17/10/1980
STUDENTI
ESAMI
Codice
01
03
04
05
Titolo
Analisi I
Geometria
Fisica I
Chimica
Docente
Anna Verdi
Andrea Pitagora
Luca Galileo
Lorenzo Argenti
CORSI
38
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) }
39
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
Costo
0.15
0.25
7
3.50
Data
25/06/2004
25/06/2004
12/07/2004
13/07/2004
15/07/2004
Cliente
0034
0034
0001
0101
0034
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
40
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
41
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/1985
13/04/1982
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
42
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/1985
13/04/1982
25/02/1983
17/10/1980
43
Vincoli interrelazionali
Sono vincoli che coinvolgono più relazioni
Garantiscono l’integrità dei riferimenti fra tabelle
ESAMI
Studente
A80198760
A80293450
A80198330
A80198330
A80197456
Voto
28
30
27
25
21
Corso
01
04
01
03
05
CORSI
?
Codice
01
03
04
Titolo
Analisi I
Geometria
Fisica I
Docente
Anna Verdi
Andrea Pitagora
Luca Galileo
44
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
45
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
Luogo di Nascita
Siena
Poggibonsi
Montepulciano
Siena
Matricola
Nome, Cognome, Data di Nascita, Luogo di Nascita
NO
Nome, Cognome, Corso
Nome, Cognome, Data di Nascita
Corso
Lettere
Fisica
Ingegneria
Lettere
SI
46
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
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}
47
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
48
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
49
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)
50
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
51
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)
52
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
53
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
54
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)
55
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€
56
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
Città di
nascita
Alberto Firenze
Anna
Prato
Città di Nascita=Residenza(CITTADINI)
CITTADINI
57
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 Nome
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
Rossi
Verdi
Billi
Luti
Alberto
Luca
Paolo
Anna
Cat
Ric
PA
PO
Stipendio
1.000
1.750
2.500
Cognome,Nome(DOCENTI)
Cat,Stipendio(DOCENTI)
58
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
Capo
Mori
Bruni
CAPOREPARTO
Impiegato
Rossi
Verdi
Billi
Reparto
Vendite
Produzione
Produzione
Capo
Bruni
Mori
Mori
CAPOREPARTO
59
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 del numero di tuple
nelle due relazioni originarie
60
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 Numero
FI
B04546
SI
345678
INFRAZIONI
FI
B04546
PI
768930
GR
546788
Prov Numero Proprietario Indirizzo
FI
B04546
Paolo Rossi
Via Bixio 5 Prato
SI
345678
Piero Berti
Via Abete 6 Siena
PI
768930
Luca Bianchi
Piazza Po 16 Pisa
GR
546788
Anna Verdi
Viale Europa 4 Firenze
Prov
FI
SI
FI
PI
GR
INFRAZIONI
Numero
B04546
345678
B04546
768930
546788
Proprietario
Paolo Rossi
Piero Berti
Paolo Rossi
Luca Bianchi
Anna Verdi
AUTOVEICOLI
Indirizzo
Via Bixio 5 Prato
Via Abete 6 Siena
Via Bixio 5 Prato
Piazza Po 16 Pisa
Viale Europa 4 Firenze
61
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
62
Un esempio di theta–join
Impiegato
Rossi
Neri
Neri
Progetto
A
A
B
RICERCATORI
RICERCATORI
PROGETTI
Impiegato
Rossi
Neri
Neri
Progetto
A
A
B
Impiegato
Rossi
Neri
Neri
Rossi
Neri
Neri
Codice
A
A
B
Codice
A
B
Nome
Venere
Marte
PROGETTI
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
63
Query 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
64
Query 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
65
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€
66
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
67
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
SUPERVISIONE)))
Stipendio
2.500
68
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 €
69
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
70
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 estrae solo il nome e lo stipendio dell’impiegato/i con il nome
specificato
71
Scarica

Nessun titolo diapositiva - Dipartimento di Ingegneria dell