Corso di Basi di Dati

Documenti analoghi
Algebra Relazionale. algebra relazionale

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Linguaggi per basi di dati

Programmazione Dichiarativa. Programmazione Logica. SICStus PROLOG PROLOG. Bob Kowalski: "Algoritmo = Logica + Controllo"

CAPITOLO V. DATABASE: Il modello relazionale

Esempio di database relazionale con l utilizzo del prodotto MySQL

Introduzione. Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei

Esame di Informatica Generale 25 giugno 2010 Professori: Carulli, Fiorino, Mazzei

Università degli Studi di Milano. Esercizi Corso SIT. Basi di dati

ALGEBRA RELAZIONALE RIEPILOGO

Si considerino le seguenti specifiche per la realizzazione di un sito web per la gestione di abbonamenti a riviste di vario genere..

Riconoscere e formalizzare le dipendenze funzionali

Archivi e Basi di Dati

Gli operatori relazionali

DATABASE PER IL WEB. Programmazione Web 1

Algebra e calcolo relazionale. Ripasso. Le 7 Virtù del DBMS persistenza affidabilità volume condivisione riservatezza efficienza efficacia

Normalizzazione. Definizione

TEORIA RELAZIONALE: INTRODUZIONE

Operazioni sui database

Compito Sistemi Informativi LA. Tempo concesso : 90 minuti 28 Giugno 05 Nome: Cognome: Matricola: Esercizio 1

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale

Basi di Dati e Sistemi Informativi. Algebra Relazionale

Introduzione all Algebra Relazionale

ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad una Software (SW) House:

Algebra Relazionale e Calcolo Relazionale. L. Vigliano

Lezione V. Aula Multimediale - sabato 29/03/2008

COGNOME MATRICOLA. UTENTE(ID, Nome, Cognome, Eta) ALBERGO(Nome, Citta, NumStelle) PRENOTAZIONE(Codice, NomeAlbergo, IDUtente, DataArrivo, NumNotti)

Corso di Basi di Dati. Linguaggi per basi di dati. Linguaggi per basi di dati. Linguaggi per basi di dati: Algebra Relazionale

PROGRAMMA DI CLASSE 5AI

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

BASE DI DATI: sicurezza. Informatica febbraio ASA

INTRODUZIONE ALLE BASI DATI RELAZIONALI

(anno accademico )

Il Modello Relazionale (1)

Basi di dati. Una visione d insieme. Classificazione. Linguaggi di interrogazione. Algebra relazionale. selezione σ

RELAZIONI BINARIE. Proprietà delle relazioni Data una relazione R, definita in un insieme non vuoto U, si hanno le seguenti proprietà :

Basi di Dati Corso di Laura in Informatica Umanistica

Corso di Laboratorio di Basi di Dati

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

Corso di Basi di Dati

Traduzione dello schema E-R in modello logico relazionale

DBMS (Data Base Management System)

Calcolo Relazionale Basi di dati e sistemi informativi 1. Calcolo Relazionale. Angelo Montanari

Modello Relazionale. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto san giovanni

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

Basi di Dati. Programmazione e gestione di sistemi telematici

Vincoli di integrità

N ORE LEZIONI FRONTALI: STUDIO INDIVIDUALE ( ) N ORE ESERCITAZIONI/LABORATORIO: STUDIO INDIVIDUALE ( )

LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita

Elena Baralis 2013 Politecnico di Torino 1

ESERCIZIO 1 (15 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad un sistema di prenotazioni di biglietti aerei:

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/ febbraio A

BASI DI DATI LINGUAGGI PER BASI DI DATI

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Il Modello Relazionale

Basi di Dati: Corso di laboratorio

SQL prima parte 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 2011/12

MAX, SUM, AVG, COUNT)

MODELLO RELAZIONALE. cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE

Esercizio 4.1. Soluzione:

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

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

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

BASI DATI INFORMATICA

Il linguaggio SQL: viste e tabelle derivate

Il linguaggio SQL: DDL di base

COGNOME MATRICOLA. Con vincoli di integrita referenziale: INTERVENTO.CodTecnico à TECNICO.Codice INTERVENTO.MatCaldaia à CALDAIA.

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1

Attributi e domini. A per {A}; XY per X Y (pertanto A 1 A 2 A 3 denota

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Basi di Dati e Sistemi Informativi. Progettazione logica: Il modello relazionale

Basi di Dati Relazionali

Basi di dati II prova intermedia 16 Marzo 2006 Compito 1

SQL. Definizione dei da6 in SQL. SQL: "storia" CREATE TABLE: esempio. CREATE TABLE: esempio

Laboratorio di Basi di Dati

Il linguaggio SQL: le basi

Compito Basi di Dati. Tempo concesso: 90 minuti 08 Giugno 2006 Nome: Cognome: Matricola:

I Sistemi Informativi

Teoria della Progettazione delle Basi di Dati Relazionali

Fondamenti di Teoria delle Basi di Dati

Compito Sistemi Informativi LA. Tempo concesso : 90 minuti 23 Settembre 03 Nome: Cognome: Matricola:

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.

DATABASE RELAZIONALI

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

Il linguaggio SQL: query innestate

Normalizzazione. Relazionali

Definizione di domini

DATA BASE MANAGEMENT SYSTEM

PRESTITO (Titolo, Nome, DataRestituzione)

Le basi di dati. Base di dati. Modelli, schemi ed istanze DBMS. Architettura ANSI/SPARC: schemi

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

La in verifica forma teoria normale della normalizzazione fornisce comunque uno strumento di già

CAPITOLO 4 ESERCIZI SU SQL

Sistemi di Elaborazione delle Informazioni (C.I. 15) Access

Cap. 1-I 1 I sistemi informatici

Capitolo 9. Esercizio 9.1. Esercizio 9.2

Dal modello concettuale al modello logico

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Transcript:

Corso di Basi di Dati L Algebra Relazionale Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

L algebra relazionale è un linguaggio (procedurale) di interrogazione per basi di dati relazionali. Altri linguaggi DML di interrogazione: SQL2/SQL3 (standard de facto, già visto..) Calcolo relazionale (linguaggio dichiarativo) Datalog (basato su Prolog)

All interno di un DBMS, le query SQL sono controllate ed eseguite da un interprete SQL. L interprete spesso traduce l SQL in un altro linguaggio procedurale (~algebra relazionale) per motivi di: Facilità d esecuzione à è possibile scomporre query complesse in una sequenza di procedure da eseguire. Ottimizzazione à è possibile riscrivere (automaticamente) le query procedurali in modo da consumare meno memoria o tempo di esecuzione.

Il linguaggio dell algebra relazionale è costituito da una serie di operatori (algebrici) che: si applicano ad una relazione (definizione di relazione nel modello relazionale). producono in output una relazione. sono componibili, ossia è possibile utilizzarli in cascata per creare interrogazioni complesse. Gli operatori possono essere unari o binari.

Interrogazione SQL Generata dall utente/ applicazione Traduttore SQL à Linguaggio Procedurale Interrogazione linguaggio procedurale Ottimizzatore di query Interrogazione ottimizzata Esecuzione DB INTERPRETE SQL DEL DBMS

Il linguaggio dell algebra relazionale è costituito da una serie di operatori (algebrici): Operatori su insiemi: unione, intersezione, differenza. Operatori su attributi: ridenominazione, selezione, proiezioni. Operatori intra-relazionali: join naturale, thetajoin, equi-join, etc.

Le relazioni sono insiemi à è possibile definire operatori insiemistici su di esse: Unione di r 1 (X) ed r 2 (X): Intersezione di r 1 (X) ed r 2 (X): r = r 1 r 2 = {t t r 1 OR t r 2 } r = r 1 r 2 = {t t r 1 AND t r 2 } Differenza di r 1 (X) ed r 2 (X): r = r 1 r 2 = {t t r 1 AND t r 2 } Le relazioni r 1 ed r 2 devono avere lo stesso schema

CALCIATORI Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 ALLENATORI Nome Cognome Nascita Giovanni Bianchi 10/06/1980 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 CALCIATORI ALLENATORI Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 CALCIATORI ALLENATORI Nome Cognome Nascita Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Giovanni Bianchi 10/06/1980

CALCIATORI Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 ALLENATORI Nome Cognome Data Giovanni Bianchi 10/06/1980 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 CALCIATORI ALLENATORI Nome Cognome??? CALCIATORI ALLENATORI Nome Cognome??? Q. Cosa accade se le relazioni non hanno esattamente lo stesso schema, ma dispongono di attributi con nomi diversi?

L operatore di ridenominazione ρ consente di modificare i nomi degli attributi di una relazione. ρ B1,B2, BM ß A1, A2,.. AM (r) SEMANTICA: Modifica lo schema della relazione, ridenominando gli attributi A 1, A 2, A M in B 1, B 2, B M senza alterare i dati della relazione. B B B A A A

CALCIATORI Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 ALLENATORI Nome Cognome Data Giovanni Bianchi 10/06/1980 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 CALCIATORI ρ NASCITA< DATA (ALLENATORI ) Nome Cognome Nascita Giuseppe Rossi 10/03/19769 Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 CALCIATORI ρ NASCITA< DATA (ALLENATORI ) Nome Cognome Nascita Roberto Bianchi 14/06/1982 Michele Verdi 17/08/1983 Giovanni Bianchi 10/06/1980

L operatore di selezione σ F (r) consente di selezionare un sottoinsieme delle tuple della relazione r, in base alla condizione specificata da F. Relazione r A A A σ F (r) Relazione r A A A Insieme delle righe di r che soddisfano la condizione F

L operatore di selezione σ F (r) consente di selezionare un sottoinsieme delle tuple della relazione r, in base alla condizione specificata da F. σ F (r) = {t t r AND F(t) = TRUE} La condizione F è definita come insieme di predicati connessi da operatori logici. F= P 1 Op P 2 Op P N Op e un operatore booleano (AND, OR, NOT)

La condizione F e definita come insieme di predicati connessi da operatori logici. F= P 1 Op P 2 Op P N Ogni predicato è del tipo AθB oppure Aθc, dove: θ e un operatore di confronto (<,>,=,<>,<=,>=). A e B sono attributi di r, su cui ha senso l operatore contiene una valore compatibile con il dominio di A.

CALCIATORI Nome Cognome Nascita Anni Societa Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchini 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 29 Dinamo σ (ANNI >30) (SOCIETA=DINAMO) (CALCIATORI ) Nome Cognome Nascita Anni Societa Giuseppe Rossi 10/03/19769 32 Dinamo

CALCIATORI Nome Cognome Nascita Anni Societa Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchini 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 29 Dinamo σ (NOME="GIUSEPPE") (COGNOME="BIANCHI ") (CALCIATORI ) Nome Cognome Nascita Anni Societa Giuseppe Rossi 10/03/19769 32 Dinamo Giovanni Bianchi 10/06/1980 29 Dinamo

CALCIATORI Nome Cognome Nascita Anni Societa Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchini 14/06/1982 NULL Polisportiva Michele Verdi 17/08/1983 27 NULL Giovanni Bianchi 10/06/1980 29 Dinamo σ (ANNI >30) (SOCIETA=DINAMO) (CALCIATORI ) Q. Cosa accade in presenza di valori nulli?

A. Come in SQL, si utilizza una logica a 3 valori: True (T), False (F), Unknown (U). NOT AND T F U OR T F U T F T T F U T T T T F T F F F F F T F U U U U U F U U T U U Si utilizzano gli operatori IS NULL e IS NOT NULL per verificare se un certo attributo ha valore uguale a NULL o meno.

CALCIATORI Nome Cognome Nascita Anni Societa Giuseppe Rossi 10/03/19769 NULL Dinamo Roberto Bianchi 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 35 NULL σ (ANNI >30) (SOCIETA=DINAMO) (CALCIATORI ) Nome Cognome Nascita Anni Societa

CALCIATORI Nome Cognome Nascita Anni Societa Giuseppe Rossi 10/03/19769 NULL Dinamo Roberto Bianchi 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 35 NULL σ (ANNI >30) ((SOCIETA=DINAMO) (SOCIETA IS NULL )) (CALCIATORI ) Nome Cognome Nascita Anni Societa Giovanni Bianchi 10/06/1980 35 NULL

L operatore di proiezione π Y (r) consente di selezionare un sottoinsieme degli attributi di r. π Y (r) = {t[y] t r} Y=(A 1,A 5 ) A A A A A π Y (r) A

L operatore di proiezione π Y (r) consente di selezionare un sottoinsieme degli attributi di r. Qual è la cardinalità di π Y (r)? Nel caso generale, π Y (r) <= r Se Y è superchiave di R, allora π Y (r) = r Q. Vale anche il viceversa? (Se π Y (r) = r allora Y è una superchiave di R?)

CALCIATORI Nome Cognome Nascita Anni Societa Giuseppe Rossi 10/03/19769 32 Dinamo Roberto Bianchi 14/06/1982 33 Polisportiva Michele Verdi 17/08/1983 27 Polisportiva Giovanni Bianchi 10/06/1980 27 Dinamo π (NOME,COGOME) (CALCIATORI ) Nome Cognome Giuseppe Rossi Roberto Bianchi Michele Verdi Giovanni Bianchi π (ANNO) (CALCIATORI ) Anni 32 33 27

E possibile scrivere espressioni complesse componendo gli operatori algebrici CALCIATORI Nome Cognome Squadra Giuseppe Rossi Dinamo Roberto Bianchi Dinamo PRESIDENTI Nome Cognome Squadra Luciano Rossi Dinamo Michele Rosati Polisportiva Michele Verdi Polisportiva Nome Cognome Squadra σ SQUADRA=DINAMO (CALCIATORI PRESIDENTI ) Luciano Rossi Dinamo Giuseppe Rossi Dinamo Roberto Bianchi Dinamo

E possibile scrivere espressioni complesse componendo gli operatori algebrici CALCIATORI Nome Cognome Squadra Giuseppe Rossi Dinamo Roberto Bianchi Dinamo PRESIDENTI Nome Cognome Squadra Luciano Rossi Dinamo Michele Rosati Polisportiva Michele Verdi Polisportiva Π COGNOME (σ SQUADRA=DINAMO (CALCIATORI PRESIDENTI )) Cognome Rossi Bianchi

L operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni. CALCIATORI Nome Cognome Squadra Giuseppe Rossi Dinamo Roberto Bianchi Dinamo Michele Verdi Polisportiva SQUADRE Squadra Punti Dinamo 12 Polisportiva 14 Nome Cognome Squadra Punti CALCIATORI SQUADRE Giuseppe Rossi Dinamo 12 Roberto Bianchi Dinamo 12 Michele Verdi Polisportiva 14

L operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni. Data una relazione r 1 su attributi X 1, ed una relazione r 2 su attributi X 2 : r 1 r 2 = {t su X 1 X 2 t[x 1 ] r 1 t[x 2 ] r 2 } La cardinalita del join e compresa tra 0 e r 1 * r 2.

Se le due relazioni r 1 ed r 2 hanno lo stesso schema à la cardinalità del join è pari a quella dell interserzione tra r 1 ed r 2. IMPIEGATI Codice Nome Ufficio 123 Rossi A 345 Bianchi A 167 Verdi B RESPONSABILI_UFFICIO IMPIEGATI RESPONABILI _UFFICIO Codice Nome Ufficio 123 Rossi A Codice Nome Ufficio 123 Rossi A 345 Michele C CASO SPECIALE 1

Sia X l attributo in comune tra X 1 ed X 2. Se X contiene una chiave di r 2 à il join ha cardinalità massima pari alla cardinalità di r 1 ( r 1 ). IMPIEGATI SEDI Codice Nome Sede Sede Mansione 123 Rossi Bologna Bologna Sviluppo 345 Bianchi Milano Milano Testing 167 Verdi Milano CASO SPECIALE 2 IMPIEGATI SEDI Id Nome Sede Mansione 123 Rossi Bologna Sviluppo 345 Bianchi Milano Testing 167 Verdi Milano Testing

Sia X l attributo in comune tra X 1 ed X 2. Se esiste un vincolo di integrità referenziale tra l attributo X in r 1 e la relazione r 2 à il join ha cardinalità pari alla cardinalità di r 1 ( r1 ). REPARTI PAZIENTI Id Nome CodiceRep 123 Rossi A3 345 Bianchi A3 167 Verdi B1 CodiceRep NrLetti Primario A3 20 Alberti B1 10 Gigli CASO SPECIALE 3 Id Nome Codice NrLetti Primario Rep 123 Rossi A3 20 Alberti PAZIENTI REPARTI 345 Bianchi A3 20 Alberti 167 Verdi B1 10 Gigli

Se le due relazioni r 1 ed r 2 non hanno attributi in comune à la cardinalita del join è pari a quella del prodotto cartesiano tra r 1 ed r 2 ( r 1 * r 2 ). IMPIEGATI Id Nome Ufficio 123 Rossi A IMPIEGATI UFFICI CASO SPECIALE 4 Id Nome Ufficio Codice Telefono 345 Bianchi A 167 Verdi B UFFICI Codice Telefono A 20-21-216 C 20-21-218 123 Rossi A A 20-21-216 123 Rossi A C 20-21-218 345 Bianchi A A 20-21-216 345 Bianchi A C 20-21-218 167 Verdi B A 20-21-216 167 Verdi B C 20-21-218

Il join naturale dispone di alcune proprietà algebriche interessanti: Il join è commutativo: Il join è associativo: Nel caso di join n-ari: Q. Dimostrazione? r 1 r 2 = r 2 r 1 (r 1 r 2 ) r 3 = r 1 (r 2 r 3 ) r 1.. r n = 1 n r i

E possibile stabilire una corrispondenza tra query SQL ed espressioni in algebra relazionale Schema generale (tralasciando le ridenominazioni) SELECT A 1, A 2, A n FROM T 1, T 2, T m WHERE Condizione Π A1 A 2..A n (σ Condizione (T 1 T 2... T m ))

Dato il seguente schema: IMPIEGATI(Codice, Nome, Cognome, Livello) STIPENDI (LivelloQualifica, Retribuzione) determinare la retribuzione degli impiegati che si chiamano Mario. SELECT RETRIBUZIONE FROM IMPIEGATI, STIPENDI WHERE ((NOME= MARIO ) AND (LIVELLO=LIVELLOQUALIFICA)) Π RETRIBUZIONE (σ NOME="MARIO" LIVELLO=LIVELLOQUALIFICA (IMPIEGATI STIPENDI ))

Dato il seguente schema: IMPIEGATI(Codice, Nome, Cognome, Livello) STIPENDI (LivelloQualifica, Retribuzione) determinare la retribuzione MEDIA degli impiegati che si chiamano Mario. SELECT AVG(RETRIBUZIONE) FROM IMPIEGATI, STIPENDI WHERE ((NOME= MARIO ) AND (LIVELLO=LIVELLOQUALIFICA)) In algebra relazionale? Non si può esprimere

Il theta-join è un operatore derivato, espresso come un join naturale seguito da un operatore di selezione. Theta-join: r 1 F r 2 = σ F (r 1 r 2 ) F è una condizione utilizzabile in una selezione. r 1 ed r 2 devono avere schemi diversi, ossia non devono avere attributi in comune.

Un esempio di theta-join con condizione di selezione (NrPosti>150). VOLI Codice Partenza Arrivo AZ123 Roma Parigi AF345 Milano Boston AF167 Parigi Londra AEREI Modello NrPosti Smoking B747 250 NO MD80 120 NO VOLI NRPOSTI >150 CODICE=MODELLO AEREI Codice Partenza Arrivo Modello NrPosti Smoking AZ123 Roma Parigi B747 250 NO AF345 Milano Boston B747 250 NO AF167 Parigi Londra B747 250 NO

L equi-join è un theta-join, in cui la condizione di selezione è una congiunzione di atomi di uguaglianza. Equi-join: r 1 F r 2 = σ F (r 1 r 2 ) F è una congiunzione di atomi. F = C 1 C 2...C n Ogni atomo è un uguaglianza, tra due attributi (A,B) oppure tra un attributo ed una costante (d) nel suo dominio. C = (A = d) (A = B)

Esempio di equi-join VOLI Codice Partenza Arrivo Modello AZ123 Roma Parigi B747 AF345 Milano Boston MD80 AF167 Parigi Londra B737 AEREI Codice NrPosti Smoking B747 250 NO MD80 120 NO VOLI MODELLO=CODICE AEREI Codice Partenza Arrivo Modello NrPosti Smoking AZ123 Roma Parigi B747 250 NO AF345 Milano Boston MD80 120 NO

Il join naturale di tue relazioni r 1 ed r 2 può essere espresso mediante gli operatori di selezione, equijoin e ridenominazione. Es. date 2 relazioni: r 1 (ABC), r 2 (BCD) Step1: Ridenominazione Step2: Equi-join Step3: Proiezione ρ B'C'< B,C (r 2 ) r 1 B=B' C=C' ρ B'C'< B,C (r 2 ) Π ABCD (r 1 B=B' C=C' ρ B'C'< B,C (r 2 ))

Come in SQL, è possibile definire delle viste, sotto forma di interrogazioni dell algebra relazionale cui si assegna un nome. L e v i s t e p o s s o n o e s s e r e u s a t e i n a l t r e interrogazioni, per semplificarne la scrittura. Esempio di vista con nome IMPIEGATI IMPIEGATI = σ SEDE=BOLOGNA (IMPIEGATI SEDI )

L algebra relazionale consente di creare interrogazioni equivalenti tra loro. L equivalenza puo essere: Dipendente dallo schema E 1 R E 2 à Se E 1 =E 2 per ogni istanza r dello schema R Assoluta (per ogni schema) E 1 E 2 se E 1 R E 2 per ogni schema R

Esempio di uguaglianza dipendente dallo schema Π AB (R 1 ) Π AC (R 2 ) R Π ABC (R 1 R 2 ) Es. L uguaglianza funziona sullo schema seguente: R 1 =VOLI(Codice, AeroportoArrivo, OraArrivo, OraPartenza, Vettore) R 2 =AEREI(Vettore, NumPasseggeri) Ma che accade se le due relazioni coinvolte hanno altri attributi in comune oltre a quelli che compaiono in A?

STUDENTI Matricola Nome Cognome CdL 01212 Marco Rossi Fisica 02121 Michele Bianchi Informatica 43242 Giovanna Verdi Chimica 56776 Daniele Rosati Fisica ANAGRAFICA Nome Cognome CF Data Michele Rossi MR233G 03/01/1990 Michele Marchi MM768H 06/11/1992 Giovanna Verdi GV1111J 05/11/1993 Giovanna Bianchini GB3133J 23/06/1988 Π NOME,CdL (STUDENTI ) Π NOME,DATA (ANAGRAFICA) Nome CdL Data Michele Informatica 03/01/1990 Michele Informatica 06/11/1992 Giovanna Chimica 05/11/1993 Giovanna Π NOME,CdL,DATA (STUDENTI ANAGRAFICA) Nome CdL Data Chimica 05/11/1993 Giovanna Fisica 23/06/1988

Uguaglianze a livello di schema Atomizzazione delle selezioni: Idempotenza delle proiezioni: Selezione anticipata: (F fa riferimento solo ad attributi di E 2 ) Inglobamento di una selezione: σ F1 F 2 (E) = σ F1 (σ F 2 (E)) Π X (E) = Π X (Π XY (E)) σ F (E 1 E 2 ) = E 1 σ F (E 2 ) σ F (E 1 E 2 ) = E 1 F E 2

Uguaglianze a livello di schema (continua) Commutatività della selezione: (F deve riferirsi solo ad attributi in Y) Commutatività del join: Associtatività del join: σ F (Π Y (E)) = Π Y (σ F (E)) E 1 E 2 = E 2 E 1 (E 1 E 2 ) E 3 = E 1 (E 2 E 3 )

Uguaglianze a livello di schema (continua) Proiezione anticipata: Π X1Y2 (E 1 E 2 ) = E 1 Π Y2 (E 2 ) (E 1 ed E 2 definite su X 1 ed X 2. Y 2 deve contenere l intersezione di X 1 ed X 2.) Proprieta distributive della selezione e proiezione: σ F (A B) = σ F (A) σ F (B) σ F (A B) = σ F (A) σ F (B) Π F (A B) = Π F A Π F (B)

Q. Come si dimostra se un uguaglianza a livello di schema è valida? Verificare l opposto è facile à Basta trovare un esempio (schema/istanza) su cui l uguaglianza non vale Π A (E 1 F E 2 ) = Π A (E 1 ) F Π A (E 2 ) Se non ci sono assunzioni sulla struttura di E 1, E 2, ed A, l uguaglianza sopra è FALSA à CONTROESEMPIO: E1=IMPIEGATI(Codice, Stipendio, Sede) E2=SEDI(Citta, Mansione) A=Stipendio F: (Sede=Citta)

Q. Come si dimostra se un uguaglianza a livello di schema è valida? Es. Dimostrare che: SCHEMA DI DIMOSTRAZIONE 1) Occorre dimostrare che: 2) Occorre dimostrare che: σ F1 F 2 (E) = σ F1 (σ F 2 (E)) se t σ F1 (σ F 2 (E)) t σ F1 F 2 (E) se t σ F1 F 2 (E) t σ F1 (σ F 2 (E))

Esempio di ottimizzazione di query Dato il seguenti schema: VOLI(Codice, CittaPartenza, CittaArrivo, Vettore) AEREI(Modello, NrPosti, Smoking) Q. Determinare i modelli degli aerei in partenza da Milano con meno di 100 passeggeri. Π MODELLO (σ MODELLO=VETTORE CITTAPART=MILANO NRPOSTI <100 (VOLI AEREI ))

Esempio di ottimizzazione di query 1. Atomizzazione delle selezioni. Π MODELLO (σ MODELLO=VETTORE (σ CITTAPART=MILANO (σ NRPOSTI <100 (VOLI AEREI )))) 2. Anticipazione della selezione rispetto al join Π MODELLO (σ MODELLO=VETTORE ((σ CITTAPART=MILANO (VOLI ) (σ NRPOSTI <150 AEREI )))) 3. Inglobamento della selezione nel join Π MODELLO ((σ CITTAPART=MILANO (VOLI ) MODELLO=VETTORE (σ NRPOSTI <150 AEREI )))

Esempio di ottimizzazione di query 4. Anticipazione della proiezione. Π MODELLO (((Π MODELLO (σ CITTAPART=MILANO (VOLI ))) MODELLO=VETTORE (Π VETTORE (σ NRPOSTI <150 AEREI ))))) Π MODELLO (σ MODELLO=VETTORE CITTAPART=MILANO NRPOSTI <100 (VOLI AEREI )) Q. E possibile ottimizzare ulteriormente l interrogazione?