Algebra Relazionale Dettagli e Approfondimenti

Slides:



Advertisements
Presentazioni simili
Interrogazioni Semplici Le operazioni di interrogazione vengono specificate per mezzo dellistruzione select select ListaAttributi from ListaTabelle [where.
Advertisements

Algoritmi e Strutture Dati
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
G. Mecca – – Università della Basilicata Basi di Dati Progettazione di Basi di Dati: Introduzione versione 2.0 Questo lavoro è concesso.
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Logica versione 2.0 Questo lavoro è concesso in uso secondo i termini.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Concetti Fondamentali versione.
Modello Concettuale dei Dati: Concetti Fondamentali
Algebra Relazionale Concetti Fondamentali
SQL-92 Concetti Fondamentali
Modello Concettuale Dettagli e Approfondimenti
G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Concetti Avanzati versione 2.0 Questo lavoro è concesso in uso secondo i termini.
G. Mecca – – Università della Basilicata Tecnologie di Sviluppo per il Web XML: Dettagli e Approfondimenti versione 2.0 Questo lavoro è
Progettazione e Forme Normali
G. Mecca – – Università della Basilicata Basi di Dati Tecnologia di un DBMS: Concorrenza e Affidabilità Concetti Avanzati versione 2.0.
G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo.
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Fisica e Tuning: Concetti Avanzati versione 2.0 Questo lavoro è concesso.
Frontespizio Economia Monetaria Anno Accademico
Programmazione Procedurale in Linguaggio C++
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
EIE 0607 III / 1 A B P a = 30 P b = 35 t = 2, tc = 1 Questo può essere un equilibrio? No! Politiche di un paese importatore: una tariffa allimportazione.
1 IT FOR BUSINESS AND FINANCE ACCESS INTRODUCTION.
Programmazione 1 9CFU – TANTE ore
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 (Basi di Dati)
Corso di Informatica (Basi di Dati)
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Master universitario di II livello in Ingegneria delle Infrastrutture e dei Sistemi Ferroviari Anno Accademico 2012/2013 Cultura dimpresa, valutazione.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Cos’è un problema?.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione.
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ISOIVA (LOCALE) TO ISOIVA (WEB) RIPARTIZIONE INFORMATICA UFFICIO APPLICATIVI AMMINISTRATIVI 13/04/2011 UNIVERSITÀ DEGLI STUDI DI FERRARA 1.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
1 Questionario di soddisfazione del servizio scolastico Anno scolastico 2011/2012 Istogramma- risposte famiglie.
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
Riconfigurare il diritto dautore. Lipertesto, una necessità di riconfigurazione. Secondo G. P. Landow, lavvento dellipertesto implica la necessità di.
Basi di Dati e Sistemi Informativi
SQL.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Programmazione Procedurale in Linguaggio C++
1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
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.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
Transcript della presentazione:

Algebra Relazionale Dettagli e Approfondimenti 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) G. Mecca – mecca@unibas.it – Università della Basilicata

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

Algebra Relazionale Linguaggio alla base del DML di SQL Algebra Relazionale >> Dettagli e Approfondimenti Algebra Relazionale Linguaggio alla base del DML di SQL Basato sull’algebra teorica di Codd Insieme di operatori su tabelle che producono tabelle Espressioni complesse Assegnazioni G. Mecca - mecca@unibas.it - Basi di Dati

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

Selezione e Valori Nulli Algebra Relazionale >> Dettagli e Approfondimenti >> Selezione e V. Nulli Selezione e Valori Nulli 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. G. Mecca - mecca@unibas.it - Basi di Dati

“Professori che Non Sono di Ingegneria” Algebra Relazionale >> Dettagli e Approfondimenti >> Selezione e V. Nulli “Professori che Non Sono di Ingegneria” Professori cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria CV Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null ProfessoriAltreFacolta = s facolta <> ‘Ingegneria’ (Professori) cod cognome nome qualifica facolta CV Vieri Christian associato Scienze ProfessoriNoIngegneria= sfacolta <> ‘Ingegneria’ OR facolta IS NULL (Professori) cod cognome nome qualifica facolta CV Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null G. Mecca - mecca@unibas.it - Basi di Dati

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

Proiezione e Duplicati Algebra Relazionale >> Dettagli e Approfondimenti >> Proiezione e Duplicati Proiezione e Duplicati Può generare duplicati nel caso nel risultato non sopravvivano chiavi Filosofia dell’SQL (e quindi dell’algebra) l’utente può scegliere se eliminare o meno i duplicati Operatore DISTINCT sintassi: DISTINCT (R) semantica: elimina da R i duplicati G. Mecca - mecca@unibas.it - Basi di Dati

“Cognomi e Anni di Corso degli Studenti” Algebra Relazionale >> Dettagli e Approfondimenti >> Proiezione e Duplicati “Cognomi e Anni di Corso degli Studenti” Studenti matr cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo 2 333 Maria 444 Pinco Palla 3 FT 77777 Bruno Pasquale laurea sp. 88888 Pietro CV cognome, anno p (Studenti) cognome, anno DISTINCT(p (Studenti)) cognome anno Rossi 1 Neri 2 Pinco 3 Bruno cognome anno Rossi 1 Neri 2 Pinco 3 Bruno G. Mecca - mecca@unibas.it - Basi di Dati

Operatori Binari Prodotto Cartesiano operatore binario R X S Algebra Relazionale >> Dettagli e Approfondimenti Operatori Binari 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 G. Mecca - mecca@unibas.it - Basi di Dati

Operatori Binari Join operatore binario: Algebra Relazionale >> Dettagli e Approfondimenti Operatori Binari Join operatore binario: condizione: uguaglianza tra attributi di R e S dello stesso tipo; es: R.a = S.b il risultato è l’insieme di ennuple ottenute “concatenando” le ennuple di R con quelle di S, purché l’ennupla risultante soddisfi la condizione consente implementazioni efficienti R condizione S G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale >> Dettagli e Approfondimenti Operatori Binari 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 G. Mecca - mecca@unibas.it - Basi di Dati

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

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

Join Completo Numeri Professori Professori cod=professore Numeri Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join Join Completo Numeri professore numero FT 0971205145 347123456 VC 0971205227 ADP 0971205363 338123456 Professori cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria VC Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null Professori cod=professore Numeri cod cognome nome qualifica facolta professore numero FT Totti Francesco ordinario Ingegneria 0971205145 347123456 VC Vieri Christian associato Scienze 0971205227 ADP Del Piero Alessandro supplente null 0971205363 338123456 G. Mecca - mecca@unibas.it - Basi di Dati

Join Completo e Card. StudentiLaureaTriennale CorsiLaureaTriennale Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join StudentiLaureaTriennale Join Completo e Card. matr cognome nome ciclo … 111 Rossi Mario l. tr. 222 Neri Paolo 333 Maria 444 Pinco Palla CorsiLaureaTriennale cod titolo ciclo … PR1 Programmazione I l. tr. ASD Algoritmi e Str. Dati CorsiLaureaTriennale C.ciclo = S.ciclo StudentiLaureaTriennale cod titolo C.ciclo … matr cognome nome S.ciclo PR1 Programmazione I l. tr. 111 Rossi Mario 222 Neri Paolo 333 Maria 444 Pinco Palla ASD Algoritmi e Str. Dati G. Mecca - mecca@unibas.it - Basi di Dati

Join Non Completo Numeri Professori Professori cod=professore Numeri Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join Join Non Completo Numeri professore numero FT 0971205145 347123456 VC 0971205227 ADP 0971205363 338123456 Professori cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria VC Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null supponendo che la ennupla sia eliminata Professori cod=professore Numeri cod cognome nome qualifica facolta professore numero FT Totti Francesco ordinario Ingegneria 0971205145 347123456 ADP Del Piero Alessandro supplente null 0971205363 338123456 G. Mecca - mecca@unibas.it - Basi di Dati

Join Vuoto Studenti Professori Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join Join Vuoto Studenti matr cognome nome … 111 Rossi Mario 222 Neri Paolo 333 Maria 444 Pinco Palla 77777 Bruno Pasquale 88888 Pietro Professori cod cognome nome … FT Totti Francesco VC Vieri Christian ADP Del Piero Alessandro Professori Professori.nome = Studenti.nome Studenti matr S.cognome S.nome ciclo anno relatore P.cognome P.nome qualifica facolta G. Mecca - mecca@unibas.it - Basi di Dati

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

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

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

Join Esterno Sinistro Numeri Professori Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join Join Esterno Sinistro Numeri Professori professore numero FT 0971205145 347123456 ADP 0971205363 338123456 cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria VC Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null Professori cod=professore Numeri cod cognome nome qualifica facolta professore numero FT Totti Francesco ordinario Ingegneria 0971205145 347123456 VC Vieri Christian associato Scienze null ADP Del Piero Alessandro supplente 0971205363 338123456 G. Mecca - mecca@unibas.it - Basi di Dati

Join Esterno Compl. Studenti Professori Algebra Relazionale >> Dettagli e Approfondimenti >> Altre Forme di Join Join Esterno Compl. Studenti matr cognome nome … 111 Rossi Mario 222 Neri Paolo 333 Maria 444 Pinco Palla 77777 Bruno Pasquale 88888 Pietro Professori cod cognome nome … FT Totti Francesco VC Vieri Christian ADP Del Piero Alessandro Professori Professori.nome = Studenti.nome Studenti cod P.cognome P.nome ... matr S.cognome S.nome FT Totti Francesco null 111 Rossi Mario G. Mecca - mecca@unibas.it - Basi di Dati

Altri Operatori L’algebra offre altri operatori In particolare Algebra Relazionale >> Dettagli e Approfondimenti >> Altri Operatori Altri Operatori L’algebra offre altri operatori In particolare l’operatore ORDER BY per l’ordinamento delle ennuple in una tabella le funzioni aggregative per il calcolo di valori sulla base del contenuto della base di dati l’operatore ALIAS per la ridenominazione di una tabella G. Mecca - mecca@unibas.it - Basi di Dati

Ordinamento E’ possibile gestire anche l’ordinamento Algebra Relazionale >> Dettagli e Approfondimenti >> Ordinamento Ordinamento E’ possibile gestire anche l’ordinamento 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 G. Mecca - mecca@unibas.it - Basi di Dati

“Cognomi e Nomi degli Studenti in Ordine” Algebra Relazionale >> Dettagli e Approfondimenti >> Ordinamento “Cognomi e Nomi degli Studenti in Ordine” Studenti matr cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo 2 333 Maria 444 Pinco Palla 3 FT 77777 Bruno Pasquale laurea sp. 88888 Pietro CV ORDER BYcognome(pcognome, nome(Studenti)) ORDER BYcognome, nome (pcognome, nome(Studenti)) cognome nome Bruno Pasquale Neri Paolo Pinco Pietro Palla Rossi Mario Maria cognome nome Bruno Pasquale Neri Paolo Pinco Palla Pietro Rossi Maria Mario G. Mecca - mecca@unibas.it - Basi di Dati

Funzioni Aggregative Finora nel risultato Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative Funzioni Aggregative Finora nel risultato solo valori presenti nella base di dati iniziale 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 G. Mecca - mecca@unibas.it - Basi di Dati

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

Funzioni Aggregative Sintassi Esempio: si utilizzano nella proiezione Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative Funzioni Aggregative Sintassi si utilizzano nella proiezione Esempio: calcolo del voto medio degli esami funzione AVG() applicata all’attributo voto della tabella Esami Risultato = p AVG(voto) (Esami) G. Mecca - mecca@unibas.it - Basi di Dati

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

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

Funzioni Aggregative Esempio: Risultato = p AVG(voto) (Esami) Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative Funzioni Aggregative Esempio: Risultato = p AVG(voto) (Esami) I passo: p voto (Esami) II passo: calcolo della media dei valori dell’attributo voto III passo: viene creata la tabella Risultato con una unica colonna (chiamata AVG(voto)) ed un’unica ennupla, contenente il risultato G. Mecca - mecca@unibas.it - Basi di Dati

Funzioni Aggregative: Esempi Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative Funzioni Aggregative: Esempi 24,7 AVG(voto) Risultato Voto medio degli esami Risultato = p AVG(voto) (Esami) rAVG(voto) AS votomedio(pAVG(voto)(Esami)) votomedio 24,7 Voto massimo e minimo degli esami rMIN(voto) AS votomin, MAX(voto) AS votomax (pMIN(voto), MAX(voto)(Esami)) votomin votomax 20 30 nel caso del conteggio, l’attributo è indifferente Numero di corsi della laurea triennale rCOUNT(cod) AS numcorsi ( p COUNT(cod) ( sciclo=‘laurea tr.’(Corsi))) rCOUNT(ciclo) AS numcorsi ( p COUNT(ciclo)( sciclo=‘laurea tr.’(Corsi))) numcorsi 2 G. Mecca - mecca@unibas.it - Basi di Dati

Funzioni Aggregative Regola Esempio Algebra Relazionale >> Dettagli e Approfondimenti >> Funzioni Aggregative Funzioni Aggregative Regola in una proiezione possono comparire o solo attributi ordinari, o solo funzioni aggregative altrimenti la semantica non è ben definita Esempio “Titolo e numero dei corsi della laurea triennale” rCOUNT(cod) AS numcorsi ( ptitolo, COUNT(cod)( sciclo=‘laurea tr.’(Corsi))) G. Mecca - mecca@unibas.it - Basi di Dati

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

Algebra Relazionale >> Dettagli e Approfondimenti >> Alias In questo caso devo confrontare il voto dello studente nell’esame 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 l’attributo che corrisponde al voto dello studente da quello del tutor ? G. Mecca - mecca@unibas.it - Basi di Dati

Alias Operatore di Alias per una Tabella Sintassi Semantica Algebra Relazionale >> Dettagli e Approfondimenti >> Alias Alias 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) Sintassi R AS T Semantica l’istanza di T è identica all’istanza di R nello schema di T, l’attributo R.A assume il nome T.A G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale >> Dettagli e Approfondimenti >> Alias “Cognomi e nomi degli studenti che all’esame 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) G. Mecca - mecca@unibas.it - Basi di Dati

“Studenti, Voti e Tutor” Algebra Relazionale >> Dettagli e Approfondimenti >> Alias “Studenti, Voti e Tutor” 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 G. Mecca - mecca@unibas.it - Basi di Dati

“Studenti, Voti e Tutor” 27/03/2017 Algebra Relazionale >> Dettagli e Approfondimenti >> Alias “Studenti, Voti e Tutor” I Passo: join tra Studenti ed Esami Studenti matr=studente Esami StudentiVoti= 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); G. Mecca - mecca@unibas.it - Basi di Dati

“Studenti, Voti e Tutor” 27/03/2017 Algebra Relazionale >> Dettagli e Approfondimenti >> Alias “Studenti, Voti e Tutor” II Passo: join con Tutorato StudentiVoti matr=Tutorato.studente Tutorato StudentiVotiTutor= 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); G. Mecca - mecca@unibas.it - Basi di Dati

“Studenti, Voti e Tutor” 27/03/2017 Algebra Relazionale >> Dettagli e Approfondimenti >> Alias “Studenti, Voti e Tutor” III Passo: join con Esami AS EsamiTutor StudentiVotiTutor StudentiVotiTutorEsamitutor = 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); G. Mecca - mecca@unibas.it - Basi di Dati

“Studenti, Voti e Tutor” 27/03/2017 Algebra Relazionale >> Dettagli e Approfondimenti >> Alias “Studenti, Voti e Tutor” StudentiVotiTutorEsamitutor Stud.matr Studenti. cognome . Esami. studente Esami. corso voto Tutorato. studente Tutorato. tutor ET. studente Corso 111 Rossi PR1 27 77777 21 INFT 24 222 Neri ASD 30 20 tutte le possibili coppie fatte di un esame di uno studente ed un esame del suo tutor G. Mecca - mecca@unibas.it - Basi di Dati

“Studenti, Voti e Tutor” 27/03/2017 Algebra Relazionale >> Dettagli e Approfondimenti >> Alias “Studenti, Voti e Tutor” Selezioni e proiezioni finali Risultato = p cognome, nome ( s Esami.corso=‘Pr1’ AND EsamiTutor.corso=‘Pr1’ AND Esami.voto > EsamiTutor.voto ( StudentiVotiTutorEsamitutor ) TABLE Risultato ( Studenti.cognome varchar(20), Studenti.nome varchar(20)); G. Mecca - mecca@unibas.it - Basi di Dati

“Studenti, Voti e Tutor” 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni “Studenti, Voti e Tutor” Riassumendo Risultato = p cognome, nome ( s 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 G. Mecca - mecca@unibas.it - Basi di Dati

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

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

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

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

Metodo di Scrittura Completo Algebra Relazionale >> Dettagli e Approfondimenti >> Forma Standard Compl. Metodo di Scrittura Completo Suggerimento dividere la scrittura dell’interrogazione 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) G. Mecca - mecca@unibas.it - Basi di Dati

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

Algebra Relazionale >> La Base di Dati di Esempio 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 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 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 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)); G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale >> La Base di Dati di Esempio Corsi T Numeri codice CHAR(3) PK titolo VARCHAR(20) ciclo CHAR(20) docente CHAR(4) FK Numeri T numero CHAR(9) PK docente CHAR(4) FK Esami T corso CHAR(3) PK, FK studente INTEGER voto INTEGER lode BOOL Professori T cod CHAR(4) PK cognome VARCHAR(20) nome VARCHAR(20) qualifica CHAR(15) facolta CHAR(10) Studenti T matr INTEGER PK cognome VARCHAR(20) nome VARCHAR(20) ciclo CHAR(20) anno INTEGER relatore CHAR(4) FK Tutorato T studente INTEGER PK, FK tutor INTEGER G. Mecca - mecca@unibas.it - Basi di Dati

Professori Studenti Corsi Algebra Relazionale >> La Base di Dati di Esempio Professori cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria CV Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null Studenti matr cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo 2 333 Maria 444 Pinco Palla 3 FT 77777 Bruno Pasquale laurea sp. 88888 Pietro CV Corsi cod titolo ciclo docente PR1 Programmazione I laurea tr. FT ASD Algoritmi e Str. Dati CV INFT Informatica Teorica laurea sp. ADP G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale >> La Base di Dati di Esempio Tutorato studente tutor 111 77777 222 333 88888 444 Numeri professore numero FT 0971205145 347123456 VC 0971205227 ADP 0971205363 338123456 Esami studente corso voto lode 111 PR1 27 false 222 ASD 30 true INFT 24 77777 21 20 88888 28 G. Mecca - mecca@unibas.it - Basi di Dati

Termini della Licenza Termini della Licenza This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. G. Mecca - mecca@unibas.it - Basi di Dati