Diapositiva 1

Download Report

Transcript Diapositiva 1

Sistemi per il recupero delle informazioni
PARTE - V
MODELLO RELAZIONALE DEI DATI
1
PROGETTAZIONE

Ricordiamo le fasi della progettazione di una Base di Dati

Ci occuperemo adesso della progettazione logica
2
PROGETTAZIONE LOGICA

La descrizione del modello da realizzare è fatta in funzione delle
caratteristiche del SGBD che sarà utilizzato (il modello dei dati, il linguaggio
per sviluppare le applicazioni).

Il modello dei dati, detto modello
rappresentazione informatica dei dati.

Vedremo l’uso del Modello dei Dati Relazionale. Lo schema risultante è
detto schema relazionale, ed è rappresentato con un formalismo testuale.
 è un modello dei dati “compreso” dal SGBD
 si ottiene con una traduzione dello schema E-R
logico,
è
“più
vicino”
alla
3
ESEMPIO
4
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)
5
INTRODUZIONE
Il modello relazionale dei dati, proposto nel 1970 ed adottato nei sistemi
commerciali a partire dal 1978, si è diffuso rapidamente tanto sui sistemi centrali
quanto sugli elaboratori personali.
I meccanismi per definire una base di dati con il modello relazionale sono
solo due:
• l’ennupla
• la relazione.
6
ENNUPLA E RELAZIONE
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).
Si tenga presente che non si possono rappresentare proprietà strutturate, o
multivalore e vedremo più avanti come risolvere questi problemi di
rappresentazione.
Un’ennupla si usa per rappresentare entità e la relazione si usa per
rappresentare classi di entità.
7
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)
 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
L’ordine degli attributi non è significativo
8
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)
 Lo schema relazionale è la descrizione della struttura di una base di
dati
 insieme di schemi di relazione
9
 insieme di vincoli
RAPPRESENTAZIONE GRAFICA - I
PERSONE(CodFiscale,Nome,Telefono)
o più accuratamente
PERSONE(CodFiscale:string(16),Nome:string(30), Telefono: optional integer)
L’attributo sottolineato è la chiave primaria
10
RAPPRESENTAZIONE GRAFICA - II

Una (istanza della) relazione Persone, conforme a tale schema, è ad es. la
seguente:

E’ d’uso visualizzare una relazione come una tabella bidimensionale,
con le colonne identificate dagli attributi e le righe contenenti i valori
dei campi, nell’ordine indicato dall’intestazione delle colonne.
La proprietà di essere chiave è riferita allo schema piuttosto che ad una
particolare tabella: una chiave è tale (identifica le righe) in una qualunque
istanza di un determinato schema.

11
TIPI
Due relazioni hanno lo stesso tipo se hanno uguali il numero degli attributi,
gli attributi e il tipo degli attributi con lo stesso nome.
Impiegati(Matricola :string,
Cognome :string,
AnnoNascita :integer,
Provincia :string)
stesso
tipo
Studenti( Cognome :string,
Matricola :string,
Provincia :string,
AnnoNascita :integer)
tipo diverso
Docenti( Cognome :string,
Matricola :integer,
Provincia :string,
AnnoNascita :integer)
Docenti ha tipo diverso perché Matricola è di tipo intero e non stringa.
12
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
13
ESEMPIO - I

Consideriamo l’associazione SEGUE tra STUDENTI e CDS (Corso di
Studi).
STUDENTI(Nome:string, Matricola: string, Provincia: string,
AnnoNascita:int, SiglaCDS*: string)
CDS(SiglaCDS: string, NomeCDS: string, Tipo: string)

Il fatto che un corso di studi è associato ad uno studente si modella
prevedendo nello schema della relazione STUDENTI un campo che
assume come valori la chiave primaria di CDS, cioè SiglaCDS.
SiglaCdS* è chiave esterna nella relazione STUDENTI, e serve a
rappresentare un’associazione univoca da STUDENTI a CdS

14
ESEMPIO - II
15
ESEMPIO - III



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:
16
DA MODELLO A OGGETTI A MODELLO
RELAZIONALE - I
Data una descrizione di una base di dati con i meccanismi di astrazione del
modello a oggetti, la sua trasformazione con il modello relazionale è alquanto
laboriosa perché bisogna trattare
• la descrizione delle associazioni
• la descrizione delle gerarchie di classi
• le eventuali proprietà strutturate e multivalore e passare ad una loro
descrizione con attributi atomici.
Inoltre, essendo il modello relazionale meno espressivo del modello a oggetti, in
generale si può procedere in più modi nella trasformazione e la scelta fra
possibili alternative va fatta cercando di ottimizzare lo spazio di memoria
occupata dalla base di dati e le prestazioni delle applicazioni.
17
DA MODELLO A OGGETTI A MODELLO
RELAZIONALE - II
Nella conversione di uno schema espresso con il modello a oggetti gli obiettivi
da perseguire sono:
1.
2.
3.
rappresentare le stesse informazioni;
minimizzare la ridondanza;
agevolare il recupero dei dati in relazione.
In generale nella conversione occorre duplicare delle informazioni e non si
possono sempre rappresentare direttamente tutti i vincoli imposti dai
meccanismi del modello a oggetti.
Per garantire la coerenza dei dati duplicati, e il rispetto dei vincoli non esprimibili
nel modello relazionale, occorre quindi definire opportunamente le operazioni
che modificano la base di dati.
18
DA MODELLO A OGGETTI A MODELLO
RELAZIONALE - III
La trasformazione di uno schema a oggetti in uno schema relazionale avviene
eseguendo i seguenti passi:
1.
2.
3.
4.
5.
6.
rappresentazione delle classi
rappresentazione delle associazioni uno a uno e uno a molti;
rappresentazione delle associazioni molti a molti o non binarie;
rappresentazione delle gerarchie di inclusione;
rappresentazione degli attributi multivalore;
appiattimento gli attributi composti
19
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)
20
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.
21
ESEMPIO - I
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!
22
ESEMPIO - II
Se l’associazione è 1 a 1, cioè univoca in entrambi i versi, allora sono corrette
entrambe le soluzioni.
Dipartimenti(Nome, Facoltà, Cod*)
Docenti(Cod, Settore)
o
Dipartimenti(Nome, Facoltà)
Docenti(Cod, Settore, Nome*)

La prima soluzione è migliore, ma entrambe sono corrette
23
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.
24
ESEMPIO - I
CorsidiLa(Codice,Nome,Facoltà,Tipo)
Docenti(CodDoc, Settore)
Insegna(Codice*, CodDoc*)
Una ennupla di Insegna rappresenta una coppia (Corso_di_Lurea, Docente) di
oggetti in associazione.
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...
25
ESEMPIO - II
CorsidiLa(Codice,Nome,Facoltà,Tipo)
Docenti(CodDoc, Settore)
Insegna(Codice*, CodDoc*, NumIns)
26
4. Rappresentazione delle gerarchie fra classi
Sia data una classe A con due sottoclassi B e C, tali che i tipi associati
alle tre classi abbiano, rispettivamente, attributi (XA), (XA XB) e (XA
XC), e sia KA la chiave primaria di A.
Nel modello relazionale vi sono almeno tre modi diversi di rappresentare questa
situazione:
1.
Relazione unica
2.
Partizionamento verticale
3.
Partizionamento
27
4. Rappresentazione delle gerarchie fra classi
Relazione unica
Si definisce un’unica relazione con attributi (XA XB XC D) che raccoglie
tutti gli elementi delle tre classi; gli attributi XB e XC possono
assumere il valore nullo, e l’attributo D serve a indicare la classe a cui
appartiene l’elemento.
ESEMPIO: Consideriamo la classe Persone con attributi CF, Nome e Tel e due
sottoclassi: Studenti, con attributi Matricola e Facoltà, e Lavoratori, con
attributi Attività e Reddito
Secondo la relazione unica definiremo un’unica relazione Persone con tutti
gli attributi
Persone(CF, Nome, Tel, Matricola, Facoltà, Attività e Reddito)
28
ESEMPIO

Un solo schema di relazione, che contiene tutti gli attributi
Con questa soluzione viene ignorata la gerarchia: si perdono le sottoclassi
29
4. Rappresentazione delle gerarchie fra classi
Partizionamento verticale
Si definiscono tre relazioni RA(XA), RB(KA*, XB), RC(KA*, XC), dove RA
contiene tutti gli elementi della classe A, anche se stanno in qualche
sottoclasse, mentre RB ed RC contengono solo quegli attributi, degli
elementi di B e di C, che non sono in XA (attributi propri delle
sottoclassi), ed una chiave esterna KA* che permette di ritrovare in RA
il valore degli altri attributi.
ESEMPIO si definiscono le relazioni Persone, con attributi CodFisc, Nome e
Tel, Studenti con attributi CodFisc, Matricola e Facoltà e la relazione
Lavoratoricon attributi CodFisc, Attività e Reddito. La relazione Persone
contiene il codice fiscale il nome ed il telefono di tutte le persone, mentre le
altre due relazioni contengono gli attributi propri delle sottoclassi, nonché il
codice fiscale, che permette di risalire al nome;
Persone(CodFisc, Nome, Telefono)
Lavoratori(CodFisc*, Attività, Reddito)
Studenti(CodFisc*, Matricola, Facoltà)
30
ESEMPIO
Persone(CodFisc, Nome, Telefono)
Lavoratori(CodFisc*, Attività, Reddito)
Studenti(CodFisc*, Matricola, Facoltà)
31
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à)
32
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à
33
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)
34
ESEMPIO
Film(CodFilm,Titolo,Regista,Anno)
Attori(CodFilm*, Attore)
35
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à)
36
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
37
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)
38
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)
39
La Conoscenza Astratta nel modello
Relazionale

Rispetto al modello E-R, non è possibile rappresentare i vincoli delle
gerarchie, mentre è possibile, solo in parte, rappresentare i vincoli strutturali
delle associazioni
Questo schema E-R si traduce nello schema relazionale
S(h, a, k*)
T(k, b)
che rappresenta l’univocità e la totalità di R da S a T, ma non consente di
esprimere la sua totalità da T ad S.
40
Sistemi per il recupero delle informazioni
PARTE - VI
ALGEBRA RELAZIONALE: operazioni
41
BASE DI DATI
Una base di dati può essere utilizzata con due modalità:
 interattivamente: l’utente interagisce direttamente con la base di
dati. I calcolatori personali hanno fatto grandi progressi in questa
direzione, e l’impiego di terminali grafici ha liberato gli utenti dalla
dipendenza dal linguaggio di programmazione per generare resoconti
e statistiche, a partire dai dati memorizzati
 mediante programmi: accesso ai dati da programmi scritti in un
linguaggio di programmazione.
42
LINGUAGGI RELAZIONALI
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.
43
ESEMPI DI QUERY
NOME
Mario Rossi
MATRICOL
123456
INDIRIZZO
Via Etnea 1
TELEFONO
222222
Ugo Bianchi
234567
Via Roma 2
333333
Teo Verdi
345678
Via Enna 3
444444
CORSO
Programmazione
Architetture
Matematica Discreta
CORSO
Programmazione
Architetture
Programmazione
Matematica
Discreta
Architettura
MATRICOLA
345678
123456
234567
345678
VOTO
27
30
18
22
345678
30
PROFESSORE
Ferro
Pappalardo
Lizzio
PROFESSORE CORSO
Programmazione Ferro
Architetture
Pappalardo
Quali Professori hanno
dato piu' di 24 a Teo
Verdi ed in quali corsi?
44
OPERATORI FONDAMENTALI

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
45
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: AA’ (R)
ESAMI
Corso
Programmazione
EINN
Matricola
123456
23456
Voto
27
28
ESEMPIO
MatricolaCodice Studente(Esami)
ESAMI
Corso
Programmazione
EINN
Codice Studente
123456
23456
Voto
27
28
46
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
47
UNIONE, INTERSEZIONE, DIFFERENZA

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
 R S
 RS
 R-S
48
ESEMPIO DI UNIONE
49
ESEMPIO DI INTERSEZIONE
50
ESEMPIO DI DIFFERENZA
51
ESEMPIO: UNIONE?
Maternità
Madre
???


“Paternita’” e “Maternità” sono attributi con nomi diversi ma entrambi sono
“Genitori”
Soluzione: ridenominare gli attributi
52
ESEMPIO: RIDENOMINAZIONE E UNIONE
53
PROIEZIONE

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:

La cardinalità di Y(R), cioè il numero degli elementi che lo compongono,
puo’ essere minore di R nel caso di duplicati
Y(R)
54
ESEMPIO PROIEZIONE
per tutti gli impiegati:
• matricola e cognome

Si riduce la cardinalita’ del risultato rispetto all’operando
55
RESTRIZIONE (O SELEZIONE)

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)
56
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
57
PRODOTTO

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:

Se R ha n elementi ed S ne ha m il prodotto ne ha m*n
RxS
58
ESEMPIO DI PRODOTTO
59
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
60
ESEMPIO - I

join completo: ogni ennupla contribuisce al risultato
61
ESEMPIO - II

Join non completo: alcuni valori tra gli attributi comuni non
coincidono, quindi, alcune ennuple non partecipano al JOIN
62
ESEMPIO - III

Join vuoto: caso limite
 potrebbe anche succedere che nessuna ennupla trovi il
corrispettivo
63
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’
64
Prodotto cartesiano a partire dal
JOIN



Il JOIN e’ definito anche se non ci sono attributi comuni fra le relazioni
In questo caso, non essendoci vincoli sulle ennuple da selezionare,
vengono selezionate tutte le ennuple dalle relazioni del JOIN
 Prodotto cartesiano
65
Query (interrogazioni)


L’algebra relazionale puo’ quindi essere usata per interrogare una
base di dati
Una query e’ una funzione da una istanza di un database (insieme di
relazioni) ad una relazione
66