Uploaded by Francesco De Simone

6 Algebra relazionale

advertisement
ALGEBRA RELAZIONALE
5^ INFORMATICO A.S 2023-2024
DIPARTIMENTO INFORMATICA
A CURA PROFF. BARBARA CATTANI, ILARIA BERTOLETTI
ARGOMENTI

Operazioni relazionali
 Algebra relazionale
 Proiezioni

Selezioni

Congiunzioni

Join naturale
 Operazioni insiemistiche
 Unione

Join
 Join interno
 Join esterno
 Left join
 Right join
 Full join
 Self join
 Intersezione
 Differenza
2
ALGEBRA RELAZIONALE
Gli operatori relazionali agiscono su una o più tabelle producendo una nuova tabella. Le
operazioni relazionali servono per interrogare la base dati per estrarre le informazioni
desiderate dalle tabelle del database.
Principali operatori relazionali:
Le relazioni sono insiemi:
Selezione
Unione
Proiezione
Intersezione
Congiunzione
Differenza
3
DATABASE DEGLI ESEMPI
Agente
IDAgente
Nome
Zona
{PK}
1
N
Contattare
Cliente
IDCliente {PK}
RagioneSociale
PartitaIVA
Provincia
SCHEMA LOGICO
Agente ( IDAgente, Nome, Zona )
Cliente ( IDCliente, RagioneSociale, PartitaIVA, Provincia, IDAgente )
Per distinguere tra IDAgente di Agente e IDAgente di Cliente si usa la dot notation,
anteponendo il nome della tabella a cui ci si riferisce
esempio : Agente.IDAgente e Cliente.IDAgente
4
DATABASE DEGLI ESEMPI
Il contenuto delle tabelle si suppone sia
Agente
Cliente
IDCliente
RagioneSociale
Partita IVA
Provincia
IDAgente
IDAgente
Nome
Zona
Tond
Tondini metallici
05467833808
BS
Bia
Bia
Bianchi
Nord
Vitp
Viteria di
precisione
06443652006
MI
Bia
Bru
Bruni
Centro
Vite
Viteria lombarda
05567389302
MI
Bia
Ner
Neri
Centro
Lami
Lamiere per Auto
04357839912
TO
Bia
Ros
Rossi
Sud
Prome
Prodotti Metallici
05332518672
BG
Gia
Meta
Metallurgia Emilia
01583315265
BO
Ner
Ver
Verdi
Isole
Levi
Levigatoria
Toscana
01528120155
FI
Ner
Luci
Lucidatura Metalli
01572800164
RM
Ner
Otto
Ottonificio
Pugliese
04687990657
BA
Ros
Metb
Metalli Rari
01642877201
NA
Ros
Rame
Rame & Metalli
03568168943
PA
Ver
5
SELEZIONE σP R
La selezione estrae dalla tabella R le sole righe che soddisfano la proprietà P,
cioè le righe di R per le quali P è vera
Esempio
Selezione di Cliente per Provincia = “MI”
IDCliente
RagioneSociale
Partita IVA
Provincia
IDAgente
Vite
Viteria lombarda
05567389302
MI
Bia
Vitp
Viteria di
precisione
06443652006
MI
Bia
Grado risultante:
Cardinalità risultante:
Operatore algebrico
σProvincia=“MI” Cliente
uguale a quello di R
minore o uguale a quella di R
6
PROIEZIONE πL R
La proiezione estrae dalla tabella R le sole L colonne specificate
Esempio
Informazioni sui Cliente su IDCliente, RagioneSociale, IDAgente
IDCliente
RagioneSociale
IDAgente
Lami
Lamiere per Auto
Bia
Levi
Levigatoria
Toscana
Ner
Luci
Lucidatura Metalli
Ner
Meta
Metallurgia Emilia
Ner
Metb
Metalli Rari
Ros
Otto
Ottonificio
Pugliese
Ros
Prome
Prodotti Metallici
Gia
Rame
Rame & Metalli
Ver
Prome
Prodotti Metallici
Gia
Vite
Viteria lombarda
Bia
Vitp
Viteria di
precisione
Bia
Operatore algebrico
πIDCliente,RagioneSociale,IDAgente Cliente
Grado risultante:
minore o uguale a quello di R
Cardinalità risultante: minore o uguale a quella di R
7
PROIEZIONE πL R
La cardinalità di una proiezione di R può essere minore di quella di R perché
nel modello relazionale non ci possono essere tabelle con righe uguali.
Le righe duplicate sono compattate.
Tabella partenza
IDAgente
Bia
Bia
Bia
Bia
Gia
Ner
Ner
Ner
Ros
Operatore algebrico
πIDAgente Cliente
IDAgente
Bia
Gia
Ner
Ros
Come vedremo, i DBMS, per ragioni
di efficienza, non compattano le
righe in modo automatico.
Bisogna richiederlo esplicitamente:
clausola DISTINCT nel comando
SELECT di SQL
Ver
Ros
Ver
8
PROIEZIONI E SELEZIONI
Proiezione e selezione agiscono ortogonalmente
Agente
IDAgente
Nome
σP Agente
Zona
Bia
Bianchi
Nord
Bru
Bruni
Centro
Ner
Neri
Centro
Ros
Rossi
Sud
Ver
Verdi
Isole
IDAgente
Selezione
Nome
Zona
Bru
Bruni
Centro
Ner
Neri
Centro
Le righe di Agente dove:
Zona = “Centro”
Proiezione
πLAgente
Nome
Zona
Bianchi
Nord
Bruni
Centro
Neri
Centro
Rossi
Sud
Verdi
Isole
Le colonne Nome
e Zona di Agente
9
ESEMPIO DI INTERROGAZIONE
Elencare RagioneSociale, PartitaIVA e Provincia dei clienti che hanno come agente l’agente di
codice “Bia”
σP Cliente
1.
2.
Temp1 = Selezione di Cliente per IDAgente = “Bia”
IDCliente
RagioneSociale
Partita IVA
Provincia
IDAgente
Lami
Lamiere per Auto
04357839912
TO
Bia
Tond
Tondini metallici
05467833808
BS
Bia
Vite
Viteria lombarda
05567389302
MI
Bia
Vitp
Viteria di precisione
06443652006
MI
Bia
πL Temp1
σidAgente=“Bia” Cliente
Proiezione di Temp1 su RagioneSociale, PartitaIVA, Provincia
RagioneSociale
Partita IVA
Provincia
Lamiere per Auto
04357839912
TO
Tondini metallici
05467833808
BS
Viteria lombarda
05567389302
MI
Viteria di precisione
06443652006
MI
Interrogazione in algebra
relazionale
πRagioneSociale, PartitaIva, Provincia(Temp1)
πRagioneSociale, PartitaIva, Provincia (σ
idAgente=“Bia” Cliente)
10
CONGIUNZIONE R
PS
La congiunzione (join) tra R e S combina due tabelle generando una nuova tabella, le cui righe
contengono tutti gli attributi di R e di S, abbinando le sole righe di R e di S che soddisfano la
proprietà P
R
PS≡
σP ( R x S )
P nella maggior parte dei casi, consiste in una o
più condizioni del tipo: R.A = S.B dove A e B
sono attributi di R e, rispettivamente, di S.
Si parla di equi-join, indicati con: RA
SB
prodotto cartesiano tra R ed S,
combina tutte le righe di R con tutte
le righe di S, generando una tabella
priva di valore informativo
L’equi join più comune è quello che compone due tabelle con una condizione di
uguaglianza tra la chiave primaria di una tabella e una chiave esterna dell’altra: R.PK = S.FK
11
CONGIUNZIONE - ESEMPIO
Congiunzione di Cliente e Agente sul campo IDAgente con Cliente.IDAgente=Agente.IDAgente :
Cliente
IDAgente Agente
IDCliente
RagioneSociale
Partita IVA
Provincia
Cliente.IDAgente
Agente.IDAgente
Nome
Zona
Lami
Lamiere per Auto
04357839912
TO
Bia
Bia
Bianchi
Nord
Tond
Tondini metallici
05467833808
BS
Bia
Bia
Bianchi
Nord
Vite
Viteria lombarda
05567389302
MI
Bia
Bia
Bianchi
Nord
Vitp
Viteria di precisione
06443652006
MI
Bia
Bia
Bianchi
Nord
Levi
Levigatoria Toscana
01528120155
FI
Ner
Ner
Neri
Centro
Luci
Lucidatura Metalli
01572800164
RM
Ner
Ner
Neri
Centro
Meta
Metallurgia Emilia
01583315265
BO
Ner
Ner
Neri
Centro
Metb
Metalli Rari
01642877201
NA
Ros
Ros
Rossi
Sud
Otto
Ottonificio Pugliese
04687990657
BA
Ros
Ros
Rossi
Sud
Rame
Rame & Metalli
03568168943
PA
Ver
Ver
Verdi
Isole
La stessa informazione compare due volte perché
presente su tabelle diverse: in una è PK e nell’altra FK
12
CONGIUNZIONE – JOIN NATURALE
R
S
Join Naturale tra Cliente e Agente equi join sui campi con lo stesso nome
Clienti
Agenti
IDCliente
RagioneSociale
Partita IVA
Provincia
Cliente.IDAgente
Agente.IDAgente
Nome
Zona
Lami
Lamiere per Auto
04357839912
TO
Bia
Bia
Bianchi
Nord
Tond
Tondini metallici
05467833808
BS
Bia
Bia
Bianchi
Nord
Vite
Viteria lombarda
05567389302
MI
Bia
Bia
Bianchi
Nord
Vitp
Viteria di precisione
06443652006
MI
Bia
Bia
Bianchi
Nord
Levi
Levigatoria Toscana
01528120155
FI
Ner
Ner
Neri
Centro
Luci
Lucidatura Metalli
01572800164
RM
Ner
Ner
Neri
Centro
Meta
Metallurgia Emilia
01583315265
BO
Ner
Ner
Neri
Centro
Metb
Metalli Rari
01642877201
NA
Ros
Ros
Rossi
Sud
Otto
Ottonificio Pugliese
04687990657
BA
Ros
Ros
Rossi
Sud
Rame
Rame & Metalli
03568168943
PA
Ver
Ver
Verdi
Isole
13
ESEMPIO INTERROGAZIONI - 1
Elenco di tutti i clienti con RagioneSociale, PartitaIVA, Provincia e Nome del rispettivo agente
1. Cliente
IDAgente
Agente
Temp1 = Congiunzione di Cliente e Agente per Cliente.IDAgente = Agente.IDAgente
IDCliente
RagioneSociale
Partita IVA
Provincia
Cliente.IDAgente
Agente.IDAgente
Nome
Zona
Lami
Lamiere per Auto
04357839912
TO
Bia
Bia
Bianchi
Nord
Tond
Tondini metallici
05467833808
BS
Bia
Bia
Bianchi
Nord
Vite
Viteria lombarda
05567389302
MI
Bia
Bia
Bianchi
Nord
Vitp
Viteria di precisione
06443652006
MI
Bia
Bia
Bianchi
Nord
Levi
Levigatoria Toscana
01528120155
FI
Ner
Ner
Neri
Centro
Luci
Lucidatura Metalli
01572800164
RM
Ner
Ner
Neri
Centro
Meta
Metallurgia Emilia
01583315265
BO
Ner
Ner
Neri
Centro
Metb
Metalli Rari
01642877201
NA
Ros
Ros
Rossi
Sud
Otto
Ottonificio Pugliese
04687990657
BA
Ros
Ros
Rossi
Sud
Rame
Rame & Metalli
03568168943
PA
Ver
Ver
Verdi
Isole
14
ESEMPIO INTERROGAZIONI - 2
Elenco di tutti i clienti con RagioneSociale, PartitaIVA, Provincia e Nome del rispettivo agente
2.
πL Temp1
Proiezione di Temp1 su RagioneSociale, PartitaIVA, Provincia, Nome
RagioneSociale
Partita IVA
Provincia
Nome
Lamiere per Auto
04357839912
TO
Bianchi
Tondini metallici
05467833808
BS
Bianchi
Viteria lombarda
05567389302
MI
Bianchi
Viteria di precisione
06443652006
MI
Bianchi
Levigatoria Toscana
01528120155
FI
Neri
Lucidatura Metalli
01572800164
RM
Neri
Metallurgia Emilia
01583315265
BO
Neri
Metalli Rari
01642877201
NA
Rossi
Ottonificio Pugliese
04687990657
BA
Rossi
Rame & Metalli
03568168943
PA
Verdi
15
ESEMPIO INTERROGAZIONI - 1
Elenco delle ragioni sociali e del nome degli agenti per i clienti di Milano
1.
σP Cliente
2. Temp1
Temp1 = Selezione di Cliente per Provincia = “Mi”
IDCliente
RagioneSociale
Partita IVA
Provincia
Cliente.IDAgente
Vite
Viteria lombarda
05567389302
MI
Bia
Vitp
Viteria di precisione
06443652006
MI
Bia
Agente
IDAgente
Temp2 = Congiunzione di Temp1 e Agente per Cliente.IDAgente = Agente.IDAgente
IDCliente
RagioneSociale
Partita IVA
Provincia
Cliente.IDAgente
Agente.IDAgente
Nome
Zona
Vite
Viteria lombarda
05567389302
MI
Bia
Bia
Bianchi
Nord
Vitp
Viteria di precisione
06443652006
MI
Bia
Bia
Bianchi
Nord
16
ESEMPIO INTERROGAZIONI - 2
Elenco delle ragioni sociali e del nome degli agenti per i clienti di Milano
3.
πL Temp2
Proiezione di Temp2 su RagioneSociale, Nome
RagioneSociale
Nome
Viteria lombarda
Bianchi
Viteria di precisione
Bianchi
17
OPERAZIONI INSIEMISTICHE
Per tabelle con struttura omogenea, cioè righe con lo stesso numero di attributi, dello stesso
tipo e nello stesso ordine
R
S
Unione
R∪S
Intersezione
R∩S
Differenza
R - S
18
OPERAZIONI INSIEMISTICHE - UNIONE
L’unione consente di ottenere una nuova tabella, che contiene le righe della prima e della
seconda tabella, escludendo le righe ripetute.
19
OPERAZIONI INSIEMISTICHE - INTERSEZIONE
L’intersezione genera, a partire da due tabelle omogenee, una nuova tabella che contiene
soltanto le righe comuni.
20
OPERAZIONI INSIEMISTICHE - DIFFERENZA
Elencare gli agenti ai quali non è stato assegnato alcun cliente.
La soluzione nasce dalla seguente osservazione:
I codici degli agenti senza clienti sono quelli che compaiono nella colonna IDAgente di Agente,
ma non si trovano nella colonna IDAgente della tabella Cliente. Pertanto in pseudocodifica si ha
la seguente sequenza di operazioni:
πL Agenti
2. πL Clienti
Temp1 = Proiezione di Agente su IDAgente
3. Temp1 – Temp2
Temp3 = Differenza tra Temp1 e Temp2
1.
Temp2 = Proiezione di Cliente su IDAgente
Se, oltre al codice, si desidera anche il nome degli agenti senza clienti, la sequenza di operazioni deve proseguire con:
4. Temp3
5.
πL Temp4
IDAgente
Agente
Temp4 = Congiunzione di Temp3 e Agente su IDAgente
Proiezione di Temp4 su IDAgente, Nome.
21
ESEMPI INTERROGAZIONI
Rivista
CodRiv {PK}
Titolo
Periodicità
Prezzo
1
N
Essere
oggetto
Abbonamento
ID
Data
N
1
Sottoscrivere
{PK}
Abbonato
CodAbb {PK}
Cognome
Nome
Indirizzo
Città
SCHEMA LOGICO
Rivista ( CodRiv, Titolo, Periodicità, Prezzo )
Abbonato ( CodAbb, Cognome, Nome, Indirizzo, Città )
Abbonamento ( ID, Data, CodRiv, CodAbb)
22
ESEMPI INTERROGAZIONI - 1
SCHEMA LOGICO
Rivista ( CodRiv, Titolo, Periodicità, Prezzo )
Abbonato ( CodAbb, Cognome, Nome, Indirizzo, Città )
Abbonamento ( ID, Data, CodRiv, CodAbb)
Città di residenza degli abbonati a una rivista di cui si conosce il codice
1.
Temp1 = Selezione di Abbonamento per CodRiv = “xx”
2.
Temp2 = Congiunzione di Temp1 e Abbonato su CodAbb
3.
Proiezione di Temp2 su Città
πCittà ( ( σCodRiv = “xx” Abbonamento )
CodAbb Abbonato)
23
ESEMPI INTERROGAZIONI - 2
SCHEMA LOGICO
Rivista ( CodRiv, Titolo, Periodicità, Prezzo )
Abbonato ( CodAbb, Cognome, Nome, Indirizzo, Città )
Abbonamento ( ID, Data, CodRiv, CodAbb)
Titolo e prezzo dell’abbonamento di tutte le riviste
1.
Proiezione di Rivista su Titolo, Prezzo
Titolo e periodicità delle riviste con prezzo dell’abbonamento superiore a una cifra prefissata
1.
Temp1 = Selezione di Rivista per Prezzo > x
2.
Proiezione di Temp1 su Titolo, Periodicità
24
ESEMPI INTERROGAZIONI - 3
SCHEMA LOGICO
Rivista ( CodRiv, Titolo, Periodicità, Prezzo )
Abbonato ( CodAbb, Cognome, Nome,Indirizzo, Città )
Abbonamento ( ID, Data, CodRiv, CodAbb)
Cognome degli abbonati che hanno sottoscritto un abbonamento a una qualsiasi rivista, nel
primo trimestre dell’anno 2023
1.
Temp1 = Selezione di Abbonamento per Data >= 1/1/2023 And Data <= 31/3/2023
2.
Temp2 = Congiunzione di Temp1 e Abbonato su CodAbb
3.
Proiezione di Temp2 su Cognome
Volendo la congiunzione
può essere eseguita
prima della selezione25
ESEMPI INTERROGAZIONI - 4
SCHEMA LOGICO
Rivista ( CodRiv, Titolo, Periodicità, Prezzo )
Abbonato ( CodAbb, Cognome, Nome, Indirizzo, Città )
Abbonamento ( ID, Data, CodRiv, CodAbb)
Cognome e codice abbonato degli abbonati alla rivista “Quattroruote”
1.
Temp1 = Selezione di Rivista Titolo = “Quattroruote”
2.
Temp2 = Congiunzione di Temp1 e Abbonamento su CodRiv
3.
Temp3 = Congiunzione di Temp2 e Abbonato su CodAbb
4.
Proiezione di Temp3 su Cognome, CodAbb
Volendo la congiunzione
può essere eseguita
prima della selezione
26
TIPOLOGIA DI JOIN
Join interno
Join esterno
• Equi join e join naturale
• Si possono perdere
informazioni
• Ad esempio non è possibile
ricavare clienti senza agenti
o con codice errato oppure
agenti senza clienti
• E’ una congiunzione che
restituisce tutte le righe di R
o di S anche in assenza di
valori uguali per gli attributi
comuni
• Recuperano informazioni
perse
• Utili per risolvere problemi
su informazioni mancanti
27
JOIN ESTERNI – LEFT JOIN
R Left join S elenca tutte le righe di R; le righe di R senza corrispondenti in S sono completate
con valori nulli.
IDCliente
RagioneSociale
Partita IVA
Provincia
Cliente.IDAgente
Agente.IDAgente
Nome
Zona
Lami
Lamiere per Auto
04357839912
TO
Bia
Bia
Bianchi
Nord
Tond
Tondini metallici
05467833808
BS
Bia
Bia
Bianchi
Nord
Vite
Viteria lombarda
05567389302
MI
Bia
Bia
Bianchi
Nord
Vitp
Viteria di precisione
06443652006
MI
Bia
Bia
Bianchi
Nord
Prome
Prodotti Metallici
05332518672
BG
Gia
Levi
Levigatoria Toscana
01528120155
FI
Ner
Ner
Neri
Centro
Luci
Lucidatura Metalli
01572800164
RM
Ner
Ner
Neri
Centro
Meta
Metallurgia Emilia
01583315265
BO
Ner
Ner
Neri
Centro
Metb
Metalli Rari
01642877201
NA
Ros
Ros
Rossi
Sud
Otto
Ottonificio Pugliese
04687990657
BA
Ros
Ros
Rossi
Sud
Rame
Rame & Metalli
03568168943
PA
Ver
Ver
Verdi
Isole
Campo di cliente
che non trova
corrispondente
nella tabella
Agente perché
non esiste
28
JOIN ESTERNI – RIGHT JOIN
R Right join S elenca tutte le righe di S; le righe di S senza corrispondenti in R sono completate
con valori nulli.
IDCliente
RagioneSociale
Partita IVA
Provincia
Cliente.IDAgente
Agente.IDAgente
Nome
Zona
Lami
Lamiere per Auto
04357839912
TO
Bia
Bia
Bianchi
Nord
Tond
Tondini metallici
05467833808
BS
Bia
Bia
Bianchi
Nord
Vite
Viteria lombarda
05567389302
MI
Bia
Bia
Bianchi
Nord
Vitp
Viteria di precisione
06443652006
MI
Bia
Bia
Bianchi
Nord
Bru
Bruni
Centro
Levi
Levigatoria Toscana
01528120155
FI
Ner
Ner
Neri
Centro
Luci
Lucidatura Metalli
01572800164
RM
Ner
Ner
Neri
Centro
Meta
Metallurgia Emilia
01583315265
BO
Ner
Ner
Neri
Centro
Metb
Metalli Rari
01642877201
NA
Ros
Ros
Rossi
Sud
Otto
Ottonificio Pugliese
04687990657
BA
Ros
Ros
Rossi
Sud
Rame
Rame & Metalli
03568168943
PA
Ver
Ver
Verdi
Isole
Agenti che non
hanno ancora
clienti abbinati e
quindi non trovano
corrispondenza in
clienti
29
PROBLEMI DI ASSENZA - ESEMPI
Clienti senza agenti corrispondenti
1.
2.
Temp1 = Cliente Left Join Agente su IDAgente
Selezione di Temp1 per Agente.IDAgente Nullo
IDCliente
RagioneSociale
Partita IVA
Provincia
Cliente.IDAgente
Prome
Prodotti Metallici
05332518672
BG
Gia
Agente.IDAgente
Nome
Zona
Agenti senza corrispondenti clienti
1. Temp1 = Agente Right Join Cliente su IDAgente
2. Selezione di Temp1 per Cliente.IDAgente Nullo
IDCliente
RagioneSociale
Partita IVA
Provincia
Cliente.IDAgente
Agente.IDAgente
Nome
Zona
Bru
Bruni
Centro
30
FULL JOIN
Full join tra R ed S elenca tutte le righe di R e di S. Le righe senza corrispondenti di R o di S
sono completate con valori nulli
R Full join S = R Left join S ∪ R Right join S
non è sempre implementato nei DBMS perché
restituisce un risultato molto vasto
31
SELF JOIN
Si parla di self join quando si combinano le righe di una tabella con le righe della tabella stessa.
Si presentano con le tabelle derivate da associazioni ricorsive
32
SELF JOIN - ESEMPIO
Nome, Cognome del capo di Bianchi
1. TEMP 1 = Dipendente Join Dipendente_1 su Dipendente.MatSupervisore = Dipendente_1.Matricola
2. TEMP 2 = Selezione di TEMP 1 per Dipendente.Cognome = “Bianchi”
3. Proiezione di TEMP 2 sui campi Dipendente_1.Nome, Dipendente_1.Cognome
33
Related documents
Download