Sistemi per il recupero delle informazioni
PARTE - V
MODELLO RELAZIONALE DEI DATI
PROGETTAZIONE
Ricordiamo le fasi della progettazione di una Base di Dati
ESEMPIO
ESEMPIO
VIENE TRADOTTO NELLO SCHEMA
MUSEI (NomeM, Città, Indirizzo, Direttore) ARTISTI (NomeA, Nazionalità, DataN, DataM) OPERE (Codice, Anno, Titolo, NomeM*, NomeA*) PERSONAGGI (Personaggio, Codice*)
DIPINTI (Codice*, Tipo, Larghezza, Altezza) SCULTURE (Codice*, Materiale, Altezza, Peso)
Ennupla. È un insieme finito di coppie (Attributo, valore atomico)
Relazione. È un insieme finito (eventualmente vuoto) di ennuple con la stessa struttura.
I campi di un’ennupla sono atomici (numeri, stringhe o il valore NULL).
Un’ennupla si usa per rappresentare entità e la relazione si usa per rappresentare classi di entità.
ENNUPLA E RELAZIONE
I meccanismi per definire una base di dati con il modello relazionale sono solo due:
• l’ennupla
• la relazione.
TERMINOLOGIA - I
attributo: corrisponde (non sempre) ad un attributo del modello E-R.
Diversamente dal modello E-R, gli attributi sono sempre univoci (ad un sol valore) ed atomici (non composti)
L’ordine degli attributi non è significativo
dominio (di un attributo): è l’insieme dei valori che può assumere un attributo.
chiave primaria di una relazione: un attributo che identifica univocamente le ennuple della relazione. Gli attributi della chiave primaria vengono sottolineati
TERMINOLOGIA - II
Una relazione si definisce dandole un nome ed elencando fra parentesi tonde il tipo delle sue ennuple. La definizione di una relazione è detta schema della relazione
R(A1:T1, A2:T2,..., An:Tn)
R è il nome della relazione
A1, A2,... sono gli attributi della relazione
T1, T2,... sono i tipi degli attributi (interi, reali, booleani, stringhe)
Per semplicità omettiamo la specifica dei tipi, per cui lo schema di relazione è R(A1, A2,...,An)
TERMINOLOGIA - III
Lo schema della relazione è la descrizione della struttura di una relazione
Un’istanza di uno schema di relazione è un insieme finito di ennuple.
osserviamo che tutte le ennuple di una relazione hanno la stessa struttura
Lo schema relazionale è la descrizione della struttura di una base di dati
insieme di schemi di relazione
insieme di vincoli
RELAZIONE E TABELLA
Orario
Insegnamento Docente Aula Ora Analisi matem. I Luigi Neri N1 8:00
Basi di dati Piero Rossi N2 9:45 Chimica Nicola Mori N1 9:45 Fisica I Mario Bruni N1 11:45 Fisica II Mario Bruni N3 9:45 Sistemi inform. Piero Rossi N3 8:00 ORARIO (Insegnamento, Docente, Aula, Ora)
Relazione e tabella sono sinonimi
SCHEMA
Orario
Insegnamento Docente Aula Ora Analisi matem. I Luigi Neri N1 8:00
Basi di dati Piero Rossi N2 9:45 Chimica Nicola Mori N1 9:45 Fisica I Mario Bruni N1 11:45 Fisica II Mario Bruni N3 9:45 Sistemi inform. Piero Rossi N3 8:00 ORARIO (Insegnamento, Docente, Aula, Ora)
Le colonne della tabella formano lo schema della relazione
ISTANZE
Orario
Insegnamento Docente Aula Ora Analisi matem. I Luigi Neri N1 8:00
Basi di dati Piero Rossi N2 9:45 Chimica Nicola Mori N1 9:45 Fisica I Mario Bruni N1 11:45 Fisica II Mario Bruni N3 9:45 Sistemi inform. Piero Rossi N3 8:00 ORARIO (Insegnamento, Docente, Aula, Ora)
I contenuti delle righe della tabella formano le istanze della relazione
Schema di Base di dati
R= {CORSI(Corso, Docente, Aula), AULE(Nome, Edificio, Piano),
CORSISEDI(Corso, Aula, Edificio, Piano)
DATABASE
Corso Docente Aula Rossi
Basi di dati DS3 Bruni
Reti N3
Sistemi Neri N3 Bruni
Controlli G
Corsi
Nome Edificio Piano OMI
DS3 Terra
Pincherle
G Primo
OMI
N3 Terra
Aule
CorsiSedi Corso Aula
Reti N3
Sistemi N3 Controlli G
Piano Edificio
OMI Terra Pincherle Primo
OMI Terra
Un database e’ un insieme di tabelle
CHIAVI ESTERNE
Le associazioni tra i dati sono rappresentate attraverso i valori di opportuni campi, chiamati chiavi esterne, che assumono come valori quelli della chiave primaria di un’altra relazione.
In altre parole una chiave esterna è un attributo (od un insieme di attributi) di una relazione R che assume i valori della chiave primaria di un’altra relazione S.
Serve a rappresentare un’associazione tra R ed S
ESEMPIO
ESEMPIO
Il dominio di SiglaCDS* nella relazione STUDENTI coincide col dominio di SiglaCDS nella relazione CDS
Se in una istanza di STUDENTI l’attributo SiglaCDS assume il valore “XYZ”, deve esistere, nella istanza di CDS una ennupla con SiglaCDS = “XYZ”.
Il motivo è ovvio; se una studente è iscritto a “XYZ”, deve esistere il Corso di Studi “XYZ”
Tale proprietà si chiama Vincolo di integrità referenziale, e deve essere sempre soddisfatto da una chiave esterna:
DA MODELLO A OGGETTI A MODELLO RELAZIONALE
La trasformazione di uno schema a oggetti in uno schema relazionale avviene eseguendo i seguenti passi:
1. rappresentazione delle classi
2. rappresentazione delle associazioni uno a uno e uno a molti;
3. rappresentazione delle associazioni molti a molti o non binarie;
4. rappresentazione delle gerarchie di inclusione;
5. rappresentazione degli attributi multivalore;
6. appiattimento gli attributi composti
1. Rappresentazione delle classi
Una classe C è rappresentata da una relazione R i cui attributi sono quelli di C
si traduce in
Studenti(Matricola, Nome, AnnoImmatric)
2. Rappresentazione delle associazioni uno a uno e uno a molti
Come abbiamo già visto nell’esempio degli studenti e dei corsi di studi, le associazioni uno a molti si rappresentano aggiungendo agli attributi della relazione rispetto a cui l’associazione è univoca una chiave esterna che riferisce l’altra relazione.
ESEMPIO: la relazione tra corsi di studi e studenti, essendo univoca rispetto ai corsi di studi, si rappresenta aggiungendo agli studenti una chiave esterna SiglaCDS.
Quando l’associazione è uno ad uno la chiave esterna si aggiunge ad una qualunque delle due relazioni, preferendo quella rispetto a cui l’associazione è totale.
Se l’associazione ha degli attributi, questi vanno aggiunti alla relazione a cui si aggiunge la chiave esterna.
ESEMPIO
Studenti(Matricola, Nome, AnnoImmatric, Codice*) CorsidiLa(Codice, Nome, Tipo)
la chiave esterna Codice* rappresenta l’associazione è_iscritto N.B. È un grave errore fare il contrario. Lo schema:
Studenti(Matricola, Nome, AnnoImmatric) CorsidiLa(Codice, Nome, Tipo, Matricola*)
rappresenta Corsi di Laurea ai quali può essere iscritto un solo studente!
3. Rappresentazione delle associazioni molti a molti o non binarie
Un’associazione molti a molti tra due classi si rappresenta aggiungendo allo schema una nuova relazione che contiene due chiavi esterne che riferiscono le due relazioni coinvolte.
precisamente:
se A è un’associazione multivalore da R ad S e da S ad R, A è rappresentata con uno schema di relazione in cui gli attributi sono le chiavi primarie pkR di R e pkS di S.
A (pkR*, pkS*)
Se l’associazione ha degli attributi, questi attributi vengono aggiunti alla nuova relazione, e non vanno a far parte della chiave della nuova relazione.
ESEMPIO
Una ennupla di Insegna rappresenta una coppia (Corso_di_Lurea, Docente) di oggetti in associazione.
CorsidiLa(Codice,Nome,Facoltà,Tipo) Docenti(CodDoc, Settore)
Insegna(Codice*, CodDoc*)
Il docente identificato dal CodDoc 1592 insegna ai corsi di laurea identificati dai codici Inf, SBC e Mat , il docente identificato dal CodDoc 3014 insegna al corso di laurea identificato dai codici Inf, ecc...
23
4. Rappresentazione delle gerarchie fra classi Partizionamento orizzontale
Si definiscono tre relazioni RA(XA), RB(XA,XB), RC(XA, XC), dove RA contiene solo gli elementi della classe A che non stanno in nessuna delle sottoclassi, mentre RB ed RC contengono tutti gli elementi di B e di C
NOTA: se le sottoclassi costituiscono una copertura, la relazione RA(XA) non viene definita perché sarebbe sempre vuota.
ESEMPIO: trattandosi di sottoclassi che non soddisfano il vincolo di copertura si definiscono le relazioni Persone con attributi CodFisc, Nome, Telefono, Studenti con attributi CodFisc, Nome, Telefono, Matricola e Facoltà e la relazione Lavoratori con attributi CodFisc, Nome, Telefono, Attività e Reddito. La relazione Persone contiene le informazioni delle persone che non sono né studenti né lavoratori, la relazione Studenti contiene le informazioni degli studenti e la relazione Lavoratori contiene le informazioni dei lavoratori.
Persone(CodFisc, Nome, Telefono) Lavoratori(CodFisc*, Attività, Reddito) Studenti(CodFisc*, Matricola, Facoltà)
ESEMPIO
Tre schemi indipendenti, uno per ogni classe, contenenti tutti gli attributi di ciascuna classe
Anche con questa soluzione viene ignorata la gerarchia: si perde la superclasse
Si osservi che con nessuna delle tre soluzioni è in generale possibile esprimere i vincoli strutturali della gerarchia, vale a dire i vincoli di disgiunzione e di totalità
5. Rappresentazione delle proprietà multivalore
Una proprietà multivalore di una classe C si rappresenta eliminando il corrispondente attributo da C e creando una relazione con due attributi: una chiave esterna che fa riferimento alla chiave primaria di C ed un attributo che corrisponde all’attributo multivalore da trasformare.
Un oggetto con chiave primaria K ed in cui l’attributo assume valore A1, ..., An si rappresenta poi inserendo nella nuova relazione n coppie (K, A1), ..., (K,An).
ESEMPIO: si immagini che un utente abbia attributi Codice, Cognome e Telefoni, con Telefoni multivalore.
Applicando la trasformazione, si ottengono le due seguenti relazioni:
Utenti(Codice, Cognome) TelefoniUtenti(Codice*, Telefono)
ESEMPIO
Film(CodFilm,Titolo,Regista,Anno) Attori(CodFilm*, Attore)
6. Appiattimento degli attributi composti
Se un attributo A di uno schema di relazione è di tipo strutturato con campi Ai, si sostituisce A con gli attributi Ai.
Se A faceva parte della chiave primaria dello schema di relazione, si sostituisce A con gli attributi Ai nella chiave, e poi si verifica che non esista un sottoinsieme degli attributi della nuova chiave primaria che è esso stesso una chiave.
Sullo schema relazionale ottenuto si ripetono questa trasformazione e la precedente finché esistono schemi di relazioni con proprietà composte e proprietà multivalore.
ESEMPIO: se gli Utenti hanno un attributo strutturato Indirizzo con attributi Via, CAP e Città, applicando la trasformazione alla relazione
Utenti(Codice, Cognome, Indirizzo) si ottiene lo schema di relazione
Utenti(Codice, Cognome, Via, CAP, Città)
Riassumendo
Le regole di traduzione
Entità: diventano tabelle ed i loro identificatori chiavi primarie
Associazioni 1-1: se obbligatorie si procede come per le 1-N scegliendo il lato in cui includere gli attributi e la chiave esterna; se una opzionale si
includono gli attributi e la chiave esterna sul lato“obbligatorio”; se entrambe opzionali si costruisce una tabella autonoma come per il caso N-N.
Associazioni1-N:gli attributi dell’associazione e la chiave primaria della tabella relativa all’entità dal lato “N” sono inclusi nella tabella relativa all’entità dal lato“1”.
Associazioni N-N: diventano tabelle con chiave primaria formata dall’unione delle chiavi delle entità coinvolte
Confronto tra modello E-R e modello Relazionale
Nonostante una evidente analogia tra
Classe e Relazione Oggetto e Ennupla
Attributo(E-R) e Attributo(Rel)
sussiste in realtà una significativa differenza tra i concetti nei due modelli
Non sempre una relazione rappresenta una classe: può rappresentare una associazione o un attributo multivalore
Non sempre un’ ennupla rappresenta un oggetto: può rappresentare una coppia di oggetti in associazione o un possibile valore di un attributo multivalore
Non sempre un attributo Rel rappresenta un attributo E-R: può rappresentare un oggetto di un’altra classe (chiave esterna)
Esercizio
La segreteria di un corso di laurea deve gestire alcune informazioni relative all’orario delle lezioni.
informazioni: aule, corsi, lezioni
le aule sono identificate da un codice, di ogni aula interessa il numero dei posti, l’edificio in cui è situata, se ha o non ha proiettore
alcune aule sono dotate di calcolatori, in questo caso interessa sapere il numero dei pc
i corsi sono identificati da un codice; di ogni corso interessa il nome e il docente
le lezioni sono caratterizzate da un’ora d’inizio, un’ora di fine, un giorno della settimana, il semestre
ogni lezione è tenuta in un’aula e si riferisce ad un corso
Informazione incompleta
ll modello relazionale impone ai dati una struttura rigida:
- le informazioni sono rappresentate per mezzo di ennuple
- solo alcuni formati di ennuple sono ammessi: quelli che corrispondono agli schemi di relazione
I dati disponibili possono non corrispondere al formato previsto
Franklin Delano Roosevelt
Nome SecondoNome Cognome
Winston Churchill
Charles De Gaulle
Josip Stalin
Es: PERSONE(Nome, SecondoNome, Cognome)
Informazione incompleta: soluzioni?
Non conviene (anche se spesso si fa) usare valori del dominio (0, stringa nulla, “99”, ...):
- potrebbero non esistere valori “non utilizzati”
- in fase di utilizzo (nei programmi) sarebbe necessario ogni volta tener conto del “significato” di questi valori
Tecnica rudimentale ma efficace:
- valore nullo: denota l’assenza di un valore del dominio (e non è un valore del dominio)
- si possono (e debbono) imporre restrizioni sulla presenza di valori nulli
Matricola Cognome Nome Data di nascita
6554 Rossi Mario 05/12/1978
NULL Rossi Maria 01/02/1978
9283 Verdi Luisa 12/11/1979
studenti
Codice Titolo Docente
01 Analisi Mario
02 Chimica NULL
NULL Chimica Verdi
corsi
Studente Voto Corso
NULL 30 NULL
NULL 24 02
9283 28 01
esami
Troppi valori nulli
Tipi di valore nullo
(almeno) tre casi differenti
valore sconosciuto
valore inesistente
valore senza informazione
Citta’ IndirizzoPrefettura Roma Via Quattro Novembre
Genova NULL
Ovada NULL
NULL Prato
Vincoli, schemi e istanze
I vincoli corrispondono a proprietà del mondo reale modellato dalla base di dati
interessano a livello di schema (con riferimento cioè a tutte le istanze)
Ad uno schema associamo un insieme di vincoli e consideriamo corrette (valide, ammissibili) le istanze che soddisfano tutti i vincoli
Un'istanza può soddisfare altri vincoli
La Conoscenza Astratta nel modello Relazionale
Nel modello relazionale si possono esprimere i seguenti vincoli:
Vincolo di chiave
Vincolo di chiave esterna
Tipo di un attributo
Attributo obbligatorio
Vincoli strutturali delle associazioni (non completamente)
Una base di dati "scorretta"
Studente Voto Lode Corso
32 01
276545
276545 30 e lode 02
787643 27 e lode 03
739430 24 04
Esami
Matricola 276545 787643 787643
Cognome Rossi
Neri Bianchi
Nome Mario Piero
Luca Studenti
787643 787643
32
27 e lode 739430
Vincolo di integrità
Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione
Un vincolo è una funzione booleana (un predicato): associa ad ogni istanza il valore vero o falso
Perchè?
descrizione più accurata della realtà
contributo alla “qualità dei dati”
utili nella progettazione (vedremo)
usati dai DBMS nella esecuzione delle interrogazioni
Tipi di vincoli
Vincoli intrarelazionali: coinvolgono una singola relazione del database.
Esempi
- vincoli di ennupla
- vincoli di chiave
- vincoli su valore
Vincoli interrelazionali: coinvolgono diverse relazioni del database.
Esempio: vincoli di integrità referenziale
Vincoli di ennupla
Esprimono condizioni sui valori di ciascuna ennupla, indipendentemente dalle altre ennuple
Caso particolare:
vincoli di dominio: coinvolgono un solo attributo
Una possibile sintassi:
espressione booleana di atomi che confrontano valori di attributo o espressioni aritmetiche su di essi
(Voto 18) AND (Voto 30)
(Voto = 30) OR NOT (Lode = "e lode")
Vincoli di ennupla, esempio
Impiegato Rossi
Neri Bruni
Stipendi Lordo
55.000 45.000 47.000
Netto 42.500 35.000 36.000 Ritenute
12.500 10.000 11.000
Lordo = (Ritenute + Netto)
Importanza delle chiavi
L’esistenza delle chiavi garantisce l’accessibilità a ciascun dato della base di dati
Le chiavi permettono di correlare i dati in relazioni diverse:
il modello relazionale è basato su valori
In presenza di valori nulli, i valori della chiave non permettono
di identificare le ennuple
di realizzare facilmente i riferimenti da altre relazioni
Chiave primaria
Chiave su cui non sono ammessi nulli
Notazione: sottolineatura
Matricola
78763 65432
Nome
Piero Mario 87654
43289
Mario Cognome
Neri Neri Rossi
Neri Mario
Corso
Ing Mecc Ing Inf Ing Civile
NULL
Nascita
86765 NULL Mario Ing Inf 5/12/78
10/7/79 NULL 3/11/76
5/12/78
Informazioni in relazioni diverse sono correlate attraverso valori comuni
in particolare, valori delle chiavi (primarie)
le correlazioni debbono essere "coerenti"
Integrità referenziale
21/11/21
Esempio
Infrazioni Codice 34321
73321 64521 53524
Data 1/2/95 4/3/95 5/4/96 5/2/98
Vigile 3987 3295 3295 9345
Prov Numero MI
TO PR PR
39548K E39548 839548 839548 Matricola
3987 3295 9345
Vigili Cognome
Rossi Neri Neri
Nome Luca Piero Mario
Mori Gino
7543
Auto Prov Numero MI
TO PR
39548K E39548 839548
Cognome Rossi Rossi Neri
Nome Mario Mario Luca
Matricola 3987 3295 9345
Vigili Cognome
Rossi Neri Neri
Nome Luca Piero Mario
Mori Gino
7543 Infrazioni
Codice 34321
73321 64521 53524
Data 1/2/95 4/3/95 5/4/96 5/2/98
Vigile 3987 3295 3295 9345
Prov Numero
MI TO PR PR
39548K E39548 839548 839548 3295
3295 3987
3987
9345 3987
9345
9345
3295
3295 3295
Un vincolo di integrità referenziale (“foreign key”) fra gli attributi X di una relazione R1 e un’altra relazione R2 impone ai valori su X in R1 di comparire come valori della chiave primaria di R2
ES: vincoli di integrità referenziale fra: l’attributo Vigile della relazione INFRAZIONI e la relazione VIGILI
Vincolo di integrità referenziale
Infrazioni Codice
34321
73321 64521 53524
Data 1/2/95 4/3/95 5/4/96 5/2/98
Vigile 3987 3295 3295 9345
Prov Numero
MI TO PR PR
39548K E39548 839548 839548
Auto Prov Numero
MI TO PR
E39548 F34268 839548
Cognome Rossi Rossi Neri
Nome Mario Mario Luca
TO E39548
TO
E39548
Violazione di vincolo di integrità referenziale
Integrità referenziale e valori nulli
Impiegati Matricola 34321
64521 53524
Cognome Rossi
Neri Verdi
Progetto IDEA
XYZ NULL
Progetti Codice
IDEA
BOH XYZ
Inizio 01/2000 07/2001 09/2001
Durata 36 24 24
Costo 200 120 150
73032 Bianchi IDEA
Azioni compensative
Esempio:
Viene eliminata una ennupla causando una violazione
Comportamento “standard”:
Rifiuto dell'operazione
Azioni compensative:
Eliminazione in cascata
Introduzione di valori nulli
Eliminazione in cascata
Impiegati Matricola 34321
64521 53524
Cognome Rossi
Neri Verdi
Progetto IDEA
XYZ NULL
73032 Bianchi IDEA
Progetti Codice
IDEA
BOH XYZ
Inizio 01/2000 07/2001 09/2001
Durata 36 24 24
Costo 200 120 150
XYZ 07/2001 24 120
XYZ 07/2001 24 120
XYZ 07/2001 24 120
53524 Neri XYZ
Introduzione di valori nulli
Impiegati Matricola 34321
64521 53524
Cognome Rossi
Neri Verdi
Progetto IDEA
XYZ NULL
73032 Bianchi IDEA
Progetti Codice
IDEA
BOH XYZ
Inizio 01/2000 07/2001 09/2001
Durata 36 24 24
Costo 200 120 150
XYZ 07/2001 24 120
XYZ 07/2001 24 120
XYZ 07/2001 24 120
NULL
Sistemi per il recupero delle informazioni
PARTE - VI
ALGEBRA RELAZIONALE: operazioni
BASE DI DATI
Una base di dati può essere utilizzata con due modalità:
interattivamente: l’utente interagisce direttamente con la base di dati. L’utente presenta al sistema una richiesta di dati. Tale richiesta prende il nome di interrogazione (query). L’interrogazione viene interpretata dal sistema, che in risposta restituisce i dati richiesti.
Nella richiesta devono essere specificate le proprietà dei dati che interessano. Se ad es. vogliamo l’elenco dei libri scritti da Calvino, nella richiesta deve essere specificata questa proprietà.
L’interrogazione deve essere formulata per mezzo di un linguaggio formale
mediante programmi: questo uso è riservato ad utenti programmatori. Le interrogazioni fanno parte di un programma applicativo che può essere eseguito dal sistema numerose volte, ed il risultato delle interrogazioni può essere utilizzato dal programma per successive elaborazioni
Come esempio di linguaggi per l’uso interattivo di basi di dati, relazionali, vediamo
l’algebra relazionale: insieme di operatori su relazioni che danno come risultato relazioni. Non si usa come linguaggio di interrogazione dei DBMS ma come rappresentazione interna delle interrogazioni.
il linguaggio SQL (Structured Query Language), che offre una sintassi per l’algebra relazionale.
Il termine algebra è dovuto al fatto che sono previsti operatori (query) che agiscono su relazioni e producono altre relazioni come risultato.
Gli operatori possono essere combinati per formare espressioni complesse.
LINGUAGGI RELAZIONALI
ESEMPI DI QUERY
Algebra relazionale
Insieme di operatori
su relazioni
che producono relazioni (tabelle)
e possono essere composti per svolgere operazioni più complesse
Gli operatori fondamentali dell’algebra relazionale sono:
Ridenominazione;
Unione;
Intersezione;
Differenza;
Proiezione;
Restrizione (o Selezione);
Prodotto.
I simboli R,S,... denotano relazioni, A, B,…attributi e X,Y,…insiemi di attributi
OPERATORI FONDAMENTALI
RIDENOMINAZIONE
Operatore unario
Modifica il nome di un attributo senza cambiarne il valore: restituisce la relazione ottenuta sostituendo in R gli attributi A, B,… con gli attributi A’, B’,…
DEFINIZIONE OPERATORIALE: AA’ (R)
ESAMI
ESAMI
MatricolaCodice Studente(Esami)
ESEMPIO
Paternità
Padre Figlio
Adamo Caino
Abramo Isacco
Adamo Abele
Genitore Padre (Paternità)
Padre Figlio
Adamo Caino
Abramo Isacco
Adamo Abele
Genitore
OPERATORI INSIEMISTICI
Le relazioni sono degli insiemi, quindi possiamo applicare gli operatori sugli insiemi
I risultati debbono essere relazioni
E’ possibile applicare unione, intersezione, differenza solo a relazioni definite sugli stessi attributi
Siano R ed S relazioni dello stesso tipo allora
L’unione di R con S restituisce una relazione dello stesso tipo con le ennuple che stanno in R in S, o in entrambe.
L’intersezione di R con S restituisce una relazione dello stesso tipo con le ennuple che stanno contemporaneamente sia in R sia in S.
La differenza di R con S restituisce una relazione dello stesso tipo con le ennuple che stanno in R ma non in S.
DEFINIZIONE OPERATORIALE
RS
RS
R - S
UNIONE, INTERSEZIONE, DIFFERENZA
ESEMPIO DI UNIONE
ESEMPIO DI INTERSEZIONE
ESEMPIO DI DIFFERENZA
“Paternita’” e “Maternità” sono attributi con nomi diversi ma entrambi sono
“Genitori”
Soluzione: ridenominare gli attributi
ESEMPIO: UNIONE?
Maternità
Madre
???
ESEMPIO: RIDENOMINAZIONE E UNIONE
Sede, Retribuzione Ufficio, Stipendio (Impiegati)
Sede, Retribuzione Fabbrica, Salario (Operai)
Impiegati Cognome
Neri Rossi
Ufficio
Milano Roma
Stipendio
64 55
Operai Cognome
Verdi Bruni
Fabbrica
Latina Monza
Salario
55 45
Cognome Sede Retribuzione
Neri Rossi
64 55 Milano
Roma
Verdi Bruni
Latina Monza
55 45
selezione
proiezione
operatori "ortogonali“
selezione:
decomposizione orizzontale proiezione:
decomposizione verticale
Produce risultati:
su un sottoinsieme degli attributi dell’operando
con valori da tutte le n-uple della relazione
Data la relazione R su insieme di attributi X={A1,A2,…An} e un sottoinsieme Y di X, la proiezione di R su Y è la relazione ottenuta da R considerando solo i valori sugli attributi di Y
DEFINIZIONE OPERATORIALE: Y(R)
La cardinalità di Y(R), cioè il numero degli elementi che lo compongono, puo’ essere minore di R nel caso di duplicati
PROIEZIONE
Cognome Filiale Stipendio Matricola
Neri Milano 64
5998
Neri Napoli 55
7309
Rossi Roma 64
5698
Rossi Roma 44
9553
cognome e filiale di tutti gli impiegati
Cognome, Filiale(Impiegati)
ESEMPIO PROIEZIONE
Si riduce la cardinalita’ del risultato rispetto all’operando
ESEMPIO PROIEZIONE - II
per tutti gli impiegati:
• matricola e cognome
Produce risultati:
con lo stesso schema dell’operando
con un sottoinsieme delle ennuple dell’operando: quelle che soddisfano la condizione
Data la relazione R la restrizione di R alla condizione C restituisce una relazione dello stesso tipo di R avente per valori gli elementi di R che soddisfano la condizione C.
La condizione di selezione è formata da
operatori booleani (AND, OR, NOT)
condizione atomiche: termini che possono contenere
confronti fra attributi (per esempio, Stipendio>Tasse, dove Stipendio e Tasse sono attributi)
confronti fra attributi e costanti (per esempio, Età 60, dove Età è un attributo)
DEFINIZIONE OPERATORIALE: Condizione(R)
SELEZIONE (o RESTRIZIONE)
ESEMPIO RESTRIZIONE
Impiegati che
• guadagnano più di 50
• guadagnano più di 50 e lavorano a Milano
• hanno lo stesso nome della filiale presso cui lavorano
Selezione: sintassi e semantica
sintassi
Condizione (Operando)
Condizione: espressione booleana (come quelle dei vincoli di ennupla)
semantica
il risultato contiene le ennuple dell'operando che soddisfano la condizione
Operatori booleani
Connettivi logici
(AND),
(OR),
(NOT)
Operatori di confronto
= (uguale) (diverso)
(maggiore) (minore)
(maggiore o uguale)
(minore o uguale)
Cognome Filiale Stipendio Matricola
Neri Milano 64
5998
Rossi Roma 55
7309
Neri Napoli 64
5698
Milano Milano 44
9553 Impiegati
Milano Milano 44
9553 Neri Napoli 64
5698
impiegati che guadagnano più di 50
Stipendio > 50(Impiegati)
Impiegati
Cognome Filiale Stipendio Matricola
Neri Milano 64
5998
Rossi Roma 55
7309
Neri Napoli 64
5698
Milano Milano 44
9553
impiegati che guadagnano più di 50 e lavorano a Milano
Stipendio > 50 AND Filiale = 'Milano' (Impiegati)
Rossi Roma 55
7309
Neri Napoli 64
5698
Milano Milano 44
9553
Neri Milano 64
5998
Impiegati
Cognome Filiale Stipendio Matricola
Neri Milano 64
5998
Rossi Roma 55
7309
Neri Napoli 64
5698
Milano Milano 44
9553
impiegati che hanno lo stesso nome della filiale presso cui lavorano
Cognome = Filiale(Impiegati)
Neri Milano 64
5998
Rossi Roma 55
7309
Neri Napoli 64
5698
Milano Milano 44
9553
Selezione e proiezione
Combinando selezione e proiezione, possiamo estrarre interessanti informazioni da una relazione
matricola e cognome degli impiegati che guadagnano più di 50
Stipendio > 50(Impiegati)
Matricola,Cognome( )
Cognome Filiale Stipendio Matricola
Neri Milano 64 5998
Rossi Roma 55
7309
Neri Napoli 64 5698
Milano Milano 44 9553 Milano Milano 44
9553 Neri Napoli 64
5698
Date le relazioni R ed S con attributi diversi, il prodotto di R con S restituisce una relazione con attributi quelli di R e di S ed elementi la copia delle ennuple del prodotto cartesiano di R e S, ovvero ogni ennupla di R è concatenata con tutte le ennuple di S.
DEFINIZIONE OPERATORIALE: R x S
Se R ha n elementi ed S ne ha m il prodotto ne ha m*n
PRODOTTO (Join)
1 25
2 13
3 27
4 28
Numero Voto
1 Mario Rossi
2 Nicola Russo
3 Mario Bianchi
4 Remo Neri
Numero Candidato
25 Mario Rossi
13 Nicola Russo
27 Mario Bianchi
28 Remo Neri
Voto Candidato
1 2 3 4 Numero
JOIN NATURALE
operatore binario (generalizzabile)
produce un risultato
sull'unione degli attributi degli operandi
con ennuple costruite ciascuna a partire da una ennupla di ognuno degli operandi
Permette di combinare ennuple da relazioni diverse basandosi sui valori degli attributi
Sia R con attributi XY ed S con attributi YZ. Il join naturale produce una relazione di attributi XYZ; ennuple del risultato sono ottenute combinando le ennuple di R e S che hanno gli stessi valori negli attributi con lo stesso nome
ESEMPIO - I
join completo: ogni ennupla contribuisce al risultato
ESEMPIO - II
Join non completo: alcuni valori tra gli attributi comuni non coincidono, quindi, alcune ennuple non partecipano al JOIN
ESEMPIO - III
Join vuoto: caso limite
potrebbe anche succedere che nessuna ennupla trovi il corrispettivo
ESEMPIO - IV
L’altro caso estremo del JOIN
ogni ennupla di R1 si combina con ogni ennupla di R2
la cardinalita’ del risultato e’ il prodotto delle cardinalita’
Cardinalità del join
Il join di R1 e R2 contiene un numero di ennuple compreso fra zero e il prodotto di | R1| e |R2|
se il join coinvolge una chiave di R2, allora il numero di ennuple è compreso fra zero e |R1|
se il join coinvolge una chiave di R2 e un vincolo di integrità referenziale, allora il numero di ennuple è pari a |R1|
R1(A,B) , R2 (B,C) in generale
0 |R1 JOIN R2| |R1| |R2|
se B è chiave in R2
0 |R1 JOIN R2| |R1|
se B è chiave in R2 ed esiste vincolo di integrità referenziale fra B (in R1) e R2:
|R1 JOIN R2| = |R1|
Impiegato Reparto
Rossi A
Neri B
Bianchi B
Reparto Capo
B Mori
C Bruni
Neri B Mori
Impiegato Reparto Capo
Bianchi B Mori
A
C
Join, una difficoltà
alcune ennuple non contribuiscono al risultato: vengono "tagliate fuori"
Join esterno
Il join esterno estende, con valori nulli, le ennuple che verrebbero tagliate fuori da un join (interno)
esiste in tre versioni:
sinistro, destro, completo
Join esterno
sinistro: mantiene tutte le tuple del primo operando, estendendole con valori nulli, se necessario
destro: ... del secondo operando ...
completo: … di entrambi gli operandi ...
Impiegato Reparto
Rossi A
Neri B
Bianchi B Impiegati
Reparto Capo
B Mori
C Bruni
Reparti
Neri B Mori
Impiegato Reparto Capo
Bianchi B Mori
Impiegati JOIN
LEFTReparti C
Rossi A NULL
A
Rossi
Impiegato Reparto
Rossi A
Neri B
Bianchi B Impiegati
Reparto Capo
B Mori
C Bruni
Reparti
Neri B Mori
Impiegato Reparto Capo
Bianchi B Mori
Impiegati JOIN
RIGHTReparti A
NULL C Bruni
C Bruni
Impiegato Reparto
Rossi A
Neri B
Bianchi B Impiegati
Reparto Capo
B Mori
C Bruni
Reparti
Neri B Mori
Impiegato Reparto Capo
Bianchi B Mori
Impiegati JOIN
FULLReparti
NULL C Bruni
C Bruni
A Rossi
Rossi A NULL
Join e proiezioni Impiegato Reparto
Rossi A
Neri B
Bianchi B
Reparto Capo
B Mori
C Bruni
Neri B Mori
Impiegato Reparto Capo
Bianchi B Mori
Impiegato Reparto
Neri B
Bianchi B
Reparto Capo
B Mori
Proiezioni e join
Neri B Mori
Impiegato Reparto Capo
Bianchi B Bruni
Verdi A Bini
Neri B
Impiegato Reparto
Bianchi B
Verdi A
B Mori
Reparto Capo
B Bruni
A Bini
Verdi A Bini
Neri B Mori
Impiegato Reparto Capo
Bianchi B Bruni
Neri B Bruni
Bianchi B Mori
Join e proiezioni
R 1(X1), R 2(X2)
PROJX1 (R 1 JOIN R2 ) R 1
R(X), X = X1 X2
(PROJX1 (R))JOIN (PROJX2 (R)) R
Prodotto cartesiano
un join naturale su relazioni senza attributi in comune
contiene sempre un numero di tuple pari al prodotto delle cardinalità degli operandi (le tuple sono tutte combinabili )
Rossi A
Neri B
Bianchi B
Impiegato Reparto Impiegati
A Mori
B Bruni
B Bruni
B Bruni
Codice Capo
Reparti
Impiegati JOIN Reparti
Impiegato Reparto Codice Capo
Rossi A AAA Mori
Rossi A B Bruni
Neri B A Mori
Neri B B Bruni
Bianchi B A Mori
Bianchi B B Bruni
Il prodotto cartesiano, in pratica, ha senso (quasi) solo se seguito da selezione:
SEL
Condizione (R1JOIN
R2) L'operazione viene chiamata theta-join e indicata con R1
JOIN
Condizione R2 La condizione C è spesso una congiunzione (AND) di atomi di
confronto A1 A2 dove è uno degli operatori di confronto (=, >, <, …)
se l'operatore è sempre l'uguaglianza (=) allora si parla di equi-join
Rossi A
Neri B
Bianchi B
Impiegato Reparto Impiegati
A Mori
B Bruni
B Bruni
B Bruni
Codice Capo Reparti
Impiegati JOIN
Reparto=CodiceReparti
Impiegato Reparto Codice Capo
Rossi A A A A Mori
Rossi A B Bruni
Neri B A Mori
Neri B B Bruni
Bianchi B A Mori
Bianchi B B Bruni
Rossi A A A A Mori
Neri B B Bruni
Bianchi B B Bruni
Esempi
Impiegati Matricola Nome Età Stipendio Bianchi 37 38
5998
Rossi 34 45
7309
Bruni 43 42
5698
Neri 42 35
9553
Mori 45 50
4076
Lupi 46 60
8123
Supervisione Impiegato Capo
5998 7309
5698 9553 4076
5698 5698
4076
4076
8123
Nome Età Stipendio Matricola
Bianchi 37 38 5998
Rossi 34 45
7309
Bruni 43 42
5698
Neri 42 35
9553
Mori 45 50
4076
Lupi 46 60
8123
SELStipendio>40(Impiegati)
Bianchi 37 38 5998
Neri 42 35
9553
Rossi 34 45
7309
Bruni 43 42
5698
Mori 45 50
4076
Lupi 46 60
8123
Rossi 34 45
7309
Bruni 43 42
5698
Mori 45 50
4076
Lupi 46 60
8123
Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni
Nome Età Stipendio Matricola
Bianchi 37 38 5998
Rossi 34 45
7309
Bruni 43 42
5698
Neri 42 35
9553
Mori 45 50
4076
Lupi 46 60
8123
Bianchi 37 38 5998
Neri 42 35
9553
Rossi 34 45
7309
Bruni 43 42
5698
Mori 45 50
4076
Lupi 46 60
8123
Rossi 34 45
7309
Bruni 43 42
5698
Mori 45 50
4076
Lupi 46 60
8123
PROJ
Matricola, Nome, Età (
SEL
Stipendio>40(Impiegati)) Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni
Selezione con valori nulli
Cognome Filiale Età Matricola
Neri Milano 45 5998
Rossi Roma 32
7309
Bruni Milano
NULL9553
Impiegati
SEL
Età > 40 (Impiegati)• la condizione atomica è vera solo per valori non nulli
Un risultato non desiderabile
SEL
Età>30 (Persone) SEL
Età30 (Persone) Persone Perché? Perché le selezioni vengono valutate separatamente!
Ma anche
SEL
Età>30 Età30 (Persone) Persone Perché? Perché anche le condizioni atomiche vengono valutate separatamente!
Selezione con valori nulli: soluzione
SEL Età > 40 (Impiegati)
la condizione atomica è vera solo per valori non nulli
per riferirsi ai valori nulli esistono forme apposite di condizioni:
IS NULL IS NOT NULL
si potrebbe usare (ma non serve) una "logica a tre valori" (vero, falso, sconosciuto)
Quindi:
SEL
Età>30 (Persone) SEL
Età30 (Persone) SEL
Età IS NULL (Persone)=
SEL
Età>30 Età30 Età IS NULL(Persone)= Persone
Cognome Filiale Età Matricola
Neri Milano 45 5998
Rossi Roma 32
7309
Bruni Milano
NULL9553
Impiegati
Neri Milano 45 5998
Bruni Milano
NULL9553
SEL
(Età > 40) OR (Età IS NULL) (Impiegati)Neri Milano 45 5998
Bruni Milano
NULL9553
Sistemi per il recupero delle informazioni
DATABASE MANAGEMENT SYSTEM
(DBMS)
INTRODUZIONE
In questa sezione chiariremo qual è il significato tecnico del termine basi di dati e le funzionalità che offrono i sistemi che ne consentono la definizione e l’uso.
Iniziamo col chiarire cosa si intende per “base di dati”, visto che spesso questo termine viene usato per riferirsi ad un qualsiasi insieme di dati archiviati con un calcolatore.
INTRODUZIONE
Gli archivi costituiscono una memoria di lavoro indispensabile per gestire quantità ingenti di informazioni, 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 erano gestiti in forma cartacea, con schedari e registri, che permettevano di catalogare e ordinare i dati in base ad un unico criterio di ricerca e rendevano piuttosto disagevole il recupero e l’analisi dell’informazione.
L’avvento dei computer nella gestione degli archivi ha notevolmente migliorato i processi di memorizzazione e recupero dei dati: la creazione di software specifici per la gestione di banche dati, chiamati DBMS (Data Base Management System), ha infatti permesso di unificare in un unico programma le funzionalità di archiviazione e gestione dei dati. Se all’inizio i software per la gestione di database occupavano grande spazio di memoria e risultavano abbastanza complessi da utilizzare, oggi programmi come Microsoft Access uniscono sofisticate funzioni di archiviazione, ricerca e analisi dei dati a un interfaccia amichevole, e consentono un utilizzo versatile adatto alle più svariate esigenze.
Archivi e basi di dati
Gestione ricevimento
Gestione orario lezioni
Database
DATABASE
Accezione generica, metodologica
Insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente (azienda, ufficio, persona)
Accezione specifica, metodologica e tecnologica
Insieme di dati gestito da un DBMS
COS’E’ UNA BASE DATI
Una base di dati è una raccolta di dati permanenti suddivisi in due categorie:
I METADATI
I DATI
COS’E’ UNA BASE DATI
I METADATI
i metadati, ovvero lo schema della base di dati, sono una raccolta di definizioni che descrivono
la struttura di alcuni insiemi dati,
le restrizioni sui valori ammissibili dei dati
le relazioni esistenti fra gli insiemi.
Lo schema va definito prima di creare i dati ed è indipendente dalle applicazioni che usano la base di dati.
COS’E’ UNA BASE DATI
I DATI
i dati, le rappresentazioni dei fatti conformi alle definizioni dello schema, con le seguenti caratteristiche:
a) sono organizzati in insiemi omogenei, fra i quali sono definite delle relazioni.
b) sono molti, in assoluto e rispetto ai metadati, e non possono essere gestiti in memoria temporanea;
c) sono permanenti, cioè, una volta creati, continuano ad esistere finché non sono esplicitamente rimossi;
d) sono accessibili mediante transazioni;
e) sono protetti sia da accesso da parte di utenti non autorizzati, sia da corruzione dovuta a malfunzionamenti hardware e software;
f) sono utilizzabili contemporaneamente da utenti diversi.
Si consideri la base di dati degli studenti ed esami superati definiti dagli schemi di relazioni:
Studenti(Matricola, Cognome, Città, AnnoNascita) Esami(Materia, Candidato, Voto, Data)
Dovrebbe essere chiaro che una base di dati contiene i dati immessi, meno ovvio è il fatto che in una base di dati si memorizzano anche informazioni sui dati definiti, chiamati metadati.
Esempi di queste informazioni sono:
1. i nomi delle relazioni definite;
2. il tipo delle ennuple delle relazioni;
3. le chiavi primarie ed esterne definite;
4. i vincoli sui valori ammissibili degli attributi.
Queste informazioni sono memorizzate in tabelle predefinte che sono gestite automaticamente dal sistema.