4/16/07. Algebra Relazionale. Introduzione. La Base di Dati di Esempio

Documenti analoghi
Algebra Relazionale. Concetti Fondamentali

Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

Introduzione. Introduzione

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Gestione e Analisi dei Dati. Lezione 4 Relazioni multi tabella Relazioni uno-a-uno, uno-a-molti, molti-a-molti

BASI di DATI. SQL: concetti fondamentali

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

Basi di Dati SQL-92. Concetti Fondamentali

Interrogazioni con Raggruppamenti

Basi di Dati. Concetti Avanzati

ALGEBRA RELAZIONALE. Patrizio Dazzi a.a

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati. Dettagli e Approfondimenti

SQL: RAGGRUPPAMENTI, QUANTIFICAZIONE, METODO. Patrizio Dazzi a.a

SQL: SCRIVERE INTERROGAZIONI E ANNIDARLE. Patrizio Dazzi a.a

SQL: ALTRE FORME DI JOIN, FUNZIONI AGGREGATIVE, ESPRESSIONI. Patrizio Dazzi a.a

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

STRUCTURED QUERY LANGUAGE (SQL) E INTERROGAZIONI. Patrizio Dazzi a.a

Basi di dati. Linguaggi di interrogazione

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

Algebra relazionale: operazioni

Basi di Dati. Progettazione Logica

Basi di Dati. La Progettazione Logica. Sommario. Il Processo di Progetto della BD. Algoritmo di Progettazione Logica

VISTE. 19/11/2015 Concetti Avanzati - SQL 71

BASE DI DATI. Progettazione logica. Informatica Umanistica Università di Pisa

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 e SQL

Vincoli di Integrità Referenziale

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

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida

Operatori derivati dagli insiemi

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

Structured Query Language

Basi di Dati. Sistemi per Basi di Dati Relazionali: Modello Logico. Concetti Fondamentali. Concetti Fondamentali

Mirco Nanni ISTI CNR, Pisa. CdL in Lettere A.A. 2007/2008

Modulo 2 Data Base 2

Linguaggi di interrogazione. linguaggi interrogazione 1

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

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

Informatica Grafica. Basi di dati parte 2

Interrogazioni nidificate

Scopo. Informatica. Sistema informativo. Sistema informatico

Scopo Laboratorio di Informatica

Parte III. L algebra relazionale

ALGEBRA RELAZIONALE. DB -Algebra Relazionale 1

Scopo Informatica. Sistema informativo. Sistema informatico. Gestione dell informazione per le lauree triennali

Interrogazioni nidificate

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

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

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

Sistemi di Elaborazione delle Informazioni

Linguaggi per basi di dati

Laboratorio di Basi di Dati

Corso di Basi di Dati

Parte III L algebra relazionale

Il linguaggio SQL. TUTORATO DIFONDAMENTI DIINFORMATICA

Basi di dati e Relazioni

Dichiarazione degli schemi in SQL DDL 1

Informatica. per laurea triennale di area non informatica. 1 Le basi di dati

Il linguaggio SQL: DDL di base

Interrogazioni in SQL SQL1 1

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

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))

Basi di Dati. Modello Concettuale

Basi di dati I 8 settembre 2011 Tempo a disposizione: un ora e trenta minuti. Libri chiusi.

Modulo 2 Data Base 3

Corso di Informatica Linguaggio SQL prima parte

FONDAMENTI DI INFORMATICA 1

SQL: "storia" 31/05/2006 2

Fondamenti di Teoria delle Basi di Dati

Laboratorio di Basi di Dati e Multimedia

REGISTRO DELLE LEZIONI

Laboratorio di Basi di Dati

Basi di da' Il modello relazionale. Anna Monreale Università di Pisa

Corso di Informatica

Basi di dati (database)

Sommario. Introduzione... 13

3 Algebra Relazionale

REGISTRO DELLE LEZIONI

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

Sommario FONDAMENTI DI INFORMATICA 1. Sistemi informatici e sistemi informativi. Informazioni e dati BASI DI DATI

Dati una relazione r(x) e un sottoinsieme Y di X, la proiezione di r su Y si indica con

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Model o relazionale 1

Aggiornamenti e Interrogazioni

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Fondamenti di Teoria delle Basi di Dati

Basi di dati: appello 14/07/06

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

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

Lezione 5. Algebra relazionale

Stringhe di caratteri

Transcript:

Algebra Relazionale Concetti Fondamentali Introduzione La Base di Dati di Esempio Algebra Relazionale selezione, proiezione prodotto cartesiano, join unione, intersezione, differenza ridenominazioni Forma Standard 2 SQL Linguaggio di Definizione (DDL) Creare la base di dati e le tabelle (schema) Linguaggio di Controllo (DCL) Creare utenti e autorizzazioni Linguaggio di Manipolazione (DML) Inserire, cancellare, modificare le ennuple Interrogare la base di dati DDL, DCL concettualmente semplici DML aggiornamenti: concettualmente semplice interrogazioni: complesso Lavorare con oggetti inconsueti le tabelle algebra su tabelle; analogo: algebra sui reali 4

Algebra per Tabelle insieme di operatori che applicati a tabelle restituiscono tabelle; analogo: y+, x-2 espressioni; analogo: z=(y+)-2 sintassi astratta; analogo: semantica operazionale astratta analogo: somme per addizioni di unità W = x y Professori codice,, qualifica, facoltà numeri di telefono Studenti matricola,, tipo di corso (ciclo): laurea tr., laurea spec. relatore della tesi Corsi codice, titolo, docente, ciclo Esami studente, voto, lode, corso Tutorato Studentesco studente tutore, studente tutorato 5 6 TABLE Professori ( cod char(4) PRIMARY KEY, cog varchar(20) NOT NULL, varchar(20) NOT NULL, qualifica char(5), facolta char(0) ); TABLE Studenti ( matr integer PRIMARY KEY, cog varchar(20) NOT NULL, varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod) ); TABLE Corsi ( cod char() PRIMARY KEY, titolo varchar(20) NOT NULL, TABLE Numeri ( ciclo char(20), docente char(4) REFERENCES Professori(cod) ); TABLE Tutorato ( studente integer REFERENCES Studenti(matr), tutor integer REFERENCES Studenti(matr), PRIMARY KEY (studente,tutor)); TABLE Esami ( studente integer REFERENCES Studenti(matr) ON DELETE cascade ON UPDATE cascade, corso char() REFERENCES Corsi(cod), voto integer, lode bool, CHECK (voto>=8 and voto<=0), CHECK (not lode or voto=0), PRIMARY KEY (studente, corso)); professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Professori Studenti Corsi cod cog matr cog cod PR titolo Programmazione I ASD Algoritmi e Str. Dati IN Informatica Teorica qualifica facolta ordinario Ingegneria associato Scienze supplente ciclo anno relatore 2 ciclo docente 7 8 2

Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Tutorato studente tutor Numeri professore numero 09720545 Esami studente corso PR ASD IN voto 27 0 24 VC lode false true false 472456 097205227 0972056 82456 Nota nella base di dati vengono utilizzati ripetutamente codici alfanumerici leggibilità dell esempio (es:, PR ) in generale è meglio adottare come chiavi primarie codici interi maggiore compattezza e migliori prestazioni PR 2 false ASD 20 false ASD 28 false PR 0 false IN 0 true 9 0 Collezione di operatori applicati a tabelle che producono tabelle Espressioni composizione di operatori applicati a tabelle Assegnazioni consentono di assegnare ad un nuova tabella il risultato di un espressione Attenzione lavoreremo con due tipi di tabelle Tabelle originali della base di dati con schema completo di vincoli Tabelle temporanee risultato di interrogazioni dell algebra per queste tabelle non viene definito uno schema vero e proprio ereditano parte dello schema (attributi e tipi) dall interrogazione di cui sono il risultato 2

Operatori principali selezione proiezione prodotto cartesiano e join unione, intersezione e differenza ridenominazione Funzione serve per selezionare alcune delle ennuple di una tabella scartando le altre sulla base di una condizione Esempio Estrarre dalla base di dati una tabella, StudentiTriennio, contenente i dati degli studenti della laurea triennale 4 Studenti matr cog ciclo anno 2 relatore Operatore unario ( monadico ) condizione sui valori degli attributi Condizione: espressione booleana operandi: valori degli attributi della tabella operatori di confronto, operatori booleani condizione: Studenti.ciclo= StudentiTriennio matr cog ciclo anno relatore Sintassi: s (R) condizione 2 StudentiTriennio = s (Studenti) ciclo= 5 6 4

Studenti matr cog ciclo anno relatore 2 condizione: ciclo= AND anno > Schema del risultato attributi e tipi della tabella originale Istanza del risultato ennuple della tabella i cui valori soddisfano la condizione cardinalità minore o uguale rispetto alla tabella originale Risultato matr cog ciclo anno relatore 2 Risultato = s (Studenti) ciclo= AND anno> 7 8 Nota sullo schema si tratta di una tabella temporanea i nomi (e i tipi) degli attributi sono ereditati dalle tabelle della base di dati Funzione estrarre alcune delle colonne di una tabella Esempio Estrarre l elenco dei nomi e i cognomi degli studenti TABLE StudentiTriennio ( TABLE StudentiTriennio ( Studenti.matr integer, matr integer, Studenti.cog varchar(20), Studenti.cog varchar(20), Studenti. varchar(20), Studenti. varchar(20), Studenti.ciclo char(20), Studenti.ciclo char(20), Studenti.anno integer, anno integer, Studenti.relatore char(4)); relatore char(4)); TABLE ElencoNomi ( Studenti.cog varchar(20), Studenti. varchar(20), ); 9 20 5

Studenti matr cog ciclo anno 2 relatore Operatore unario lista di attributi della tabella Sintassi ElencoNomi cog p (R) lista attributi ElencoNomi = p (Studenti) cog, 2 22 Schema del risultato attributi dello schema originale su cui si effettua la proiezione Istanza del risultato restrizione ( proiezione ) delle ennuple originali agli attributi specificati ATTENZIONE se nel risultato non sopravvivono chiavi dello schema originale possono esserci duplicati Studenti matr Risultato cog anno 2 cog ciclo anno 2 relatore Risultato = p (Studenti) cog, anno ennuple identiche (duplicati) NOTA: ulteriori duplicati se Risultato = p (Studenti) cog 2 24 6

Finora operatori unari lavorano sui dati di un unica tabella In realtà è nella natura del modello relazionale frammentare i dati tra le tabelle molto spesso è necessario correlare dati provenienti da tabelle diverse è possibile utilizzare il prodotto cartesiano Esempio Generare la tabella ProfessoriENumeri contenente nomi, cognomi e numeri dei prof. TABLE Professori ( cod char(4) PRIMARY KEY, cog varchar(20) NOT NULL, varchar(20) NOT NULL, qualifica char(5), facolta char(0) ); TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); TABLE ProfessoriENumeri ( Professori.cog varchar(20), Professori. varchar(20), numero char(9)); 25 26 Professori Numeri professore numero 09720545 cod cog qualifica facolta 472456 ordinario Ingegneria VC 097205227 associato Scienze 0972056 supplente 82456 I Passo: Prodotto Cartesiano TabellaA = Professori X Numeri cod cog qualifica facolta professore numero ordinario Ingegneria 09720545 ordinario Ingegneria 472456 ordinario Ingegneria VC 097205227 ordinario Ingegneria 0972056 ordinario Ingegneria 82456 associato Scienze 09720545 associato Scienze 472456 supplente 82456 27 cod cog qualifica facolta professore ordinario Ingegneria ordinario Ingegneria ordinario Ingegneria VC ordinario Ingegneria ordinario Ingegneria associato Scienze supplente II Passo: Selezione TabellaB = s cod=professore (TabellaA) cod cog qualifica facolta professore ordinario Ingegneria ordinario Ingegneria associato Scienze VC supplente supplente TabellaA numero 09720545 472456 097205227 0972056 82456 09720545 82456 numero 09720545 472456 097205227 0972056 82456 28 7

Tabella B cod cog qualifica facolta professore numero In sintesi ordinario Ingegneria 09720545 ordinario Ingegneria 472456 associato Scienze VC 097205227 supplente 0972056 supplente 82456 III Passo: Proiezione ProfessoriENumeri = p cog,,numero (TabellaB) TabellaA = Professori X Numeri s TabellaB = (TabellaA) cod=professore ProfessoriENumeri = p (TabellaB) cog,, numero cog numero 09720545 472456 097205227 0972056 82456 ProfessoriENumeri = p ( cog,, numero s ( cod=professore Professori X Numeri )) 29 0 Operatore binario ( diadico ) è il primo operatore che consente di mettere assieme dati provenienti da tabelle diverse Sintassi R X S Schema del risultato unione degli attributi (e relativi tipi) Istanza del risultato tutte le ennuple ottenute concatenando ennuple delle due tabelle indiscriminatamente (in tutti i modi possibili) cardinalità pari al prodotto delle cardinalità 2 8

Prodotto cartesiano consente di correlare dati di tabelle diverse ma genera risultati di grandi dimensioni (es: tabelle di 000 ennuple > mil. di ennuple) su cui poi bisogna effettuare una selezione Sarebbe opportuno avere un operatore che consente di fare la correlazione verificando contestualmente la condizione Professori Numeri professore numero 09720545 cod cog qualifica facolta 472456 ordinario Ingegneria VC 097205227 VC associato Scienze 0972056 supplente 82456 I Passo: Join TabellaA = Professori cod=professore Numeri cod cog qualifica facolta professore numero ordinario Ingegneria 09720545 VC ordinario Ingegneria 472456 associato Scienze VC 097205227 supplente 0972056 supplente 82456 4 Tabella A cod cog qualifica facolta professore numero In sintesi ordinario Ingegneria 09720545 ordinario Ingegneria 472456 associato Scienze VC 097205227 supplente 0972056 supplente 82456 II Passo: Proiezione ProfessoriENumeri=pcog,,numero (TabellaA ) TabellaA = Professori ProfessoriENumeri = p cod=professore Numeri (TabellaA ) cog,, numero cog numero 09720545 472456 097205227 ProfessoriENumeri = p ( cog,, numero Professori cod=professore Numeri) 0972056 82456 5 6 9

Operatore binario ( diadico ) Sintassi R condizione S Condizione AND di condizioni semplici attributo di R = attributo di S i due attributi devono essere dello stesso tipo Schema del risultato unione degli attributi e relativi tipi Istanza del risultato: ennuple ottenute concatenando ennuple di R ed ennuple di S, tali che soddisfano la condizione Equivalente a prodotto cartesiano e selezione: R condizione S = s condizione (R X S) Attenzione: semantica operazionale diversa 7 8 Esempio Matricola e cog degli studenti che hanno sostenuto l esame di informatica teorica Richiede di correlare tre tabelle matricola di Studenti e studente di Esami cod di Corso e corso di Esami Due condizioni di join TABLE Studenti ( TABLE Esami ( matr integer PRIMARY KEY, studente integer cog varchar(20) NOT NULL, REFERENCES Studenti(matr) varchar(20) NOT NULL, corso char() ciclo char(20), REFERENCES Corsi(cod), anno integer, voto integer, relatore char(4) lode bool, REFERENCES Professori(cod)); PRIMARY KEY (studente, corso)); StudentiEsami = Studenti matr=studente Esami TABLE StudentiEsami ( matr integer, cog varchar(20), varchar(20), ciclo char(20), anno integer, relatore char(4) studente integer, corso char(), voto integer, lode bool); 9 40 0

TABLE StudentiEsami ( matr integer, cog varchar(20), varchar(20), Studenti.ciclo char(20), anno integer, relatore char(4) studente integer, corso char(), voto integer, lode bool); StudentiEsamiCorsi = StudentiEsami corso=cod Corso TABLE Corsi ( cod char() PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod)); TABLE StudentiEsamiCorsi ( matr integer, cog varchar(20), varchar(20), Studenti.ciclo char(20), anno integer, relatore char(4) studente integer, corso char(), voto integer, lode bool cod char(), titolo varchar(20), Corso.ciclo char(20), docente char(4)); 4 StudentiEsamiCorsi matr cog studente corso voto cod titolo PR 27 PR Progr... ASD 0 ASD Algorit IN 24 IN Inform PR 2 PR Progr ASD 20 ASD Algorit ASD 28 ASD Algorit PR 0 PR Progr IN 0 IN Inform dalla tabella Studenti dalla tabella Esami dalla tabella Corsi Risultato = p matricola, cog (s titolo= Inform. t. (StudentiEsamiCorsi)) Risultato matr cog 42 StudentiEsami = Studenti StudentiEsamiCorsi = StudentiEsami cod=corso Corsi StudentiEsamiCorsi = (Studenti matr=studente Esami) cod=corso Corsi il join è associativo matr=studente Esami StudentiEsamiCorsi = Studenti matr=studente (Esami cod=corso Corsi) StudentiEsamiCorsi = Studenti matr=studente Esami cod=corso Corsi In sintesi: StudentiEsami = Studenti matr=studente Esami StudentiEsamiCorsi = StudentiEsami cod=corso Corsi Risultato = p matricola, cog ( s titolo= Inform. t. (StudentiEsamiCorsi)) Risultato = p matricola, cog ( s titolo= Inform. t. ( Studenti matr=studente Esami cod=corso Corsi )) 4 44

Finora abbiamo visto gli operatori fondamentali Unari selezione, s condizione (R) proiezione, p attributi (R) Binari prodotto cartesiano, R x S Altri operatori importanti Operatori insiemistici unione intersezione differenza Ridenominazione meno importante (ha solo funzioni di leggibilità) join, R condizione S 46 45 Funzione le tabelle sono collezioni di ennuple è possibile applicare le operazioni consuete sulle collezioni unione intersezione differenza Esempio Cog e di tutte le persone TABLE Professori ( cod char(4) PRIMARY KEY, Professori.cog varchar(20) NOT NULL, Professori. varchar(20) NOT NULL, qualifica char(5), facolta char(0) ); TABLE Persone ( cog varchar(20), TABLE Studenti ( varchar(20)); matr integer PRIMARY KEY, Studenti.cog varchar(20) NOT NULL, Studenti. varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod)); 47 48 2

Professori cod cog NomiProfessori = p cog, (Professori) qualifica facolta cog ordinario Ingegneria NomiProfessori cog Persone = NomiProfessori U NomiStudenti associato Scienze cog supplente Studenti NomiStudenti = p cog, (Studenti) NomiStudenti matr cog ciclo anno relatore cog cog 2 49 50 Operatori binari Sintassi stessi simboli delle operazioni convenzionali su insiemi Unione: R U S Intersezione: R S Si applicano solo in alcuni casi le tabelle R ed S devono avere lo stesso numero di attributi associazione posizionale: gli attributi devono avere ordinatamente lo stesso tipo Schema del risultato eredita i nomi degli attributi dalla prima tabella Differenza: R S 5 52

Istanza del risultato unione, intersezione o differenza delle ennuple Attenzione semantica della differenza: tutti gli elementi del primo membro che non appartengono al secondo esempio: {,, 5} {, 7, 9} = {, 5} Attenzione dal risultato degli operatori insiemistici vengono eliminati eventuali duplicati passo finale di eliminazione degli eventuali duplicati prodotti Motivazioni semantica più naturale esistono implementazioni efficienti 5 54 Esempio cog Persone = NomiProfessori U NomiStudenti In sintesi: NomiProfessori cog NomiProfessori = p cog, (Professori) NomiStudenti = p cog, (Studenti) NomiStudenti cog Persone = NomiProfessori U NomiStudenti Persone = p cog, (Professori) U p cog, (Studenti) 55 56 4

Nota sulla base della semantica è possibile anche StranaTabella = p, cog (Professori) U p cog, (Studenti) Alex cog Funzione consente di cambiare i nomi degli attributi in una tabella temporanea es: cogpersona, Persona Caratteristiche agisce solo sullo schema non cambia né la cardinalità, né il n. di attributi normalmente si applica solo sul risultato finale (funzione puramente cosmetica ) 57 58 Sintassi r ridenominazioni (R) ridenominazioni: elenco di coppie vecchionome AS nuovonome separate da virgole vecchionome deve essere un attributo di R Semantica nello schema del risultato ai vecchi nomi sono sostituiti i nuovi In definitiva: Persone = r cog AS cogpersona, AS Persona ( p cog, (Professori)) U p cog, (Studenti) TABLE Persone ( cogpersona varchar(20), Persona varchar(20)); 59 60 5

Interrogazioni in algebra relazionale risultato dell applicazione di vari operatori è possibile applicare gli operatori in ordine vario (es: prima selezioni o prima ridenominaz.) Forma standard nel seguito viene presentata una strategia sistematica per la scrittura di interrogazioni ordine standardizzato di applicazione degli operatori dell algebra Esempio Nome e Cog dei professori ordinari che non hanno tesisti della laurea triennale Strategia (a) trovo e cog di tutti i professori ordinari (b) trovo e cog dei professori che hanno tesisti della laurea triennale faccio la differenza tra (a) e (b) 6 62 Professori cod cog qualifica facolta Professori cod cog qualifica ordinario facolta Ingegneria ordinario Ingegneria associato Scienze associato Scienze supplente supplente ProfessoriOrdinari = s qualifica = Ordinario (Professori) Studenti matr cog ciclo anno relatore cod cog qualifica facolta 2 ordinario Ingegneria NomiOrdinari = r cog AS cogprof, AS Prof ( p cog, (ProfessoriOrdinari)) cogprof Prof ProfessoriConTesisti = Studenti relatore = cod Professori 6 64 6

matr ProfessoriConTesisti = Studenti S.cog S. ciclo anno relatore relatore = cod Professori P.cog P. qualif ica ordinario ordinario associato f acolta Ing. Ing. Sc. NomiOrdinari = r cog AS cogprof, AS Prof ( p cog, ( s qualifica = Ordinario ( Professori)) cogprof Prof matr ProfessoriConTesiTriennali = s ciclo = (ProfessoriConTesisti) S.cog S. ciclo NomiProfConTesiTriennali = r cog AS cogprof, AS Prof ( p Professori.cog, Professori. (ProfessoriConTesiTriennali)) cogprof anno relatore Prof P.cog P. qualif ica ordinario f acolta Ing. NomiProfConTesiTriennali = r cog AS cogprof, AS Prof ( p cog, ( s ciclo = ( cogprof Studenti relatore = cod Professori ))) Risultato = NomiOrdinari NomiProfConTesiTriennali cogprof Prof Prof 65 66 sottointerrogazione n. operatore insiemistico sottointerrogazione n. 2 Risultato = r cog AS cogprof, AS Prof ( p cog, ( s qualifica = Ordinario ( Professori)) r cog AS cogprof, AS Prof ( p cog, ( s ciclo = ( Studenti relatore = cod Professori )) Varie sottointerrogazioni (una o più) correlate con operatori insiemistici Ciascuna sottointerrogazione prima: eventuali join o prodotti cartesiani poi: eventuali selezioni poi: eventuali proiezioni infine: eventuali ridenominazioni ridenominazioni proiezioni selezioni join 67 68 7