La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

G. Mecca – – Università della Basilicata Basi di Dati Algebra Relazionale Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso.

Presentazioni simili


Presentazione sul tema: "G. Mecca – – Università della Basilicata Basi di Dati Algebra Relazionale Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso."— Transcript della presentazione:

1 G. Mecca – – Università della Basilicata Basi di Dati Algebra Relazionale Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

2 2 G. Mecca - - Basi di Dati Dettagli e Approfondimenti m Selezioni e Valori Nulli m Proiezione e Duplicati m Altre Forme di Join m Altri Operatori Ordinamento Funzioni Aggregative Alias m Forma Standard Completa Algebra Relazionale >> Sommario

3 3 G. Mecca - - Basi di Dati Algebra Relazionale m Linguaggio alla base del DML di SQL m Basato sullalgebra teorica di Codd m Insieme di operatori su tabelle m che producono tabelle m Espressioni complesse m Assegnazioni Algebra Relazionale >> Dettagli e Approfondimenti

4 4 G. Mecca - - Basi di Dati Selezione m Selezione seleziona alcune tra le ennuple di una tabella condizione sui valori degli attributi m Sintassi condizione (R); es: ciclo=laurea tr. OR anno=2 (Studenti) m Semantica seleziona nel risultato le ennuple di R che soddisfano la selezione Algebra Relazionale >> Dettagli e Approfondimenti >> Selezione e V. Nulli

5 5 G. Mecca - - Basi di Dati Selezione e Valori Nulli m Attenzione ai valori nulli le condizioni sono sempre false in presenza di valori nulli es: facolta<>Ingegneria solo le ennuple per cui la facoltà è non nulla e diversa da ing. condizioni speciali: IS NULL, IS NOT NULL es: facolta<>Ingegneria OR facolta IS NULL tutte le ennuple in cui il valore non è ing. Algebra Relazionale >> Dettagli e Approfondimenti >> Selezione e V. Nulli

6 6 G. Mecca - - Basi di Dati Professori che Non Sono di Ingegneria Algebra Relazionale >> Dettagli e Approfondimenti >> Selezione e V. Nulli codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria CVVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori ProfessoriAltreFacolta = facolta <> Ingegneria (Professori) codcognomenomequalificafacolta CVVieriChristianassociatoScienze ProfessoriNoIngegneria= facolta <> Ingegneria OR facolta IS NULL (Professori) codcognomenomequalificafacolta CVVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull

7 7 G. Mecca - - Basi di Dati Proiezione m Proiezione elimina alcuni tra gli attributi di una tabella lista attributi da mantenere m Sintassi attributi (R); es: cognome, nome, ciclo (Studenti) m Semantica genera una tabella che contiene la restrizione delle ennuple originali agli attributi specificati Algebra Relazionale >> Dettagli e Approfondimenti >> Proiezione e Duplicati

8 8 G. Mecca - - Basi di Dati Proiezione e Duplicati m Può generare duplicati nel caso nel risultato non sopravvivano chiavi m Filosofia dellSQL (e quindi dellalgebra) lutente può scegliere se eliminare o meno i duplicati m Operatore DISTINCT sintassi: DISTINCT (R) semantica: elimina da R i duplicati Algebra Relazionale >> Dettagli e Approfondimenti >> Proiezione e Duplicati

9 9 G. Mecca - - Basi di Dati Cognomi e Anni di Corso degli Studenti Algebra Relazionale >> Dettagli e Approfondimenti >> Proiezione e Duplicati Studenti cognome, anno (Studenti) matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV cognomeanno Rossi1 Neri2 Rossi1 Pinco3 Bruno1 Pinco1 cognome, anno DISTINCT( (Studenti)) cognomeanno Rossi1 Neri2 Pinco3 Bruno1 Pinco1

10 10 G. Mecca - - Basi di Dati Operatori Binari m Prodotto Cartesiano operatore binario R X S correla le ennuple di R con quelle di S in tutti i possibili modi il risultato ha tutti gli attributi di S e tutti gli attributi di R |R x S| = |R| * |S| prestazioni scadenti Algebra Relazionale >> Dettagli e Approfondimenti

11 11 G. Mecca - - Basi di Dati Operatori Binari m Join operatore binario: condizione: uguaglianza tra attributi di R e S dello stesso tipo; es: R.a = S.b il risultato è linsieme di ennuple ottenute concatenando le ennuple di R con quelle di S, purché lennupla risultante soddisfi la condizione consente implementazioni efficienti Algebra Relazionale >> Dettagli e Approfondimenti R condizione S

12 12 G. Mecca - - Basi di Dati Operatori Binari m Nota le condizioni di join tra le tabelle corrispondono normalmente ai vincoli di riferimento (es: studente ed esame) ma non necessariamente è sempre così es: join tra Professori e Studenti su Professori.nome=Studenti.nome es: join tra Studenti e Corsi su Studenti.cognome=Corsi.titolo Algebra Relazionale >> Dettagli e Approfondimenti

13 13 G. Mecca - - Basi di Dati Altre Forme di Join m Ci sono numerose varianti del Join m Join Naturale variante del join senza condizione condizione implicita: valori uguali sugli attributi con lo stesso nome m Poco utilizzato m Più utilizzati sono i join esterni Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join

14 14 G. Mecca - - Basi di Dati Cardinalità del Join m In un join ci possono essere ennuple di R e di S che non contribuiscono al risultato m Join Completo tutte le ennuple di R e le ennuple di S contribuiscono ad almeno unennupla del risultato m Join Non Completo non tutte le ennuple partecipano al risultato Join Vuoto: caso degenere Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join

15 15 G. Mecca - - Basi di Dati Join Completo Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria VCVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori professorenumero FT FT VC ADP ADP Numeri Professori cod=professore Numeri codcognomenomequalificafacoltaprofessorenumero FTTottiFrancescoordinarioIngegneriaFT FTTottiFrancescoordinarioIngegneriaFT VCVieriChristianassociatoScienzeVC ADPDel PieroAlessandrosupplentenullADP ADPDel PieroAlessandrosupplentenullADP

16 16 G. Mecca - - Basi di Dati Join Completo e Card. Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join CorsiLaureaTriennale C.ciclo = S.ciclo StudentiLaureaTriennale matrcognomenomeciclo… 111RossiMariol. tr.… 222NeriPaolol. tr.… 333RossiMarial. tr.… 444PincoPallal. tr.… StudentiLaureaTriennale codtitolociclo… PR1Programmazione Il. tr.… ASDAlgoritmi e Str. Datil. tr.… CorsiLaureaTriennale codtitoloC.ciclo…matrcognomenomeS.ciclo… PR1Programmazione Il. tr.…111RossiMariol. tr.… PR1Programmazione Il. tr.…222NeriPaolol. tr.… PR1Programmazione Il. tr.…333RossiMarial. tr.… PR1Programmazione Il. tr.…444PincoPallal. tr.… ASDAlgoritmi e Str. Datil. tr.…111RossiMariol. tr.… ASDAlgoritmi e Str. Datil. tr.…222NeriPaolol. tr.… ASDAlgoritmi e Str. Datil. tr.…333RossiMarial. tr.… ASDAlgoritmi e Str. Datil. tr.…444PincoPallal. tr.…

17 17 G. Mecca - - Basi di Dati Join Non Completo Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria VCVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori professorenumero FT FT VC ADP ADP Numeri Professori cod=professore Numeri supponendo che la ennupla sia eliminata codcognomenomequalificafacoltaprofessorenumero FTTottiFrancescoordinarioIngegneriaFT FTTottiFrancescoordinarioIngegneriaFT ADPDel PieroAlessandrosupplentenullADP ADPDel PieroAlessandrosupplentenullADP

18 18 G. Mecca - - Basi di Dati Join Vuoto Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join codcognomenome… FTTottiFrancesco… VCVieriChristian… ADPDel PieroAlessandro… Professori Professori Professori.nome = Studenti.nome Studenti matrcognomenome… 111RossiMario… 222NeriPaolo… 333RossiMaria… 444PincoPalla… 77777BrunoPasquale… 88888PincoPietro… Studenti matrS.cognomeS.nomecicloannorelatoreP.cognomeP.nomequalificafacolta

19 19 G. Mecca - - Basi di Dati Cardinalità del Join m Cardinalità del join di R 1 e R 2 compreso fra zero e |R 1 | * |R 2 | m Caso tipico: join tra la chiave primaria di R 1 e un attributo di R 2 su cui cè un vincolo di integrità referenziale cardinalità pari a |R 2 | es: Prof. e Numeri, con Prof.cod=Numeri.professore m Se non ci fosse il vincolo di integrità cardinalità compresa fra zero e |R 2 | Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join

20 20 G. Mecca - - Basi di Dati Join Esterni m Nei join incompleti si perdono ennuple es: professori senza numeri di telefono m In alcuni casi può essere un problema m Join Esterno (Outer Join) tutte le ennuple contribuiscono (completo) le ennuple per cui non cè controparte sono completate con valori nulli Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join

21 21 G. Mecca - - Basi di Dati Join Esterni m Join Esterno Sinistro garantisce che vengono mantenute tutte le ennuple della tabella a sinistra (R) m Join Esterno Destro garantisce che vengono mantenute tutte le ennuple della tabella a destra (S) m Join Esterno Completo Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join R condizione S

22 22 G. Mecca - - Basi di Dati Join Esterno Sinistro Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria VCVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori professorenumero FT FT ADP ADP Numeri codcognomenomequalificafacoltaprofessorenumero FTTottiFrancescoordinarioIngegneriaFT FTTottiFrancescoordinarioIngegneriaFT VCVieriChristianassociatoScienzenull ADPDel PieroAlessandrosupplentenullADP ADPDel PieroAlessandrosupplentenullADP Professori cod=professore Numeri

23 23 G. Mecca - - Basi di Dati Join Esterno Compl. Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join codcognomenome… FTTottiFrancesco… VCVieriChristian… ADPDel PieroAlessandro… Professori matrcognomenome… 111RossiMario… 222NeriPaolo… 333RossiMaria… 444PincoPalla… 77777BrunoPasquale… 88888PincoPietro… Studenti codP.cognomeP.nome...matrS.cognomeS.nome... FTTottiFrancesco...null 111RossiMario... Professori Professori.nome = Studenti.nome Studenti

24 24 G. Mecca - - Basi di Dati Altri Operatori m Lalgebra offre altri operatori m In particolare loperatore ORDER BY per lordinamento delle ennuple in una tabella le funzioni aggregative per il calcolo di valori sulla base del contenuto della base di dati loperatore ALIAS per la ridenominazione di una tabella Algebra Relazionale >> Dettagli e Approfondimenti >> Altri Operatori

25 25 G. Mecca - - Basi di Dati Ordinamento m E possibile gestire anche lordinamento m Operatore ORDER BY sintassi: ORDER BY attributi (R) attributi: lista di attributi di R semantica: riordina le ennuple di R utilizzando i valori degli attributi specificati come chiavi di ordinamento (dal primo in avanti) in ordine crescente Algebra Relazionale >> Dettagli e Approfondimenti >> Ordinamento

26 26 G. Mecca - - Basi di Dati Cognomi e Nomi degli Studenti in Ordine Algebra Relazionale >> Dettagli e Approfondimenti >> Ordinamento Studenti matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV ORDER BY cognome ( cognome, nome (Studenti)) cognomenome BrunoPasquale NeriPaolo PincoPietro PincoPalla RossiMario RossiMaria ORDER BY cognome, nome ( cognome, nome (Studenti)) cognomenome BrunoPasquale NeriPaolo PincoPalla PincoPietro RossiMaria RossiMario

27 27 G. Mecca - - Basi di Dati Funzioni Aggregative m Finora nel risultato solo valori presenti nella base di dati iniziale m In alcuni casi è utile avere valori calcolati somme e medie di attributi numerici; es: media dei voti degli studenti conteggi; es: numero di corsi della laurea triennale massimi e minimi Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative

28 28 G. Mecca - - Basi di Dati Funzioni Aggregative m Funzione aggregativa argomento: attributo di una tabella calcolata esaminando i valori di un attributo appartenenti ad ennuple diverse m Tipicamente SUM (somma), COUNT (conteggio), AVG (media), MIN (minimo), MAX (massimo) Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative

29 29 G. Mecca - - Basi di Dati Funzioni Aggregative m Sintassi si utilizzano nella proiezione m Esempio: calcolo del voto medio degli esami funzione AVG() applicata allattributo voto della tabella Esami Risultato = AVG(voto) (Esami) Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative

30 30 G. Mecca - - Basi di Dati Funzioni Aggregative m Domanda perchè la proiezione ? non sarebbe più semplice: Risultato = AVG(voto) (Esami) m Risposta il risultato non può essere un numero deve essere una tabella (di una ennupla e una colonna) Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative

31 31 G. Mecca - - Basi di Dati Funzioni Aggregative m Semantica viene effettuata la proiezione sugli attributi utilizzati come argomenti viene applicata la funzione aggregativa ai valori dellattributo il risultato è una tabella con una singola ennupla una colonna per ciascuna funzione aggregativa utilizzata nella proiezione Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative

32 32 G. Mecca - - Basi di Dati Funzioni Aggregative m Esempio: Risultato = AVG(voto) (Esami) I passo: voto (Esami) II passo: calcolo della media dei valori dellattributo voto III passo: viene creata la tabella Risultato con una unica colonna (chiamata AVG(voto)) ed ununica ennupla, contenente il risultato Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative

33 33 G. Mecca - - Basi di Dati Funzioni Aggregative: Esempi Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative 24,7 AVG(voto) Risultato Voto medio degli esami Risultato = AVG(voto) (Esami) AVG(voto) AS votomedio ( AVG(voto) (Esami)) votomedio 24,7 Voto massimo e minimo degli esami MIN(voto) AS votomin, MAX(voto) AS votomax ( MIN(voto), MAX(voto) (Esami)) votominvotomax 2030 Numero di corsi della laurea triennale COUNT(cod) AS numcorsi ( COUNT(cod) ( ciclo=laurea tr. (Corsi))) COUNT(ciclo) AS numcorsi ( COUNT(ciclo) ( ciclo=laurea tr. (Corsi))) nel caso del conteggio, lattributo è indifferente numcorsi 2

34 34 G. Mecca - - Basi di Dati Funzioni Aggregative m Regola in una proiezione possono comparire o solo attributi ordinari, o solo funzioni aggregative altrimenti la semantica non è ben definita m Esempio Titolo e numero dei corsi della laurea triennale Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative COUNT(cod) AS numcorsi ( titolo, COUNT(cod) ( ciclo=laurea tr. (Corsi)))

35 35 G. Mecca - - Basi di Dati Alias m A volte la stessa tabella può essere coinvolta più di una volta nello stesso join m Esempio Cognomi e nomi degli studenti che allesame di Programmazione hanno riportato un voto superiore a quello dei loro tutor m ATTENZIONE si tratta di una interrog. molto complessa Algebra Relazionale >> Dettagli e Approfondimenti >> Alias

36 36 G. Mecca - - Basi di Dati Alias m In questo caso devo confrontare il voto dello studente nellesame di programmazione con quello del tutor entrambe le informazioni vengono dalla tabella Esami (che deve necessariamente essere usata due volte) problema con i nomi: come distinguo lattributo che corrisponde al voto dello studente da quello del tutor ? Algebra Relazionale >> Dettagli e Approfondimenti >> Alias

37 37 G. Mecca - - Basi di Dati Alias m Operatore di Alias per una Tabella crea una copia di una tabella esistente con un nome diverso (e quindi risolve il problema del nome degli attributi) m Sintassi R AS T m Semantica listanza di T è identica allistanza di R nello schema di T, lattributo R.A assume il nome T.A Algebra Relazionale >> Dettagli e Approfondimenti >> Alias

38 38 G. Mecca - - Basi di Dati Alias m Cognomi e nomi degli studenti che allesame di Programmazione hanno riportato un voto superiore a quello dei loro tutor Studenti, per i dati degli studenti Esami, per i dati sugli esami degli studenti Tutorato, per le relazioni tra studenti e tutor Esami di nuovo, per i dati sugli esami sostenuti dai tutor; è necessario un alias (Esami as EsamiTutor) Algebra Relazionale >> Dettagli e Approfondimenti >> Alias

39 39 G. Mecca - - Basi di Dati Studenti, Voti e Tutor m Strategia I Passo: tabella StudentiVoti, join tra Studenti ed Esami II Passo: tabella StudentiVotiTutor, join tra StudentiVoti e Tutorato III Passo: tabella StudentiVotiTutorEsamiTutor, join tra StudentiVotiTutor e Esami AS EsamiTutor Algebra Relazionale >> Dettagli e Approfondimenti >> Alias

40 40 G. Mecca - - Basi di Dati Studenti, Voti e Tutor m I Passo: join tra Studenti ed Esami Algebra Relazionale >> Dettagli e Approfondimenti >> Alias Studenti matr=studente EsamiStudentiVoti= TABLE StudentiVoti ( Studenti.matr integer, Studenti.cognome varchar(20), Studenti.nome varchar(20), Studenti.ciclo char(20), Studenti.anno integer, Studenti.relatore char(4), Esami.studente integer Esami.corso char(3) Esami.voto integer, Esami.lode bool);

41 41 G. Mecca - - Basi di Dati Studenti, Voti e Tutor m II Passo: join con Tutorato Algebra Relazionale >> Dettagli e Approfondimenti >> Alias StudentiVoti matr=Tutorato.studente TutoratoStudentiVotiTutor= TABLE StudentiVotiTutor ( Studenti.matr integer, Studenti.cognome varchar(20), Studenti.nome varchar(20), Studenti.ciclo char(20), Studenti.anno integer, Studenti.relatore char(4), Esami.studente integer Esami.corso char(3) Esami.voto integer, Esami.lode bool, Tutorato.studente integer, Tutorato.tutor integer);

42 42 G. Mecca - - Basi di Dati Studenti, Voti e Tutor m III Passo: join con Esami AS EsamiTutor Algebra Relazionale >> Dettagli e Approfondimenti >> Alias StudentiVotiTutorStudentiVotiTutorEsamitutor = Tutorato.tutor=EsamiTutor.studente (Esami AS EsamiTutor) TABLE StudentiVotiTutorEsamitutor ( Studenti.matr integer, Studenti.cognome varchar(20), Studenti.nome varchar(20), Studenti.ciclo char(20), Studenti.anno integer, Studenti.relatore char(4), Esami.studente integer Esami.corso char(3) Esami.voto integer, Esami.lode bool, Tutorato.studente integer, Tutorato.tutor integer, EsamiTutor.studente integer EsamiTutor.corso char(3) EsamiTutor.voto integer, EsamiTutor.lode bool);

43 43 G. Mecca - - Basi di Dati Studenti, Voti e Tutor Algebra Relazionale >> Dettagli e Approfondimenti >> Alias Stud. matr Studenti. cognome.Esami. studente Esami. corso Esami. voto.Tutorato. studente Tutorato. tutor ET. studente ET. Corso ET. voto. 111Rossi.111PR PR Rossi.111INFT PR Neri.222ASD PR Rossi.111PR ASD Rossi.111INFT ASD Neri.222ASD ASD20. tutte le possibili coppie fatte di un esame di uno studente ed un esame del suo tutor StudentiVotiTutorEsamitutor

44 44 G. Mecca - - Basi di Dati Studenti, Voti e Tutor m Selezioni e proiezioni finali Algebra Relazionale >> Dettagli e Approfondimenti >> Alias Risultato = cognome, nome ( Esami.corso=Pr1 AND EsamiTutor.corso=Pr1 AND Esami.voto > EsamiTutor.voto ( StudentiVotiTutorEsamitutor ) TABLE Risultato ( Studenti.cognome varchar(20), Studenti.nome varchar(20));

45 45 G. Mecca - - Basi di Dati Studenti, Voti e Tutor m Riassumendo SQL-92 >> Concetti Fondamentali >> Interrogazioni Risultato = cognome, nome ( Esami.corso=Pr1 AND EsamiTutor.corso=Pr1 AND Esami.voto > EsamiTutor.voto ( Tutorato.tutor=EsamiTutor.studente (Esami AS EsamiTutor))) matr=Tutorato.studente Tutorato Studenti matr=studente Esami

46 46 G. Mecca - - Basi di Dati Forma Standard Completa m Alla luce dei nuovi operatori, possiamo completare la forma standard m Varie sottointerrogazioni (una o più) correlate con operatori insiemistici m Per ogni sottointerrogazione una o più tabelle eventuali alias eventuali join o prodotti cartesiani Algebra Relazionale >> Dettagli e Approfondimenti >> Forma Standard Compl. >>

47 47 G. Mecca - - Basi di Dati Forma Standard Completa (Continua) m Per ogni sottointerrogazione (continua) eventuali selezioni eventuali proiezioni, con eventuali funzioni aggregative eventuale eliminazione dei duplicati eventuali ridenominazioni eventuali riordinamenti Algebra Relazionale >> Dettagli e Approfondimenti >> Forma Standard Compl.

48 48 G. Mecca - - Basi di Dati Metodo di Scrittura Completo m Stabilire se sono necessari operatori insiemistici dividere in sottointerrogazioni m Per ogni sottointerrogazione decidere da quali tabelle prelevare i dati m Decidere eventuali alias m Se le tabelle sono più di una, strategia a) prodotti cartesiani oppure strategia b) join con le condizioni opportune Algebra Relazionale >> Dettagli e Approfondimenti >> Forma Standard Compl. >>

49 49 G. Mecca - - Basi di Dati Metodo di Scrittura Completo (Cont.) m Scrivere le eventuali selezioni strategia a) incluse le condizioni di Join m Scrivere le eventuali proiezioni e le eventuali funzioni aggregative m Scrivere le eventuali eliminazione di duplicati m Scrivere le eventuali ridenominazioni finali m Scrivere gli eventuali operatori di ordinamento m Rimettere le sottointerrogazioni insieme Algebra Relazionale >> Dettagli e Approfondimenti >> Forma Standard Compl.

50 50 G. Mecca - - Basi di Dati Metodo di Scrittura Completo m Suggerimento dividere la scrittura dellinterrogazione in passi, producendo ad ogni passo un risultato intermedio ragionare sulla struttura del risultato intermedio (schema, ovvero attributi, e istanza, ovvero numero e natura delle ennuple) Algebra Relazionale >> Dettagli e Approfondimenti >> Forma Standard Compl.

51 51 G. Mecca - - Basi di Dati Dettagli e Approfondimenti m Selezioni e Valori Nulli m Proiezione e Duplicati m Altre Forme di Join m Altri Operatori Ordinamento Funzioni Aggregative Alias m Forma Standard Completa Algebra Relazionale >> Sommario

52 52 G. Mecca - - Basi di Dati Algebra Relazionale >> La Base di Dati di Esempio TABLE Studenti ( matr integer PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod) ); TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); 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(3) REFERENCES Corsi(cod), voto integer, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), PRIMARY KEY (studente, corso)); TABLE Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) ); TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero));

53 53 G. Mecca - - Basi di Dati Algebra Relazionale >> La Base di Dati di Esempio TutoratoT studente INTEGERPK, FK tutor INTEGERPK, FK StudentiT matr INTEGERPK cognome VARCHAR(20) nome VARCHAR(20) ciclo CHAR(20) anno INTEGER relatore CHAR(4)FK ProfessoriT cod CHAR(4)PK cognome VARCHAR(20) nome VARCHAR(20) qualifica CHAR(15) facolta CHAR(10) EsamiT corso CHAR(3)PK, FK studente INTEGERPK, FK voto INTEGER lode BOOL CorsiT codice CHAR(3)PK titolo VARCHAR(20) ciclo CHAR(20) docente CHAR(4)FK NumeriT numero CHAR(9)PK docente CHAR(4)FK

54 54 G. Mecca - - Basi di Dati Algebra Relazionale >> La Base di Dati di Esempio codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria CVVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti codtitolociclodocente PR1Programmazione Ilaurea tr.FT ASDAlgoritmi e Str. Datilaurea tr.CV INFTInformatica Teoricalaurea sp.ADP Corsi

55 55 G. Mecca - - Basi di Dati Algebra Relazionale >> La Base di Dati di Esempio studentetutor Tutorato studentecorsovotolode 111PR127false 222ASD30true 111INFT24false 77777PR121false 77777ASD20false 88888ASD28false 88888PR130false 88888INFT30true Esami professorenumero FT FT VC ADP ADP Numeri

56 56 G. Mecca - - Basi di Dati Termini della Licenza m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. m Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare oppure inviare una lettera allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.


Scaricare ppt "G. Mecca – – Università della Basilicata Basi di Dati Algebra Relazionale Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso."

Presentazioni simili


Annunci Google