Algebra Relazionale Concetti Fondamentali

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Numeri a 100 Electronic flashcard. 1 uno ritorno.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Presente e futuro della religiosità nel nord est DIFFERENZE TRA GENERAZIONI figli e padri italo de sandre 1ids.
ISPO RAPPORTO DI RICERCA: Sanità Pubblica e Privata: gli atteggiamenti degli italiani Maggio2008.
MONITORAGGIO MATEMATICA V A Alunni 26 Presenti 23 Quesiti 44 Risposte totali 650 Risultato medio 28,3 media 64,2%
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
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.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
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
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.
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.
Algebra Relazionale Dettagli e Approfondimenti
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
1 Innovazione dal punto di vista strategico Francesco Berri Medical Director ASTELLAS PHARMA SpA Bologna 10 Giugno 2011.
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
ELEZIONI REGIONALI 2010 PRIMI RISULTATI E SCENARI 14 aprile 2010.
Canale A. Prof.Ciapetti AA2003/04
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)
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Test di ipotesi X variabile casuale con funzione di densità (probabilità) f(x; q) q Q parametro incognito. Test Statistico: regola che sulla base di un.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
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.
MP/RU 1 Dicembre 2011 ALLEGATO TECNICO Evoluzioni organizzative: organico a tendere - ricollocazioni - Orari TSC.
Cos’è un problema?.
Gli italiani e il marketing di relazione: promozioni, direct marketing, digital marketing UNA RICERCA QUANTITATIVA SVOLTA DA ASTRA RICERCHE PER ASSOCOMUNICAZIONE.
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.
Monitoraggio sugli inserimenti nella scuola superiore a.s. 06/07
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.
CHARGE PUMP Principio di Funzionamento
Settimana: 3-7 marzo Orariolunedimartedi Mercoledi 5 Giovedi 6 Venerdi lezione intro alla fis mod DR lezione intro alla fis mod DR.
Q UESTIONI ETICHE E BIOETICHE DELLA DIFESA DELLA VITA NELL AGIRE SANITARIO 1 Casa di Cura Villa San Giuseppe Ascoli Piceno 12 e 13 dicembre 2011.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
ISTITUTO COMPRENSIVO “G. BATTAGLINI” MARTINA FRANCA (TA)
GEOGRAFIA DEI NUMERI Accademia dei Lincei - Roma 18 Ottobre2011
Un trucchetto di Moltiplicazione per il calcolo mentale
Prima rilevazione sullo stato di attuazione della riforma degli ordinamenti nelle istituzioni scolastiche in LOMBARDIA Attuazione del D.L. 59/2003 a.s.
Riconfigurare il diritto dautore. Lipertesto, una necessità di riconfigurazione. Secondo G. P. Landow, lavvento dellipertesto implica la necessità di.
Esempi risolti mediante immagini (e con excel)
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
NO WASTE Progetto continuità scuola primaria scuola secondaria Salorno a.s. 2013_
I chicchi di riso e la sfida al Bramino
Il numero più grande Accademia dei Lincei
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.
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.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Transcript della presentazione:

Algebra Relazionale Concetti Fondamentali 27/03/2017 Basi di Dati Algebra Relazionale Concetti Fondamentali 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

Concetti Fondamentali Algebra Relazionale >> Sommario Concetti Fondamentali Introduzione La Base di Dati di Esempio Algebra Relazionale selezione, proiezione prodotto cartesiano, join unione, intersezione, differenza ridenominazioni Forma Standard G. Mecca - mecca@unibas.it - Basi di Dati

Introduzione SQL Linguaggio di Definizione (DDL) Algebra Relazionale >> Concetti Fondamentali Introduzione 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 G. Mecca - mecca@unibas.it - Basi di Dati

Introduzione DDL, DCL DML Lavorare con oggetti inconsueti Algebra Relazionale >> Concetti Fondamentali Introduzione DDL, DCL concettualmente semplici DML aggiornamenti: concettualmente semplice interrogazioni: complesso Lavorare con oggetti inconsueti le tabelle algebra su tabelle; analogo: algebra sui reali G. Mecca - mecca@unibas.it - Basi di Dati

Introduzione Algebra per Tabelle w= Algebra Relazionale >> Concetti Fondamentali Introduzione Algebra per Tabelle insieme di operatori che applicati a tabelle restituiscono tabelle; analogo: y+3, x-2 espressioni; analogo: z=(y+3)-2 sintassi astratta; analogo: semantica operazionale astratta analogo: somme per addizioni di unità w= 3x y – 3 G. Mecca - mecca@unibas.it - Basi di Dati

Introduzione Algebra Relazionale Algebra dei DBMS Relazionali Algebra Relazionale >> Concetti Fondamentali Introduzione Algebra Relazionale definita da Codd nell’articolo sul modello lontana dall’SQL sotto molti aspetti Algebra dei DBMS Relazionali operatori attraverso cui vengono implementate le interrogazioni SQL alla base delle ottimizzazioni Presenteremo la seconda G. Mecca - mecca@unibas.it - Basi di Dati

Base di Dati dei Corsi di Informatica Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Base di Dati dei Corsi di Informatica Professori codice, nome, qualifica, facoltà numeri di telefono Studenti matricola, nome, 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 G. Mecca - mecca@unibas.it - Basi di Dati

cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, Algebra Relazionale >> Concetti Fondamentali >> 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

Base di Dati dei Corsi di Informatica Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Base di Dati dei Corsi di Informatica Una rappresentazione grafica dello schema relazionale (stereotipi di UML) ogni tabella è un rettangolo con un nome e la lista degli attributi le chiavi primarie sono indicate con PK le chiavi esterne sono indicate con FK i vincoli di riferimento sono indicati da archi tra le tabelle (utile per visualizzarli immediatamente) G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Corsi T codice CHAR(3) PK titolo VARCHAR(20) ciclo CHAR(20) docente CHAR(4) FK Numeri T numero CHAR(9) PK professore CHAR(4) PK, 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 >> Concetti Fondamentali >> 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 >> Concetti Fondamentali >> 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

Base di Dati dei Corsi di Informatica Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Base di Dati dei Corsi di Informatica Nota nella base di dati vengono utilizzati ripetutamente codici alfanumerici leggibilità dell’esempio (es: ‘FT’, ‘PR1’) in generale è meglio adottare come chiavi primarie codici interi maggiore compattezza e migliori prestazioni G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale Collezione di operatori Espressioni Assegnazioni Algebra Relazionale >> Concetti Fondamentali >> Algebra Algebra Relazionale 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 G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale Attenzione Tabelle originali della base di dati Algebra Relazionale >> Concetti Fondamentali >> Algebra Algebra Relazionale 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 G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale Operatori principali Terminologia selezione Algebra Relazionale >> Concetti Fondamentali >> Algebra Algebra Relazionale Operatori principali selezione proiezione prodotto cartesiano e join unione, intersezione e differenza ridenominazione Terminologia ispirata all’analogia ennuple = vettori G. Mecca - mecca@unibas.it - Basi di Dati

Selezione Funzione Esempio Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione Selezione 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” G. Mecca - mecca@unibas.it - Basi di Dati

“Studenti della laurea triennale” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione “Studenti della laurea triennale” Studenti matr cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo laurea tr. 2 null 333 Rossi Maria laurea tr. 1 null 444 Pinco Palla laurea tr. 3 FT 77777 Bruno Pasquale laurea sp. 1 FT 88888 Pinco Pietro laurea sp. 1 CV condizione: Studenti.ciclo=‘laurea tr.’ StudentiTriennio nome anno ciclo relatore cognome matr Mario 1 laurea tr. null Rossi 111 Paolo 2 laurea tr. null Neri 222 Maria 1 null laurea tr. Rossi 333 Palla FT 3 laurea tr. Pinco 444 G. Mecca - mecca@unibas.it - Basi di Dati

Selezione: Sintassi Operatore unario (“monadico”) Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione Selezione: Sintassi Operatore unario (“monadico”) condizione sui valori degli attributi Condizione: espressione booleana operandi: valori degli attributi della tabella operatori di confronto, operatori booleani Sintassi: condizione s (R) ciclo=‘laurea tr.’ s (Studenti) StudentiTriennio = G. Mecca - mecca@unibas.it - Basi di Dati

“Studenti della laurea tr. di anni successivi al I” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione “Studenti della laurea tr. di anni successivi al I” 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 condizione: ciclo=‘laurea tr.’ AND anno > 1 Risultato nome anno ciclo relatore cognome matr Paolo 2 null laurea tr. Neri 222 Palla FT 3 laurea tr. Pinco 444 ciclo=‘laurea tr.’ AND anno>1 s (Studenti) Risultato = G. Mecca - mecca@unibas.it - Basi di Dati

Selezione: Semantica Schema del risultato Istanza del risultato Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione Selezione: Semantica 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 G. Mecca - mecca@unibas.it - Basi di Dati

Selezione: Semantica Nota sullo schema Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione Selezione: Semantica Nota sullo schema si tratta di una tabella temporanea i nomi (e i tipi) degli attributi sono ereditati dalle tabelle della base di dati TABLE StudentiTriennio ( Studenti.matr integer, Studenti.cognome varchar(20), Studenti.nome varchar(20), Studenti.ciclo char(20), Studenti.anno integer, Studenti.relatore char(4)); TABLE StudentiTriennio ( matr integer, Studenti.cognome varchar(20), Studenti.nome varchar(20), Studenti.ciclo char(20), anno integer, relatore char(4)); G. Mecca - mecca@unibas.it - Basi di Dati

Proiezione Funzione Esempio Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione Proiezione Funzione estrarre alcune delle colonne di una tabella Esempio “Estrarre l’elenco dei nomi e i cognomi degli studenti” TABLE ElencoNomi ( Studenti.cognome varchar(20), Studenti.nome varchar(20), ); G. Mecca - mecca@unibas.it - Basi di Dati

“Cognomi e Nomi degli Studenti” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione “Cognomi e Nomi 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 ElencoNomi nome cognome Mario Rossi Paolo Neri Maria Rossi Palla Pinco Pasquale Bruno Pietro Pinco G. Mecca - mecca@unibas.it - Basi di Dati

Proiezione: Sintassi Operatore unario Sintassi p p Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione Proiezione: Sintassi Operatore unario lista di attributi della tabella Sintassi lista attributi p (R) cognome, nome p (Studenti) ElencoNomi = G. Mecca - mecca@unibas.it - Basi di Dati

Proiezione: Semantica Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione Proiezione: Semantica 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 G. Mecca - mecca@unibas.it - Basi di Dati

“Cognomi e Anni di Corso degli Studenti” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione “Cognomi e Anni di Corso degli Studenti” Studenti matr cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo laurea tr. 2 null 333 Rossi Maria laurea tr. 1 null 444 Pinco Palla laurea tr. 3 FT 77777 Bruno Pasquale laurea sp. 1 FT 88888 Pinco Pietro laurea sp. 1 CV cognome, anno p (Studenti) Risultato = Risultato cognome anno Rossi 1 Neri 2 ennuple identiche (duplicati) Rossi 1 Pinco 3 NOTA: ulteriori duplicati se cognome p (Studenti) Risultato’ = Bruno 1 Pinco 1 G. Mecca - mecca@unibas.it - Basi di Dati

Prodotto Cartesiano Finora In realtà operatori unari Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. Prodotto Cartesiano 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 G. Mecca - mecca@unibas.it - Basi di Dati

Prodotto Cartesiano Esempio Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. Prodotto Cartesiano Esempio “Generare la tabella ProfessoriENumeri contenente nomi, cognomi e numeri dei prof.” TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); TABLE ProfessoriENumeri ( Professori.cognome varchar(20), Professori.nome varchar(20), numero char(9)); TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); G. Mecca - mecca@unibas.it - Basi di Dati

“Professori e Numeri” Numeri Professori Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. “Professori e Numeri” Numeri professore numero FT 0971205145 347123456 VC 0971205227 ADP 0971205363 338123456 Professori cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria CV Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null I Passo: Prodotto Cartesiano TabellaA = Professori X Numeri facolta professore nome qualifica numero cognome cod Ingegneria FT Francesco ordinario 0971205145 Totti Ingegneria FT Francesco ordinario 347123456 Totti Ingegneria VC Francesco 0971205227 ordinario Totti FT Ingegneria ADP 0971205363 ordinario Francesco Totti FT Ingegneria ADP 338123456 ordinario Francesco Totti FT 0971205145 FT Scienze associato Christian Vieri CV 347123456 FT Scienze associato Christian Vieri CV … 338123456 ADP null supplente Alessandro Del Piero G. Mecca - mecca@unibas.it - Basi di Dati

“Professori e Numeri” TabellaA Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. “Professori e Numeri” TabellaA 338123456 ADP null supplente Alessandro Del Piero 0971205145 FT Scienze associato Christian Vieri CV … Ingegneria facolta VC professore ordinario Francesco Totti 0971205363 nome 0971205227 qualifica 347123456 numero cognome cod II Passo: Selezione TabellaB = s cod=professore (TabellaA) null Scienze Ingegneria facolta ADP VC FT professore 338123456 supplente Alessandro Del Piero 0971205363 Christian Francesco nome 0971205227 associato Vieri CV ordinario qualifica 347123456 Totti 0971205145 numero cognome cod G. Mecca - mecca@unibas.it - Basi di Dati

“Professori e Numeri” Tabella B Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. “Professori e Numeri” Tabella B null Scienze Ingegneria facolta ADP VC FT professore 338123456 supplente Alessandro Del Piero 0971205363 Christian Francesco nome 0971205227 associato Vieri CV ordinario qualifica 347123456 Totti 0971205145 numero cognome cod III Passo: Proiezione ProfessoriENumeri = p cognome,nome,numero (TabellaB) 338123456 Alessandro Del Piero 0971205363 Christian Francesco nome 0971205227 Vieri 347123456 Totti 0971205145 numero cognome G. Mecca - mecca@unibas.it - Basi di Dati

Professori e Numeri In sintesi s p p s Professori X Numeri TabellaA = Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. Professori e Numeri In sintesi Professori X Numeri TabellaA = cod=professore s (TabellaA) TabellaB = cognome, nome, numero p (TabellaB) ProfessoriENumeri = cognome, nome, numero p ( ProfessoriENumeri = cod=professore s Professori X Numeri )) G. Mecca - mecca@unibas.it - Basi di Dati

Prodotto Cartesiano: Sintassi Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. Prodotto Cartesiano: Sintassi Operatore binario (“diadico”) è il primo operatore che consente di mettere assieme dati provenienti da tabelle diverse Sintassi R X S G. Mecca - mecca@unibas.it - Basi di Dati

Prodotto Cartesiano: Semantica Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. Prodotto Cartesiano: Semantica 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à G. Mecca - mecca@unibas.it - Basi di Dati

Join Prodotto cartesiano Sarebbe opportuno Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. Join Prodotto cartesiano consente di correlare dati di tabelle diverse ma genera risultati di grandi dimensioni (es: tabelle di 1000 ennuple > 1 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 G. Mecca - mecca@unibas.it - Basi di Dati

“Professori e Numeri: Alternativa” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join “Professori e Numeri: Alternativa” 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 I Passo: Join TabellaA’ = Professori cod=professore Numeri facolta professore nome qualifica numero cognome cod Ingegneria FT Francesco ordinario 0971205145 Totti Ingegneria FT Francesco ordinario 347123456 Totti Scienze VC Christian 0971205227 associato Vieri null ADP 0971205363 supplente Alessandro Del Piero null ADP 338123456 supplente Alessandro Del Piero G. Mecca - mecca@unibas.it - Basi di Dati

“Professori e Numeri” Tabella A’ Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join “Professori e Numeri” Tabella A’ null Scienze Ingegneria facolta ADP VC FT professore 338123456 supplente Alessandro Del Piero 0971205363 Christian Francesco nome 0971205227 associato Vieri CV ordinario qualifica 347123456 Totti 0971205145 numero cognome cod II Passo: Proiezione ProfessoriENumeri=pcognome,nome,numero (TabellaA’) 338123456 Alessandro Del Piero 0971205363 Christian Francesco nome 0971205227 Vieri 347123456 Totti 0971205145 numero cognome G. Mecca - mecca@unibas.it - Basi di Dati

Professori e Numeri In sintesi p p Professori cod=professore Numeri Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join Professori e Numeri In sintesi Professori cod=professore Numeri TabellaA’ = cognome, nome, numero p (TabellaA’) ProfessoriENumeri = cognome, nome, numero p ( ProfessoriENumeri = Professori cod=professore Numeri) G. Mecca - mecca@unibas.it - Basi di Dati

Join: Sintassi Operatore binario (“diadico”) Sintassi Condizione Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join Join: Sintassi Operatore binario (“diadico”) Sintassi Condizione AND di condizioni semplici attributo di R = attributo di S i due attributi devono essere dello stesso tipo R condizione S G. Mecca - mecca@unibas.it - Basi di Dati

Join: Semantica Schema del risultato Istanza del risultato: Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join Join: Semantica 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 pr. cartesiano e selezione: R condizione S = s condizione (S X R) Attenzione: semantica operazionale diversa G. Mecca - mecca@unibas.it - Basi di Dati

Join Complessi Esempio Richiede di correlare tre tabelle Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join Join Complessi Esempio “Matricola e cognome degli studenti che hanno sostenuto l’esame di informatica teorica” Richiede di correlare tre tabelle matr di Studenti e studente di Esami cod di Corso e corso di Esami Due condizioni di join G. Mecca - mecca@unibas.it - Basi di Dati

“Esame di Informatica Teorica” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join “Esame di Informatica Teorica” 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 Esami ( studente integer REFERENCES Studenti(matr) corso char(3) REFERENCES Corsi(cod), voto integer, lode bool, PRIMARY KEY (studente, corso)); StudentiEsami = Studenti matr=studente Esami TABLE StudentiEsami ( matr integer, cognome varchar(20), nome varchar(20), ciclo char(20), anno integer, relatore char(4) studente integer, corso char(3), voto integer, lode bool); G. Mecca - mecca@unibas.it - Basi di Dati

“Esame di Informatica Teorica” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join “Esame di Informatica Teorica” TABLE StudentiEsami ( matr integer, cognome varchar(20), nome varchar(20), Studenti.ciclo char(20), anno integer, relatore char(4) studente integer, corso char(3), voto integer, lode bool); TABLE Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod)); TABLE StudentiEsamiCorsi ( matr integer, cognome varchar(20), nome varchar(20), Studenti.ciclo char(20), anno integer, relatore char(4) studente integer, corso char(3), voto integer, lode bool cod char(3), titolo varchar(20), Corso.ciclo char(20), docente char(4)); StudentiEsamiCorsi = StudentiEsami corso=cod Corso G. Mecca - mecca@unibas.it - Basi di Dati

“Esame di Informatica Teorica” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join “Esame di Informatica Teorica” StudentiEsamiCorsi matr cognome nome … studente corso voto cod titolo 111 Rossi Mario PR1 27 Progr… ... 222 Neri Paolo ASD 30 Algorit… INFT 24 Inform… 77777 Bruno Pasquale 21 20 88888 Pinco Pietro 28 dalla tabella Studenti dalla tabella Esami dalla tabella Corsi Risultato = p matricola, cognome (s titolo=‘Inform. t.’ (StudentiEsamiCorsi)) Risultato matr cognome 111 Rossi 88888 Pinco G. Mecca - mecca@unibas.it - Basi di Dati

Join Complessi StudentiEsami = Studenti matr=studente Esami Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join Join Complessi StudentiEsami = Studenti matr=studente Esami StudentiEsamiCorsi = StudentiEsami cod=corso Corsi StudentiEsamiCorsi = (Studenti matr=studente Esami) cod=corso Corsi il join è associativo StudentiEsamiCorsi = Studenti matr=studente (Esami cod=corso Corsi) StudentiEsamiCorsi = Studenti matr=studente Esami cod=corso Corsi G. Mecca - mecca@unibas.it - Basi di Dati

“Esame di Infomatica Teorica” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join “Esame di Infomatica Teorica” In sintesi: StudentiEsami = Studenti matr=studente Esami StudentiEsamiCorsi = StudentiEsami cod=corso Corsi Risultato = p matricola, cognome ( s titolo=‘Inform. t.’ (StudentiEsamiCorsi)) Risultato = p matricola, cognome ( s titolo=‘Inform. t.’ ( Studenti matr=studente Esami cod=corso Corsi )) G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale Finora Unari Binari Algebra Relazionale >> Concetti Fondamentali >> Algebra Algebra Relazionale Finora abbiamo visto gli operatori fondamentali Unari selezione, scondizione(R) proiezione, pattributi(R) Binari prodotto cartesiano, R x S join, R condizione S G. Mecca - mecca@unibas.it - Basi di Dati

Algebra Relazionale Altri operatori importanti Operatori insiemistici Algebra Relazionale >> Concetti Fondamentali >> Algebra Algebra Relazionale Altri operatori importanti Operatori insiemistici unione intersezione differenza Ridenominazione meno importante (ha solo funzioni di leggibilità) G. Mecca - mecca@unibas.it - Basi di Dati

Operatori Insiemistici Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Operatori Insiemistici Funzione le tabelle sono collezioni di ennuple è possibile applicare le operazioni consuete sulle collezioni unione intersezione differenza G. Mecca - mecca@unibas.it - Basi di Dati

Operatori Insiemistici Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Operatori Insiemistici Esempio “Cognome e nome di tutte le persone” TABLE Professori ( cod char(4) PRIMARY KEY, Professori.cognome varchar(20) NOT NULL, Professori.nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); TABLE Persone ( cognome varchar(20), nome varchar(20)); TABLE Studenti ( matr integer PRIMARY KEY, Studenti.cognome varchar(20) NOT NULL, Studenti.nome varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod)); G. Mecca - mecca@unibas.it - Basi di Dati

“Cognome e Nome delle Persone” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. “Cognome e Nome delle Persone” Alessandro Christian Francesco nome Del Piero Vieri Totti cognome NomiProfessori = pcognome, nome (Professori) Professori Alessandro Christian Francesco nome null supplente Del Piero ADP associato ordinario qualifica Scienze Vieri CV Ingegneria Totti FT facolta cognome cod Pietro Pasquale Palla Maria Paolo Mario nome Pinco Bruno Rossi Neri cognome NomiStudenti = pcognome, nome (Studenti) Pietro Pasquale Palla Maria Paolo Mario nome CV 1 laurea sp. Pinco 88888 FT Bruno 77777 3 laurea tr. 444 2 anno null Rossi 333 ciclo Neri 222 111 relatore cognome matr Studenti G. Mecca - mecca@unibas.it - Basi di Dati

“Cognome e Nome delle Persone” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. “Cognome e Nome delle Persone” NomiProfessori Persone = NomiProfessori U NomiStudenti cognome nome Totti Francesco Vieri Christian Alessandro Christian Francesco nome Del Piero Vieri Totti cognome Pietro Pasquale Palla Maria Paolo Mario Pinco Bruno Rossi Neri Del Piero Alessandro NomiStudenti cognome nome Rossi Mario Neri Paolo Rossi Maria Pinco Palla Bruno Pasquale Pinco Pietro G. Mecca - mecca@unibas.it - Basi di Dati

Operatori Insiemistici: Sintassi Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Operatori Insiemistici: Sintassi Operatori binari Sintassi stessi simboli delle operazioni convenzionali su insiemi Unione: R U S Intersezione: R ∩ S Differenza: R – S G. Mecca - mecca@unibas.it - Basi di Dati

Operatori Insiemistici: Semantica Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Operatori Insiemistici: Semantica 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 G. Mecca - mecca@unibas.it - Basi di Dati

Operatori Insiemistici: Semantica Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Operatori Insiemistici: Semantica 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: {1, 3, 5} – {3, 7, 9} = {1, 5} G. Mecca - mecca@unibas.it - Basi di Dati

Operatori Insiemistici: Semantica Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Operatori Insiemistici: Semantica 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 G. Mecca - mecca@unibas.it - Basi di Dati

Operatori Insiemistici: Semantica Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Operatori Insiemistici: Semantica Persone = NomiProfessori U NomiStudenti Esempio cognome nome Pinco Palla NomiProfessori Vieri Christian cognome nome Del Piero Alessandro Pinco Palla Vieri Christian NomiStudenti Del Piero Alessandro cognome nome Rossi Mario Rossi Mario Neri Paolo Neri Paolo Rossi Maria Rossi Maria Bruno Pasquale Pinco Palla Pinco Pietro Bruno Pasquale Pinco Pietro G. Mecca - mecca@unibas.it - Basi di Dati

“Cognome e Nome delle Persone” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. “Cognome e Nome delle Persone” In sintesi: NomiProfessori = p cognome, nome (Professori) NomiStudenti = p cognome, nome (Studenti) Persone = NomiProfessori U NomiStudenti Persone = p cognome, nome (Professori) U p cognome, nome (Studenti) G. Mecca - mecca@unibas.it - Basi di Dati

“Cognome e Nome delle Persone” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. “Cognome e Nome delle Persone” Nota sulla base della semantica è possibile anche StranaTabella = p nome, cognome (Professori) U p cognome, nome (Studenti) Del Piero Vieri Totti cognome Alex Christian Francesco nome Pietro Pasquale Palla Maria Paolo Mario Pinco Bruno Rossi Neri G. Mecca - mecca@unibas.it - Basi di Dati

Ridenominazione Funzione Caratteristiche Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Ridenominazione Ridenominazione Funzione consente di cambiare i nomi degli attributi in una tabella temporanea es: cognomePersona, nomePersona 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”) G. Mecca - mecca@unibas.it - Basi di Dati

Ridenominazione Sintassi Semantica r ridenominazioni (R) Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Ridenominazione Ridenominazione 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 G. Mecca - mecca@unibas.it - Basi di Dati

“Cognomi e Nomi delle Persone” Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Ridenominazione “Cognomi e Nomi delle Persone” In definitiva: Persone = rcognome AS cognomePersona, nome AS nomePersona ( p cognome, nome (Professori)) U p cognome, nome (Studenti) TABLE Persone ( cognomePersona varchar(20), nomePersona varchar(20)); G. Mecca - mecca@unibas.it - Basi di Dati

Forma Standard Interrogazioni in algebra relazionale Forma standard Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Forma Standard 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 G. Mecca - mecca@unibas.it - Basi di Dati

Forma Standard Esempio Strategia Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Forma Standard Esempio “Nome e Cognome dei professori ordinari che non hanno tesisti della laurea triennale” Strategia (a) trovo nome e cognome di tutti i professori ordinari (b) trovo nome e cognome dei professori che hanno tesisti della laurea triennale faccio la differenza tra (a) e (b) G. Mecca - mecca@unibas.it - Basi di Dati

(a) “Cognomi e Nomi dei Prof. Ordinari” Algebra Relazionale >> Concetti Fondamentali >> Forma Standard (a) “Cognomi e Nomi dei Prof. Ordinari” Professori Alessandro Christian Francesco nome null supplente Del Piero ADP associato ordinario qualifica Scienze Vieri CV Ingegneria Totti FT facolta cognome cod ProfessoriOrdinari = s qualifica = ‘Ordinario’ (Professori) Francesco nome ordinario qualifica Ingegneria Totti FT facolta cognome cod NomiOrdinari = r cognome AS cognomeProf, nome AS nomeProf ( p cognome, nome (ProfessoriOrdinari)) cognomeProf nomeProf Totti Francesco G. Mecca - mecca@unibas.it - Basi di Dati

(b) “Cognomi e Nomi di Prof. con Tesi Triennali” Algebra Relazionale >> Concetti Fondamentali >> Forma Standard (b) “Cognomi e Nomi di Prof. con Tesi Triennali” 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 ProfessoriConTesisti = Studenti relatore = cod Professori G. Mecca - mecca@unibas.it - Basi di Dati

(b) “Cognomi e Nomi di Prof. con Tesi Triennali” Algebra Relazionale >> Concetti Fondamentali >> Forma Standard (b) “Cognomi e Nomi di Prof. con Tesi Triennali” ProfessoriConTesisti = Studenti relatore = cod Professori matr S.cognome S.nome ciclo anno relatore P.cognome P.nome qualifica facolta 444 Pinco Palla laurea tr. 3 FT Totti Francesco ordinario Ing. 77777 Bruno Pasquale laurea sp. 1 88888 Pietro CV Vieri Christian associato Sc. ProfessoriConTesiTriennali = s ciclo = ‘laurea tr.’ (ProfessoriConTesisti) matr S.cognome S.nome ciclo anno relatore P.cognome P.nome qualifica facolta 444 Pinco Palla laurea tr. 3 FT Totti Francesco ordinario Ing. NomiProfConTesiTriennali = r cognome AS cognomeProf, nome AS nomeProf ( p Professori.cognome, Professori.nome (ProfessoriConTesiTriennali)) cognomeProf nomeProf Totti Francesco G. Mecca - mecca@unibas.it - Basi di Dati

“Cognomi e Nomi dei Prof. Ordinari senza Tesi Triennali” Algebra Relazionale >> Concetti Fondamentali >> Forma Standard “Cognomi e Nomi dei Prof. Ordinari senza Tesi Triennali” NomiOrdinari = r cognome AS cognomeProf, nome AS nomeProf ( p cognome, nome ( s qualifica = ‘Ordinario’ ( Professori)) cognomeProf nomeProf Totti Francesco NomiProfConTesiTriennali = r cognome AS cognomeProf, nome AS nomeProf ( p cognome, nome ( s ciclo = ‘laurea tr.’ ( Studenti relatore = cod Professori ))) cognomeProf nomeProf Totti Francesco Risultato = NomiOrdinari – NomiProfConTesiTriennali cognomeProf nomeProf G. Mecca - mecca@unibas.it - Basi di Dati

Riassumendo Risultato = p cognome, nome ( s qualifica = ‘Ordinario’ ( Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Riassumendo Risultato = r cognome AS cognomeProf, nome AS nomeProf ( p cognome, nome ( s qualifica = ‘Ordinario’ ( Professori)) – s ciclo = ‘laurea tr.’ ( sottointerrogazione n. 1 operatore insiemistico sottointerrogazione n. 2 ridenominazioni proiezioni selezioni join Studenti relatore = cod Professori )) G. Mecca - mecca@unibas.it - Basi di Dati

Forma Standard Varie sottointerrogazioni (una o più) Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Forma Standard 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 G. Mecca - mecca@unibas.it - Basi di Dati

Forma Standard Attenzione Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Forma Standard Attenzione la forma standard non è necessariamente la più efficiente esempio: anticipare la selezioni NomiProfConTesiTriennali = r cognome AS cognomeProf, nome AS nomeProf ( p cognome, nome ( s ciclo = ‘laurea tr.’ ( Studenti relatore = cod Professori )) G. Mecca - mecca@unibas.it - Basi di Dati

Forma Standard Ordine alternativo: Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Forma Standard Ordine alternativo: NomiProfConTesiTriennali = r cognome AS cognomeProf, nome AS nomeProf ( p cognome, nome ( s ciclo = ‘laurea tr.’ (Studenti) relatore = cod Professori )) esecuzione più efficiente: si eliminano subito le ennuple irrilevanti G. Mecca - mecca@unibas.it - Basi di Dati

Forma Standard In realtà Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Forma Standard In realtà è possibile disinteressarsi dell’efficienza durante la scrittura delle interrogazioni SQL l’utente scrive una interrogazione specificando quali operatori applicare, ma non in quale ordine il DBMS si incarica di effettuare le interrogazioni, trovando l’ordine di applicazione più efficiente per gli operatori G. Mecca - mecca@unibas.it - Basi di Dati

Forma Standard Metodo di scrittura delle interrogazioni Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Forma Standard Metodo di scrittura delle interrogazioni Stabilire se è necessario utilizzare operatori insiemistici e dividere in sottointerrogazioni Per ogni sottointerrogazione, decidere da quali tabelle prelevare i dati Se le tabelle sono più di una, (strategia a) metterle in prodotto cartesiano oppure (strategia b) metterle in join con le condizioni opportune G. Mecca - mecca@unibas.it - Basi di Dati

Forma Standard Metodo di scrittura (continua) Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Forma Standard Metodo di scrittura (continua) Scrivere le eventuali selezioni (Strategia a) incluse le condizioni di Join Scrivere le eventuali proiezioni Scrivere le eventuali ridenominazioni finali Rimettere il tutto insieme applicando gli operatori insiemistici G. Mecca - mecca@unibas.it - Basi di Dati

Forma Standard Suggerimento n.1 Suggerimento n.2 Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Forma Standard Suggerimento n.1 dare un nome a ciascun risultato parziale rimettere assieme gli operatori solo alla fine Suggerimento n.2 tenere traccia dello schema dei risultati parziali generati da ciascun operatore elenco degli attributi (nomi e tipi) aiuta a scrivere le operazioni successive G. Mecca - mecca@unibas.it - Basi di Dati

Concetti Fondamentali Algebra Relazionale >> Sommario Concetti Fondamentali Introduzione La Base di Dati di Esempio Algebra Relazionale selezione, proiezione prodotto cartesiano, join unione, intersezione, differenza ridenominazioni Forma Standard G. Mecca - mecca@unibas.it - Basi di Dati

cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, Algebra Relazionale >> Concetti Fondamentali >> 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 >> Concetti Fondamentali >> La Base di Dati di Esempio Corsi T codice CHAR(3) PK titolo VARCHAR(20) ciclo CHAR(20) docente CHAR(4) FK Numeri T numero CHAR(9) PK professore CHAR(4) PK, 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 >> Concetti Fondamentali >> 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 >> Concetti Fondamentali >> 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