Algebra relazionale Presentazione 12.1

Slides:



Advertisements
Presentazioni simili
DB -Algebra Relazionale
Advertisements

Calcolo Relazionale.
DB - Modello relazionale dei dati
Algebra e calcolo relazionale (parte 2)
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Interrogazione di una base di dati relazionale Algebra relazionale.
DOCUMENTAZIONE DI SCHEMI E/R
1 Progettazione logica: Il modello relazionale Eugenio Di Sciascio.
1 Algebra Relazionale Eugenio Di Sciascio. 2 Introduzione Lalgebra relazionale è un linguaggio procedurale: le operazioni vengono specificate descrivendo.
4 – Progettazione – Introduzione e Modello E-R
Algoritmo di Query Optimization. Espressione Algebrica di Query LAlgebra Relazionale può essere utilizzata come linguaggio per interrogare una base di.
Basi di Dati prof. A. Longheu 4 – Progettazione – Introduzione e Modello E-R Cap. 5 Basi di dati Atzeni – Ceri – Paraboschi - Torlone.
Operazioni Relazionali
ESEMPI DI ARCHIVI DI DATI
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Corso di Informatica (Programmazione)
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
11/10/2001Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 1 Viste (relazioni derivate) Rappresentazioni diverse per gli stessi dati (schema esterno)schema.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
DB -Algebra Relazionale
Algoritmo di Query Optimization
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Proiezione Dati una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y si indica con Y ( r ) o PROJ Y ( r ) ed è linsieme di tuple su Y ottenute.
Relazioni Relazione : concetto mutuato dalla definizione di relazione matematica della teoria degli insiemi, come sottoinsieme del prodotto cartesiano.
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Modello Relazionale Proposto agli inizi degli anni ‘70 da Codd
Basi di dati Claudia Raibulet
Il Modello Relazionale
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
INFORMATICA Corso Base Modulo G: I DataBase  Access.
MODELLO LOGICO DEI DATI
Introduzione a Oracle 9i
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
SQL.
Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione.
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
DB- Sistemi Informativi
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema.
Le query in SQL Unità didattica sviluppata per l’ITIS “A. Volta” – Classe 5 sez. I Ing Domenico Liguori - Università degli studi di Napoli “Federico.
ALGEBRA RELAZIONALE. Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante.
ALGEBRA E CALCOLO RELAZIONALE
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
Il modello relazionale. Modello logico dei dati basato su concetti relazione e tabella Relazione: da teoria degli insiemi Tabella: rappresentazione grafica.
Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema.
BASI DI DATI. 2 Sommario Introduzione e obiettivi Introduzione e obiettivi Il modello di dati relazionale Il modello di dati relazionale SQL SQL Software.
1 Il modello relazionale. 2 Introduzione Il modello relazionale, sebbene non sia stato il modello usato nei primi DBMS, e' divenuto lentamente il modello.
Basi di dati e Relazioni Uno schema di relazione R(X) è costituito da un simbolo (nome della relazione) R e da una serie di attributi X={A 1, A 2, …, A.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Join Proprietà Il join di r 1 e r 2 contiene un numero di tuple compreso fra zero e il prodotto di |r 1 | e |r 2 | se il join di r 1 e r 2 è completo allora.
1 Sistemi per il recupero delle informazioni PARTE - V MODELLO RELAZIONALE DEI DATI.
Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata.
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni) Normalizzazione di Schemi.
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Eprogram informatica V anno.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Informatica Introduzione alle basi di dati Lezione 7 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
L’Algebra Relazionale
Operazioni Relazionali
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
DB- Sistemi Informativi Insieme di programmi in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Normalizzazione. Introduzione Nell’organizzazione tradizionale degli archivi, si verificano alcuni problemi, quali: Ridondanza dei dati (gli stessi dati.
Il Modello Relazionale. I modelli logici dei dati Tradizionalmente, esistono tre modelli logici: –gerarchico –reticolare –relazionale I modelli gerarchico.
Il modello relazionale. Modello Relazionale 2 Dal modello concettuale a quello logico Una volta stabilita la rappresentazione concettuale della realtà.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Transcript della presentazione:

Algebra relazionale Presentazione 12.1 Informatica Generale (Prof. Luca A. Ludovico)

Linguaggi di interrogazione per db relazionali Tipologia: Dichiarativi: specificano le proprietà del risultato ("che cosa") Procedurali: specificano le modalità di generazione del risultato ("come") Rappresentanti più significativi: Algebra relazionale: procedurale SQL (Structured Query Language): dichiarativo Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Algebra relazionale Si basa su un insieme di operatori definiti su relazioni che producono relazioni che possono essere composti Le relazioni sono insiemi. I risultati dell’applicazione di operatori su relazioni (insiemi) debbono essere relazioni (insiemi). Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Operatori dell’algebra relazionale L'algebra relazionale ha 6 operatori di base e diversi operatori derivati, che possono cioè essere definiti come combinazione di operatori primitivi. Operatori fondamentali (di base): operatori binari di Unione operatori binari di Differenza operatori binari di Prodotto cartesiano operatori unari di Selezione operatori unari di Proiezione operatori unari di Ridenominazione Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Operatori dell’algebra relazionale I sei operatori precedenti sono fondamentali, perché nessuno di essi può essere omesso senza perdere in espressività. Operatori derivati (da quelli di base): operatore insiemistico binario di Intersezione operatore di Join in varie forme (Theta-Join, Natural-Join, etc.) operatore di Divisione Nel seguito indichiamo con r(X) la relazione r definita sullo schema X. X è un insieme di attributi. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Unione (teoria degli insiemi) Nella teoria degli insiemi, l'unione di due insiemi A e B è data dall'insieme formato da tutti gli elementi che appartengono all'insieme A o all'insieme B o a entrambi. L'unione è una operazione binaria. Nell'algebra booleana corrisponde all'operatore OR; in logica, corrisponde alla disgiunzione. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Unione (relazioni) Vincolo: avere tuple omogenee cioè definite sugli stessi attributi. L'unione di due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X è indicata con r1(X) È r2(X). Il risultato è una relazione ancora su X contenente le tuple che appartengono a r1 oppure a r2 oppure a entrambe, senza ripetizioni delle eventuali tuple ripetute. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Unione Solisti Direttori Artisti = Solisti È Direttori Nome Cognome Uto Ughi Severino Gazzelloni Salvatore Accardo Nome Cognome Riccardo Muti Chailly Giuseppe Sinopoli Daniele Gatti Artisti = Solisti È Direttori Nome Cognome Riccardo Muti Chailly Giuseppe Sinopoli Daniele Gatti Uto Ughi Severino Gazzelloni Salvatore Accardo Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Intersezione (teoria degli insiemi) Nella teoria degli insiemi, l'intersezione di due insiemi A e B è data dall'insieme formato da tutti gli elementi che appartengono sia all'insieme A che all'insieme B contemporaneamente. L'intersezione è una operazione binaria. Nell'Algebra Booleana corrisponde all'operatore AND e, in logica, alla congiunzione. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Intersezione (relazioni) Vincolo: avere tuple omogenee cioè definite sugli stessi attributi. L’intersezione di due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X è indicata con r1(X) Ç r2(X). Il risultato è una relazione ancora su X contenente solo le tuple che appartengono sia a r1(X) sia a r2(X). Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Intersezione Cantanti Direttori Cantanti Ç Direttori Nome Cognome Luciano Pavarotti Josè Carreras Placido Domingo Nome Cognome Riccardo Muti Placido Domingo Daniel Harding Daniele Gatti Cantanti Ç Direttori Nome Cognome Placido Domingo Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Differenza (teoria degli insiemi) Nella teoria degli insiemi, dati due insiemi A e B, il complemento di A rispetto a B (o l'insieme differenza B – A), è formato dai soli elementi di B che non appartengono ad A. Formalmente: B – A = B / A = {x Î B Ù x Ï A} Si noti che l'insieme differenza B - A è un sottoinsieme dell'insieme B. Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Differenza (relazioni) Vincolo: avere tuple omogenee cioè definite sugli stessi attributi. Il complemento di r1(X) e r2(X) è indicato come r2(X) − r1(X). Il risultato è una relazione su X contenente tutte le tuple che appartengono a r2(X) e non appartengono a r1(X). Si osservi che il secondo operando, r1(X), non è necessariamente un sottoinsieme di r2(X). Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Differenza Direttori in attività Direttori italiani Nome Cognome Riccardo Muti Daniel Harding Claudio Abbado Barenboim Simon Rattle James Levine Daniele Gatti Nome Cognome Antonino Votto Arturo Toscanini Giuseppe Sinopoli Claudio Abbado Daniele Gatti Riccardo Muti Direttori in attività - Direttori italiani Nome Cognome Daniel Harding Barenboim Simon Rattle James Levine Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Problema sugli insiemi Alle volte, alcune operazioni insiemistiche sarebbero sensate ma sono rese impossibili dal fatto che gli attributi presentano nomi differenti. Esempio: dati di locandina di Carmen Autori Interpreti Cognome Qualifica Bizet compositore Meilhac librettista Halévy Cognome Ruolo Barenboim direttore Rachvelishvili Carmen, mezzosoprano Kaufmann Don José, tenore Autori È Interpreti ? Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Ridenominazione L'operatore unario di ridenominazione modifica lo schema di una relazione, cambiando i nomi di uno o più attributi. Utile per ottenere delle tuple omogenee quando non lo sono (pur se il campo semantico della query lo è). Ciò che cambia sono i nomi degli attributi, mentre i valori rimangono inalterati e vengono associati ai nuovi attributi. Sintassi: REN nuovo attrib. ¬ vecchio attrib. (operando) r nuovo attrib. ¬ vecchio attrib. (operando) Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Ridenominazione Si “modifica lo schema” lasciando inalterata l'istanza Autori Interpreti Cognome Qualifica Bizet compositore Meilhac librettista Halévy Cognome Ruolo Barenboim direttore Rachvelishvili Carmen, mezzosoprano Kaufmann Don José, tenore REN Qualifica ¬ Ruolo (Interpreti) Cognome Qualifica Barenboim direttore Rachvelishvili Carmen, mezzosoprano Kaufmann Don José, tenore Schemi omogenei Ora è possibile calcolare Autori È REN Qualifica ¬ Ruolo (Interpreti) Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

SEL condizione (operando) s condizione (operando) Selezione È un operatore unario che restituisce come risultato una relazione. Sintassi: SEL condizione (operando) s condizione (operando) ove condizione è un’espressione booleana Semantica: produce un risultato che ha lo stesso schema dell'operando contiene un sottoinsieme delle ennuple dell'operando contiene solo le ennuple che soddisfano una data condizione, complessa a piacere 18 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Esempi di selezione Selezionare tutti gli studenti di nome “Paola”: s NOME = “Paola” (studente) 19 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Esempi di selezione Selezionare tutti gli studenti in cui l’istanza dell’attributo CITTA’ è “Torino” o “Roma” e l’istanza dell’attributo C-DIP è diversa da “Log” SEL ((CITTA= “Torino” OR CITTA= “Roma”) AND (NOT(C-DIP=“Log”))) (studente) s((CITTA= “Torino” Ú CITTA= “Roma”) Ù (Ø(C-DIP=“Log”))) (studente) 20 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

PROJ lista attributi (operando) p lista attributi (operando) Proiezione È un operatore unario che restituisce come risultato una relazione. Sintassi: PROJ lista attributi (operando) p lista attributi (operando) ove lista attributi è un sottoinsieme dello schema X. Semantica: produce un risultato che ha parte degli attributi dell'operando, ossia tutti quelli elencati in lista attributi contiene ennuple cui contribuiscono tutte le ennuple dell'operando 21 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Esempi di proiezione Restituire una tabella avente come schema gli attributi NOME e C-DIP e come istanza la restrizione delle tuple sugli attributi NOME e C-DIP p NOME, C-DIP (studente) 22 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Esempi di proiezione Restituire una tabella avente come schema l’attributo C-DIP e come istanza la restrizione delle tuple sull’attributo C-DIP p C-DIP (studente) Supponendo di fare un’operazione di proiezione solo sull’attributo C-DIP della relazione studente, si verrebbero a creare dei duplicati, delle tuple ripetute (ci sono infatti due studenti nel corso d’informatica). Nei linguaggi formali la proiezione elimina automaticamente i duplicati. 23 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Cardinalità delle proiezioni Una proiezione: contiene al più tante ennuple quante l'operando può contenerne di meno, a causa di eliminazione di duplicati Se X, insieme degli attributi su cui si effettua la proiezione, è una superchiave di R, allora PROJX(R) contiene esattamente tante ennuple quante R. 24 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Selezione e proiezione Sono due operatori "ortogonali“ selezione: decomposizione orizzontale proiezione: decomposizione verticale Proiezione Selezione 25 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Esercizi Quali studenti (identificati dal solo nome) sono iscritti al diploma di informatica? Quali studenti di Logistica (identificati dalla matricola) non sono di Milano? 26 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Soluzioni Quali studenti (identificati dal solo nome) sono iscritti al diploma di informatica? p Nome sC-DIP=“Inf” (STUDENTE) Quali studenti di Logistica non sono di Milano? p Matr sC-DIP=“Log” Ù (Ø(Città=“Milano”))(STUDENTE) Nome Carlo Paola Matr 702 27 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Esercizio Estrarre la matricola degli studenti che hanno preso almeno un voto superiore a 28 e non sono mai scesi sotto il 25. 28 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Soluzione Vengono sottratti a tutti gli studenti (identificati dalla sola matricola) che hanno preso un voto maggiore o uguale a 28 tutti quelli che hanno preso un voto inferiore a 25. pMatr sVoto>=28 (ESAME) - pMatr sVoto<25 (ESAME) 29 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Estrazione di informazioni dalle relazioni Combinando selezione e proiezione, è possibile estrarre interessanti informazioni da una relazione. Non è ancora possibile però correlare informazioni presenti in relazioni diverse. Il join è l'operatore dell'algebra relazionale che permette di correlare dati in relazioni diverse. 30 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Prodotto cartesiano Il prodotto cartesiano di due relazioni R e S, indicato con R x S, è una tabella (priva di nome) avente come schema gli attributi di R e S e come istanza tutte le possibili coppie di tuple di R e S. Cantanti Rappresentazioni Nome Cognome Luciano Pavarotti Josè Carreras Opera Teatro Tosca Scala Aida Metropolitan Cantanti X Rappresentazioni Nome Cognome Opera Teatro Luciano Pavarotti Tosca Scala Aida Metropolitan Josè Carreras 31 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Join Join è un operatore derivato dell’algebra relazionale, e più precisamente si tratta di una particolare selezione fatta sulla relazione ottenuta da un prodotto cartesiano. Più formalmente ciò che produce il join è una tabella (priva di nome) avente per schema la concatenazione degli schemi di origine e per istanza le tuple ottenute concatenando quelle tuple dei due schemi che soddisfano un predicato. Sintassi: A JOIN predicato B oppure A  predicato B 32 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Join La sintassi del predicato di join è un’espressione congiuntiva (ossia un AND) di predicati semplici: ATTR1 op ATTR2 ove ATTR1 appartiene a TAB1, ATTR2 appartiene a TAB2 e op è un operatore di confronto. Il join può essere classificato in due diversi tipi: equi-join: consente soli confronti di uguaglianza. Il predicato va specificato. join naturale: equi-join di tutti gli attributi omonimi. Si omette il predicato e si elimina la colonna ripetuta. 33 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

s STUDENTE.Matr = ESAME.Matr (STUDENTE X ESAME) Esempio di join Equi-join: STUDENTE  STUDENTE.Matr = ESAME.Matr ESAME è equivalente alla seguente espressione s STUDENTE.Matr = ESAME.Matr (STUDENTE X ESAME) Join naturale: STUDENTE  ESAME 34 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Esempio di join naturale 35 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Join completo, incompleto e vuoto Se tutte le tuple delle relazioni chiamate in causa partecipano al join, si parla di join completo. Se alcune tuple dell’una o dell’altra relazione non vi partecipano, si parla di join incompleto. Se il join non riesce a relazionare alcuna tupla della prima relazione con alcun’altra della seconda relazione, si parla di join vuoto. 36 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Join esterno Nel caso di join incompleto o vuoto, alcune ennuple possono non contribuire al risultato in quanto la colonna su cui opera il join non ha una controparte nell’altra relazione. Il join esterno estende, con valori nulli, le ennuple che verrebbero tagliate fuori da un join (interno). Esiste in tre versioni: sinistro (JOINleft): mantiene tutte le ennuple del primo operando, estendendole con valori nulli, se necessario destro (JOINright): ... del secondo operando ... completo (JOINfull): ... di entrambi gli operandi ... 37 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Osservazioni sulla cardinalità del join Siano R1(A,B), R2(B,C) due relazioni con alcuni attributi in comune, identificati come insieme B. In generale, il join di R1 e R2 contiene un numero di ennuple compreso fra zero ed il prodotto di |R1| e |R2|: 0 ≤ |R1 JOIN R2| ≤ |R1| × |R2| Se il join coinvolge una chiave di R2 (ovvero, B è chiave in R2), allora il numero di ennuple è compreso fra zero e |R1|: 0 ≤ |R1 JOIN R2| ≤ |R1| Se il join coinvolge una chiave di R2 (ovvero, B è chiave in R2) ed esiste un vincolo di integrità referenziale fra B (in R1) e R2, allora il numero di ennuple è pari a |R1|: |R1 JOIN R2| = |R1| 38 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Esercizio Estrarre il nome degli studenti che non hanno mai preso meno di 28. 39 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Soluzione Nell’ultima parte della soluzione vengono trovate tutte le matricole degli studenti che hanno preso un voto minore di 28. Queste matricole vengono sottratte alle matricole di tutti gli studenti che hanno sostenuto esami. Rimangono quindi le matricole degli studenti che non hanno mai preso un voto minore di 28. Per trovare il nome di queste matricole viene fatto un join con la tabella STUDENTE. 40 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Esercizio Estrarre il nome degli studenti che hanno sostenuto “informatica” e “matematica” lo stesso giorno. 41 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1

Soluzione Viene inizialmente fatto un join (seconda riga) tra la tabella ESAME e le tuple della tabella CORSO che hanno come istanza dell’attributo Titolo la parola “informatica”. Facendo cosi si ottiene una tabella che contiene tutti gli studenti che hanno fatto l’esame di informatica (oltre a tutti gli attributi di ESAME e CORSO). Nell’ultima riga viene creata analogamente una tabella che contiene gli studenti che hanno fatto matematica. Ne vengono proiettati gli attributi Matr e Data e vengono ridenominati in MatrMat e DataMat. La relazione così ottenuta (formata dai due attributi MatrMat, DataMat) viene posta in join con la tabella degli studenti di informatica. Viene posta la condizione di join: Matr = MatrMat e Data = DataMat in modo da ottenere solo quegli studenti che hanno dato entrambi gli esami e nella stessa data. Il nome di questi studenti è però contenuto nella tabella STUDENTI, e quindi viene fatto un ulteriore join (la prima riga) proprio con la tabella STUDENTI, per ottenere i nomi degli studenti in questione. 42 Informatica Generale (Prof. Luca A. Ludovico) Presentazione 12.1