Linguaggi per basi di dati ALGEBRA RELAZIONALE. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Documenti analoghi
Linguaggi per basi di dati

Dichiarativi : specificano le proprietà del risultato ("che cosa") Procedurali specificano le modalità di generazione del risultato ("come")

Parte III. L algebra relazionale

Parte III L algebra relazionale

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, ALGEBRA E CALCOLO RELAZIONALE

Linguaggi per basi di dati e SQL

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Linguaggi per basi di dati. Interrogazione delle basi di dati. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Join. il Join è l'operatore più interessante dell'algebra relazionale permette di correlare dati in relazioni diverse 20/03/2006 1

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi

Operatori derivati dagli insiemi

Linguaggi per basi di dati. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi

E. Giunchiglia Basi di dati 1 (trasparenze basate su Atzeni, Ceri, Paraboschi, Torlone: Basi di dati, Capitolo 3)

Modulo 2 Data Base 3

ALGEBRA RELAZIONALE (CAPITOLO 3) R. Basili a.a

ALGEBRA RELAZIONALE (CAPITOLO 3) R. Basili a.a

Linguaggi per basi di dati. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw -Hill, ALGEBRA E CALCOLO RELAZIONALE

Esempi. Supervisione Impiegato Capo /10/2017 Atzeni-Ceri-Fraternali-Paraboschi-Torlone Basi di dati, Capitolo 3

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a

Equivalenze di espressioni. Equivalenze. Equivalenze. Atomizzazione delle selezioni ( F 2 (E)) Idempotenza delle proiezioni

Basi di dati: esercitazione. Paolo Atzeni 10/05/2006

Aggiornamenti e Interrogazioni

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica I Modulo Basi di dati a.a

Interrogazioni (Query) Esempi. Esempi. Esempi

Basi di dati Algebra relazionale Figure ed esempi

Il theta-join, espresso come prodotto cartesiano seguito da una selezione, è il tipo di join operativamente più generale. Infatti:

ALGEBRA RELAZIONALE Esercizi con RelaX. 21/10/2017 Atzeni - Algebra relazionale - RelaX 1

Linguaggi per basi di da6. Linguaggi di interrogazione. Algebra relazionale. Operatori dell'algebra relazionale

Algebra Relazionale. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

3 Algebra Relazionale

Università di Roma La Sapienza Laurea in Ingegneria Informatica. Basi di Dati. Anno Accademico 2003/2004 Canale M-Z.

Basi di dati. Giuseppe De Giacomo. Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma

Linguaggi per Basi di Dati - 1. Algebra Relazionale. Algebra Relazionale. Linguaggi per Basi di Dati - 2. Operatori Insiemistici.

Elementi di Informatica LB Basi di Dati. Anno accademico 2007/2008 Prof. Stefano Contadini

Tipi di operatori. Gli operatori dell algebra relazionale sono classificabili nelle seguenti categorie:

Basi di dati ALGEBRA E CALCOLO RELAZIONALE

Lezione 5. Algebra relazionale

Basi di dati. Modello relazionale dei dati. Prof.ssa Rosalba Giugno

Corso di Informatica

Corso di Informatica

Basi di dati Maurizio Lenzerini Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza

ALGEBRA RELAZIONALE. Linguaggi di interrogazione relazionale

Accesso ai dati di un DB. Algebra relazionale. Accesso ai dati di un DB. Algebra relazionale

Basi di dati. Maurizio Lenzerini Dipartimento di Ingegneria Informatica Automatica e Gestionale Antonio Ruberti Università di Roma La Sapienza

Architettura standard (ANSI/SPARC) a tre livelli per DBMS. Viste (relazioni derivate) Viste virtuali e materializzate. Viste materializzate

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica I Modulo Basi di dati a.a

Linguaggi per basi di dati

Viste (relazioni derivate)

Linguaggi per basi di dati. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,

Viste come strumenti di programmazione

Linguaggi di interrogazione

Algebra Relazionale.

L algebra relazionale in RA

Algebra Relazionale.

Structured Query Language

Algebra e Calcolo relazionale. Algebra e calcolo relazionale (parte 2)

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale.

ALGEBRA RELAZIONALE. DB -Algebra Relazionale 1

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida

Basi di dati. Linguaggi di interrogazione

Corso di Basi di Dati

Equivalenza di Espressioni Algebriche

Lezione 6. Algebra e Calcolo Relazionale

Corso di. Basi di Dati I. 4. Algebra relazionale

ALGEBRA'RELAZIONALE'

Informatica II Basi di Dati (07/08) Parte 2. 4 Accesso ai dati di un DB. Accesso ai dati di un DB. Accesso ai dati di un DB

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Operatori di base. σ F (r) = {t t r. F(t) = true} SELEZIONE σ F (r)

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Interpretazione delle query nidificate

Fondamenti di Teoria delle Basi di Dati

SQL QUERY: Le interrogazioni del database

SQL - Structured Query Language

Progettazione logica D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/2013

Correttezza. Esempi di TRC. AR è esprimibile tramite TRC. AR è esprimibile tramite TRC. AR è esprimibile tramite TRC

L algebra relazionale

Algebra Relazionale. Dario Allegra Data Management 1 1

BASI DATI: algebra relazionale INFORMATICA APPLICATA E SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

L algebra relazionale

DOCENTE PROF. ALBERTO BELUSSI. Anno accademico 2010/11

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Algebra relazionale (versione formale )

Esercitazione 1. ogni tupla contribuisce al risultato: Impiegato Reparto Rossi. Bruni. Bianchi

Scopo. Informatica. Sistema informativo. Sistema informatico

Algebra e Calcolo relazionale. Algebra e calcolo relazionale (parte 1)

ALGEBRA RELAZIONALE ALGEBRA RELAZIONALE

Linguaggi di interrogazione per basi di dati relazionali

Basi di dati e Relazioni

Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL

ALGEBRA RELAZIONALE. Patrizio Dazzi a.a

Scopo Laboratorio di Informatica

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY)

L algebra relazionale

Basi di dati. 2. Il modello relazionale. Il modello relazionale. Relazione: tre accezioni. 2.1 Basi di dati relazionali. Giuseppe De Giacomo

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

BASI DATI: algebra relazionale

Transcript:

Linguaggi per basi di dati Capitolo 3: LGER RELZIONLE operazioni sullo schema DDL: data definition language operazioni sui dati DML: data manipulation language interrogazione ("query") aggiornamento 1 2 Linguaggi di interrogazione per basi di dati relazionali Dichiarativi specificano le proprietà del risultato ("che cosa") Procedurali specificano le modalità di generazione del risultato ("come") Linguaggi di interrogazione lgebra relazionale: procedurale Calcolo relazionale: dichiarativo (teorico) SQL (Structured Query Language): parzialmente dichiarativo (reale) QE (Query by Example): dichiarativo (reale) 3 4 1

lgebra relazionale Insieme di operatori con 3 caratteristiche: definito su relazioni producono relazioni possono essere composti l algebra è chiusa 5 lgebra relazionale: linguaggio procedurale costituito da un insieme di operatori definiti su relazioni Operazioni di base Selezione (σ) Seleziona un sottoinsieme di righe della relazione Proiezione (π) Cancella righe non desiderate dalla relazione Prodotto cartesiano ( ) Consente di combinare due relazioni Differenza insiemistica ( ) Tuple presenti nella relazione 1, ma non nella relazione 2 Unione ( ) Tuple presenti nella relazione 1 e nella relazione 2 ltre operazioni: intersezione, join, divisione, ridenominazione: non essenziali ma (molto!) utili Poiché ogni operazione restituisce una relazione, le operazioni possono essere composte (l algebra è chiusa ) 6 Operatori dell'algebra relazionale unione, intersezione, differenza ridenominazione selezione monadici proiezione join (join naturale, prodotto cartesiano, theta-join) Operatori insiemistici le relazioni sono insiemi i risultati debbono essere relazioni è possibile applicare unione, intersezione, differenza solo a relazioni definite sugli stessi attributi 7 8 2

Laureati Matricola 7274 Nome Età 42 7432 9824 Neri Verdi 54 45 Unione Laureati Quadri Quadri Matricola 9297 7432 9824 Matricola Nome Età 7274 42 7432 Neri 54 9824 Verdi 45 9297 Neri 33 Nome Neri Neri Verdi Età 33 54 45 9 Intersezione Laureati Matricola 7274 Nome Età 42 Quadri Matricola 9297 Nome Neri Età 33 7432 Neri 54 7432 Neri 54 9824 Verdi 45 9824 Verdi 45 Laureati Quadri Matricola Nome Età 7432 Neri 54 9824 Verdi 45 10 Differenza Un unione sensata ma impossibile Laureati Matricola Nome Età 7274 42 7432 Neri 54 9824 Verdi 45 Laureati Quadri Quadri Matricola 9297 7432 9824 Nome Neri Neri Verdi Età 33 54 45 Paternità Padre damo damo bramo Figlio bele Caino Isacco Maternità Madre Eva Eva Sara Figlio bele Set Isacco Matricola Nome Età 7274 42 7432 Neri 54 9824 Verdi 45 Paternità Maternità?? 11 12 3

Ridenominazione operatore monadico (con un argomento) "modifica lo schema" lasciando inalterata l'istanza dell'operando Operatore di Ridenominazione (ρ REN) Sia r una relazione definita sull insieme di attributi X e sia Y un (altro) insieme di attributi con la stessa cardinalità. Siano 1 2... k ed 1 2... k rispettivamente un ordinamento per gli attributi in X ed Y allora la RIDENOMINZIONE ρ 12..k -> 12..k (r) Contiene una tupla t per ciascuna tupla t in r tale che t [ i ]=t[ i ] i=1,...,n 13 14 Operatore di Ridenominazione2 (ρ REN) La RIDENOMINZIONE modifica solamente il nome degli attributi agendo sullo schema della relazione e lasciando inalterata la sua istanza ρ (R(F),E) R=nome nuovo, E relazione F lista di ridenominazione : posizione nuovonome nuovonome vecchionome Paternità Padre damo damo bramo Figlio bele Caino Isacco REN Genitore Padre (Paternità) Genitore Padre Figlio damo bele damo Caino bramo Isacco 15 16 4

Paternità Padre damo damo bramo Maternità Madre Eva Eva Sara Figlio bele Caino Isacco Figlio bele Set Isacco REN Genitore Padre (Paternità) Genitore Figlio damo bele damo Caino bramo Isacco REN Genitore Madre (Maternità) Genitore Figlio Eva bele Eva Set Sara Isacco REN Genitore Padre (Paternità) Genitore Figlio damo bele damo Caino bramo Isacco REN Genitore Madre (Maternità) Genitore Figlio Eva bele Eva Set Sara Isacco REN Genitore Padre (Paternità) REN Genitore Madre (Maternità) Genitore Figlio damo bele damo Caino bramo Isacco Eva bele Eva Set Sara Isacco 17 18 Impiegati Cognome Ufficio Roma Stipendio 55 Neri Milano 64 Operai Cognome runi Fabbrica Monza Salario 45 Verdi Latina 55 REN Sede, Retribuzione Ufficio, Stipendio (Impiegati) REN Sede, Retribuzione Fabbrica, Salario (Operai) Cognome Neri runi Verdi Sede Roma Milano Monza Latina Retribuzione 55 64 45 55 19 Selezione operatore monadico produce un risultato che ha lo stesso schema dell'operando contiene un sottoinsieme delle ennuple dell'operando, quelle che soddisfano una condizione 20 5

Impiegati Matricola 7309 5998 9553 5698 Cognome Filiale Stipendio Roma 55 Neri Milano 64 Milano Milano 44 Neri Napoli 64 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 SEL Condizione (Operando) Condizione: espressione booleana (come quelle dei vincoli di ennupla) semantica il risultato contiene le ennuple dell'operando che soddisfano la condizione 21 22 Formula proposizionale Operatore di Selezione (σ) σ F (r) Formula proposizionale F su X è una formula booleana (,٨,٧) di termini T. Dove T e definito come: attr op attr o attr op c op è un operatore di confronto (=,,,,<,>); sid 0012 0072 0033 nome Verdi ianchi σ eta =18 (S) sid 0012 0033 nome ianchi login ro@ec bi@ec bi@tt login ro@ec bi@tt età 18 19 18 età 18 18 gpa 3.4 3.2 3.8 gpa 3.4 3.8 S impiegati che guadagnano più di 50 Impiegati SEL Stipendio > 50 (Impiegati) Matricola Cognome Filiale Stipendio 7309 Roma 55 5998 Neri Milano 64 9553 5698 Milano Neri Milano Napoli 44 64 5698 Neri Napoli 64 SEL Stipendio > 50 (Impiegati) Produce una relazione avente lo stesso schema di r e contenente le tuple di r per le quali F e vera 23 24 6

impiegati che guadagnano più di 50 e lavorano a Milano impiegati che hanno lo stesso nome della filiale presso cui lavorano SEL Impiegati Stipendio > 50 ND Filiale = 'Milano' (Impiegati) Matricola Cognome Filiale Stipendio 7309 5998 Neri Milano Roma 55 64 5998 Neri Milano 64 9553 Milano Milano 44 5698 Neri Napoli 64 SEL Stipendio > 50 ND Filiale = 'Milano' (Impiegati) Impiegati SEL Cognome = Filiale (Impiegati) Matricola Cognome Filiale Stipendio 7309 9553 Milano Milano Roma 55 44 5998 Neri Milano 64 9553 Milano Milano 44 5698 Neri Napoli 64 SEL Cognome = Filiale (Impiegati) 25 26 Selezione e proiezione operatori "ortogonali" selezione: decomposizione orizzontale proiezione: decomposizione verticale proiezione selezione 27 28 7

Proiezione operatore monadico produce un risultato che ha parte degli attributi dell'operando contiene ennuple cui contribuiscono tutte le ennuple dell'operando Impiegati Matricola 7309 5998 9553 5698 Cognome Filiale Stipendio Neri Napoli 55 Neri Milano 64 Roma 44 Roma 64 per tutti gli impiegati: matricola e cognome cognome e filiale 29 30 Proiezione, sintassi e semantica sintassi PROJ Listattributi (Operando) semantica il risultato contiene le ennuple ottenute da tutte le ennuple dell'operando ristrette agli attributi nella lista 31 Operatore di Proiezione (π) Condizione π C (r) Condizione di proiezione C su r è l elenco degli attributi dello schema X di r che debbono venire proiettati : attr 1, attr 2,...,attr n attr i ЄX per 1 i n sid 0012 0072 0033 nome Verdi ianchi π età (S) età 18 19 login ro@ec bi@ec bi@tt età 18 19 18 Distinte Tutte le tuple della relazione r contribuiscono al risultato di una proiezione, ma soltanto con i valori corrispondenti agli attributi specificati dalla condizione C. gpa 3.4 3.2 3.8 S 32 8

matricola e cognome di tutti gli impiegati cognome e filiale di tutti gli impiegati Matricola 7309 5998 9553 5698 Cognome Filiale Stipendio Neri Napoli 55 Neri Milano 64 Roma 44 Roma 64 Matricola 7309 5998 9553 5698 Cognome Filiale Stipendio Neri Napoli 55 Neri Milano 64 Roma 44 Roma 64 PROJ Matricola, Cognome (Impiegati) PROJ Cognome, Filiale (Impiegati) 33 34 Cardinalità delle proiezioni una proiezione contiene al più tante ennuple quante l'operando può contenerne di meno Selezione e proiezione Combinando selezione e proiezione, possiamo estrarre interessanti informazioni da una relazione se X è una superchiave di R, allora PROJ X (R) contiene esattamente tante ennuple quante R 35 36 9

matricola e cognome degli impiegati che guadagnano più di 50 Matricola Cognome Filiale Stipendio 7309 Roma 55 5998 Neri Milano 64 9553 5698 Milano Neri Milano Napoli 44 64 5698 Neri Napoli 64 PROJ Matricola,Cognome ( SEL Stipendio > 50 (Impiegati)) Combinando selezione e proiezione, possiamo estrarre informazioni da una relazione non possiamo però correlare informazioni presenti in relazioni diverse, né informazioni in ennuple diverse di una stessa relazione 37 38 sno pno s1 p1 s1 p2 s1 p3 s1 p4 s2 p1 s2 p2 s3 p2 s4 p2 s4 p4 Esempi di divisione / pno p2 1 sno s1 s2 s3 s4 pno p2 p4 2 sno s1 s4 pno p1 p2 p4 3 sno s1 /1 /2 /3 39 sno s1 s1 s1 s1 s2 s3 pno p1 p2 p3 p4 p1 p2 Operazione di Divisione Non e supportato come primitiva ma e utile per esprimere query del tipo: Trova i marinai che hanno prenotato tutte le barche /={ <x> <x,y>є <y>є } /1 / pno p2 1 pno p2 p4 2 /2 sno s1 s3 sno s1 40 10

Divisione Sia una relazione con due campi, x e y; sia una relazione con il solo campo y: a/b = { x x, y, y } cioè, / contiene tutte le tuple x (velisti) tali che per ogni tupla y (barca) in, ci sia una tupla xy in Oppure. Se l insieme di valori y (barche) associato con un valore x (velista) in contiene tutti i valori y in, il valore x è in / In generale, x e y possono essere un qualunque elenco di campi; y è l elenco di campi in, e x y è l elenco dei campi in 41 sno pno s1 p1 s1 p2 s1 p3 s1 p4 s2 p1 s2 p2 s3 p2 s4 p2 s4 p4 Esempi di divisione / pno p2 1 sno s1 s2 s3 s4 pno p2 p4 2 sno s1 s4 pno p1 p2 p4 3 sno s1 /1 /2 /3 42 Esprimere / usando operatori di base La divisione non è una operazione essenziale; solo un utile scorciatoia (Vero anche per i join, ma i join sono così comuni che i sistemi li implementano esplicitamente) Idea: per /, calcolare tutti i valori x che non sono interdetti da qualche valore y in Un valore x è interdetto se associandogli valori y da otteniamo una tupla xy che non è in Valori x interdetti: /: π x (( π x ( ) ) ) π x ( ) Tutte le tuple interdette 43 Join il join è l'operatore più interessante dell'algebra relazionale permette di correlare dati in relazioni diverse 44 11

Prove scritte in un concorso pubblico I compiti sono anonimi e ad ognuno è associata una busta chiusa con il nome del candidato Ciascun compito e la relativa busta vengono contrassegnati con uno stesso numero 1 25 2 13 3 27 4 28 Mario Nicola Russo Mario ianchi Remo Neri 1 Mario 2 Nicola Russo 3 Mario ianchi 4 Remo Neri 25 13 27 28 45 46 Numero Voto 1 25 2 13 3 27 4 28 Numero 1 2 3 4 Numero Candidato 1 Mario 2 Nicola Russo 3 Mario ianchi 4 Remo Neri Candidato Mario Nicola Russo Mario ianchi Remo Neri Voto 25 13 27 28 47 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 Le enn sono ottenute combinando le tuple con valori uguali sugli attributi in comune 48 12

Join, sintassi e semantica R 1 (X 1 ), R 2 (X 2 ) R 1 JOIN R 2 è una relazione su X 1 X 2 { t su X 1 X 2 esistono t 1 R 1 e t 2 R 2 con t[x 1 ] =t 1 e t[x 2 ] =t 2 } Impiegato Reparto Reparto Neri runi ianchi Impiegato Reparto Neri runi ianchi runi ogni ennupla contribuisce al risultato: join completo 49 50 Un join non completo Un join vuoto Impiegato Reparto Neri ianchi Reparto C runi Impiegato Reparto Neri ianchi Reparto D C runi Impiegato Reparto Neri ianchi Impiegato Reparto 51 52 13

Un join completo, con n x m ennuple Impiegato Reparto Neri Reparto Impiegato Reparto runi Neri Neri runi runi Cardinalità del join Il join di R 1 e R 2 contiene un numero di ennuple compreso fra zero e il prodotto di R 1 e R 2 se il join coinvolge una chiave di R 2, allora il numero di ennuple è compreso fra zero e R 1 se il join coinvolge una chiave di R 2 e un vincolo di integrità referenziale, allora il numero di ennuple è pari a R 1 53 54 Cardinalità del join, 2 R 1 (,), R 2 (,C) in generale 0 R 1 JOIN R 2 R 1 R 2 se è chiave in R 2 0 R 1 JOIN R 2 R 1 se è chiave in R 2 ed esiste vincolo di integrità referenziale fra (in R 1 ) e R 2 : R 1 JOIN R 2 = R 1 Join, una difficoltà Impiegato Reparto Neri ianchi Reparto C runi Impiegato Reparto Neri ianchi alcune ennuple non contribuiscono al risultato: vengono "tagliate fuori" 55 56 14

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 ennuple del primo operando, estendendole con valori nulli, se necessario destro:... del secondo operando... completo: di entrambi gli operandi... 57 58 Impiegati Impiegato Reparto Neri ianchi Reparti Reparto C runi Impiegati Impiegato Reparto Neri ianchi Reparti Reparto C runi Impiegati JOIN LEFT Reparti Impiegati JOIN RIGHT Reparti Impiegato Reparto Neri ianchi NULL Impiegato Reparto Neri ianchi NULL C runi 59 60 15

Impiegati Impiegato Reparto Neri ianchi Reparti Reparto C runi Join e proiezioni Impiegato Reparto Reparto Neri C ianchi runi Impiegati JOIN FULL Reparti Impiegato Reparto Neri ianchi NULL NULL C runi 61 Impiegato Reparto Neri ianchi Impiegato Reparto Neri ianchi Reparto 62 Impiegato Neri ianchi Verdi Proiezioni e join Impiegato Reparto Neri ianchi runi Verdi ini Reparto Reparto Impiegato Reparto Neri Neri runi ianchi ianchi runi Verdi ini runi ini 63 Join e proiezioni R 1 (X 1 ), R 2 (X 2 ) PROJ X1 (R 1 JOIN R 2 ) R 1 R(X), X = X 1 X 2 (PROJ X1 (R)) JOIN (PROJ X2 (R)) R 64 16

Se l insieme Prodotto di attributi cartesiano sono disgiunti? un join naturale su relazioni senza attributi in comune contiene sempre un numero di ennuple pari al prodotto delle cardinalità degli operandi (le ennuple sono tutte combinabili ) 65 Impiegati Impiegato Reparto Neri ianchi Impiegati JOIN Reparti Reparti Codice runi Impiegato Reparto Codice runi Neri Neri runi ianchi ianchi runi 66 Il prodotto cartesiano, in pratica, ha senso (quasi) solo se seguito da selezione: SEL Condizione (R 1 JOIN R 2 ) L'operazione viene chiamata theta-join e indicata con R 1 JOIN Condizione R 2 n.b. sul libro di testo chiamato join condizionale Perché "theta-join"? La condizione C è spesso una congiunzione (ND) di atomi di confronto 1 ϑ 2 dove ϑ è uno degli operatori di confronto (=, >, <, ) 67 68 17

Condizione di Join Operazioni di join R C S = R S1.sid<R1.sid S σ C (RXS) La relazione risultante avrà lo schema del prodotto cartesiano di R ed S e l istanza composta dalle tuple del prodotto cartesiano che soddisfano la condizione C Senza nome Operazioni di Equi-Join e Natural-Join Condizione di Join R C S Equi-Join è un join in cui la condizione C e composta solamente di operazioni di uguaglianza. Natural Join e un Equi-Join su tutti gli attributi in comune R sid S Viene eliminata (sid) sname 22 Davide 31 Luca rating 7 8 age 45.0 55.5 (sid) 58 58 bid 103 103 day 11/12/02 11/12/02 69 (sid) sname 22 Davide 58 Remo rating 7 10 age (sid) bid X 45.0 22 101 35.0 58 103 day 11/10/03 11/12/02 70 Equi-join Se l'operatore di confronto nel theta-join è sempre l'uguaglianza (=) allora si parla di equijoin Nota: ci interessa davvero l equi-join, non il thetajoin più generale Perché? correla dati in relazioni diverse confrontando i valori. 71 Impiegati Impiegato Reparto Neri ianchi Reparti Codice Impiegati JOIN Reparto=Codice Reparti runi Impiegato Reparto Codice Neri runi ianchi Neri runi Neri runi ianchi ianchi runi 72 18

Join naturale ed equi-join Impiegati Impiegato Reparto Neri ianchi Reparti Reparto runi Impiegati Reparti Impiegato Reparto Reparto Impiegati JOIN Reparti Impiegati JOIN Reparti PROJ Impiegato,Reparto, ( SEL Reparto=Codice ( Impiegati JOIN REN Codice Reparto (Reparti) )) 73 74 Esempi Impiegati Matricola Nome Età Stipendio 7309 34 45 5998 ianchi 37 38 9553 Neri 42 35 5698 runi 43 42 4076 45 50 8123 Lupi 46 60 Supervisione Impiegato 7309 5998 5698 5698 9553 5698 4076 4076 4076 8123 75 Esempi Impiegati Matricola Nome Età Stipendio 7309 34 45 5998 ianchi 37 38 9553 Neri 42 35 5698 runi 43 42 4076 45 50 8123 Lupi 46 60 Supervisione Impiegato 7309 5998 5698 5698 9553 5698 4076 4076 4076 8123 76 19

Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 SEL Stipendio>40 (Impiegati) Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 PROJ Matricola, Nome, Età (SEL Stipendio>40 (Impiegati)) Supervisione Impiegato Impiegati Matricola Nome Età Stipendio 7309 5698 7309 34 45 5998 5698 5998 ianchi 37 38 9553 4076 9553 Neri 42 35 5698 4076 5698 runi 43 42 4076 45 50 4076 8123 8123 Lupi 46 60 77 Supervisione Impiegato 7309 5698 Impiegati Matricola Nome Età Stipendio 5998 5698 7309 34 45 9553 4076 5998 ianchi 37 38 5698 4076 9553 Neri 42 35 4076 8123 5698 runi 43 42 4076 45 50 8123 Lupi 46 60 78 Trovare le matricole dei capi degli impiegati che guadagnano più di 40 PROJ (Supervisione JOIN Impiegato=Matricola (SEL Stipendio>40 (Impiegati))) Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 PROJ Nome,Stipendio ( Impiegati JOIN Matricola= PROJ (Supervisione JOIN Impiegato=Matricola (SEL Stipendio>40 (Impiegati)))) Supervisione Impiegato Supervisione Impiegato 7309 5698 7309 5698 Impiegati Matricola Nome Età Stipendio Impiegati 5998 5698 5998 5698 Matricola Nome Età Stipendio 9553 4076 7309 34 45 5998 ianchi 37 38 9553 4076 7309 34 45 5698 4076 5998 ianchi 37 38 9553 Neri 42 35 5698 4076 4076 8123 9553 Neri 42 35 5698 runi 43 42 4076 8123 5698 runi 43 42 4076 45 50 4076 45 50 8123 Lupi 46 60 8123 Lupi 46 60 80 79 20

Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo PROJ Matr,Nome,Stip,MatrC,NomeC,StipC (SEL Stipendio>StipC ( REN MatrC,NomeC,StipC,EtàC Matr,Nome,Stip,Età (Impiegati) JOIN MatrC= (Supervisione JOIN Impiegato=Matricola Impiegati))) Supervisione Supervisione Impiegato Impiegato 7309 5698 7309 5698 Impiegati Matricola Nome Età Stipendio Impiegati Matricola Nome Età Stipendio 5998 5698 7309 34 45 5998 5698 7309 34 45 9553 4076 5998 ianchi 37 38 9553 4076 5998 ianchi 37 38 5698 4076 9553 Neri 42 35 5698 4076 9553 Neri 42 35 4076 8123 5698 runi 43 42 4076 8123 5698 runi 43 42 4076 45 50 4076 45 50 8123 Lupi 46 60 8123 Lupi 46 60 82 81 Trovare le matricole dei capi i cui impiegati guadagnano tutti più di 40 PROJ (Supervisione) - PROJ (Supervisione JOIN Impiegato=Matricola (SEL Stipendio 40 (Impiegati))) Una convenzione e notazione alternativa per i join Nota: è sostanzialmente l'approccio usato in SQL Ignoriamo il join naturale (cioè non consideriamo implicitamente condizioni su attributi con nomi uguali) Per "riconoscere" attributi con lo stesso nome gli premettiamo il nome della relazione Usiamo "assegnazioni" (viste) per ridenominare le relazioni (e gli attributi solo quando serve per l'unione) 83 Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo PROJ Matr,Nome,Stip,MatrC,NomeC,StipC (SEL Stipendio>StipC ( REN MatrC,NomeC,StipC,EtàC Matr,Nome,Stip,Età (Impiegati) JOIN MatrC= (Supervisione JOIN Impiegato=Matricola Impiegati))) Supervisione Impiegati Matricola Nome Età Stipendio 7309 34 45 5998 ianchi 37 38 9553 Neri 42 35 5698 runi 43 42 4076 45 50 8123 Lupi 46 60 Impiegato 7309 5698 5998 5698 9553 4076 5698 4076 4076 8123 84 21

PROJ Matr,Nome,Stip,MatrC,NomeC,StipC (SEL Stip>StipC ( REN MatrC,NomeC,StipC,EtàC Matr,Nome,Stip,Età (Imp) JOIN MatrC= (Sup JOIN Imp=Matr Imp))) Capi := Imp PROJ Imp.Matr, Imp.Nome, Imp.Stip,Capi.Matr,Capi.Nome, Capi.Stip (SEL Imp.Stip>Capi.Stip ( Capi JOIN Capi.Matr= (Sup JOIN Imp=Imp.Matr Imp))) Equivalenza di espressioni Due espressioni sono equivalenti se producono lo stesso risultato qualunque sia l'istanza attuale della base di dati L'equivalenza è importante in pratica perché i DMS cercano di eseguire espressioni equivalenti a quelle date, ma meno "costose (QUERY OPTIMIZER) 85 86 Un'equivalenza importante Push selections (se è attributo di R 2 ) SEL =10 (R 1 JOIN R 2 ) = R 1 JOIN SEL =10 ( R 2 ) Riduce in modo significativo la dimensione del risultato intermedio (e quindi il costo dell'operazione) Nota In questo corso, ci preoccupiamo poco dell efficienza: l obiettivo è di scrivere interrogazioni corrette e leggibili Motivazione: I DMS si preoccupano di scegliere le strategie realizzative efficienti 87 88 22

Selezione con valori nulli Un risultato non desiderabile Impiegati Matricola 7309 5998 9553 Cognome Filiale Età Roma 32 Neri Milano 45 runi Milano NULL SEL Età > 40 (Impiegati) la condizione atomica è vera solo per valori non nulli 89 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! 90 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 91 92 23

Viste (relazioni derivate) Impiegati Matricola Cognome Filiale Età 7309 5998 Neri Milano Roma 32 45 5998 9553 runi Neri Milano NULL 45 9553 runi Milano NULL SEL (Età > 40) OR (Età IS NULL) (Impiegati) Rappresentazioni diverse per gli stessi dati (schema esterno) Relazioni derivate: relazioni il cui contenuto è funzione del contenuto di altre relazioni (definito per mezzo di interrogazioni) Relazioni di base: contenuto autonomo Le relazioni derivate possono essere definite su altre derivate, ma a condizione che esista un ordinamento tra le r derivate ogni r sia def solo in termini di r di base e r der che la precedono nell ordinamento 93 94 rchitettura standard (NSI/SPRC) a tre livelli per DMS utente Schema esterno utente utente Schema esterno utente Schema esterno utente fferenza Viste, esempio Impiegato Reparto Direzione Reparto Neri ianchi runi Schema logico Schema interno una vista: Supervisione = PROJ Impiegato, (fferenza JOIN Direzione) D 95 96 24

Viste virtuali e materializzate Due tipi di relazioni derivate: viste materializzate relazioni virtuali (o viste) Viste materializzate relazioni derivate memorizzate nella base di dati vantaggi: immediatamente disponibili per le interrogazioni svantaggi: ridondanti appesantiscono gli aggiornamenti sono raramente supportate dai DMS 97 98 Viste virtuali relazioni virtuali (o viste): sono supportate dai DMS (tutti) una interrogazione su una vista viene eseguita "ricalcolando" la vista (o quasi) Interrogazioni sulle viste Sono eseguite sostituendo alla vista la sua definizione: SEL ='Leoni' (Supervisione) viene eseguita come SEL ='Leoni' ( PROJ Impiegato, (fferenza JOIN Direzione)) 99 100 25

Viste, motivazioni (vantaggi) Schema esterno: ogni utente vede solo ciò che gli interessa e nel modo in cui gli interessa, senza essere distratto dal resto ciò che e' autorizzato a vedere (autorizzazioni) Strumento di programmazione: si può semplificare la scrittura di interrogazioni: espressioni complesse e sottoespressioni ripetute Utilizzo di programmi esistenti su schemi ristrutturati Viste come strumento di programmazione Trovare gli impiegati che hanno lo stesso capo di Senza vista: PROJ Impiegato ((fferenza JOIN Direzione) JOIN REN ImpR,RepR Imp,Reparto ( SEL Impiegato='' (fferenza JOIN Direzione))) Con la vista: PROJ Impiegato (Supervisione JOIN REN ImpR,RepR Imp,Reparto ( SEL Impiegato='' (Supervisione))) 101 102 Viste e aggiornamenti, attenzione fferenza Direzione Impiegato Reparto Reparto Neri runi Verdi C runi Supervisione Vogliamo inserire, nella vista, il fatto che Lupi ha come capo runi; oppure che elli ha come capo Falchi; come facciamo? Impiegato Neri Verdi runi 103 Viste e aggiornamenti "ggiornare una vista": modificare le relazioni di base in modo che la vista, "ricalcolata" rispecchi l'aggiornamento L'aggiornamento sulle relazioni di base corrispondente a quello specificato sulla vista deve essere univoco In generale però non è univoco! en pochi aggionamenti sono ammissibili sulle viste 104 26