Basi di Dati. Algebra Relazionale. Concetti Fondamentali

Documenti analoghi
Algebra Relazionale. Concetti Fondamentali

Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

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

Introduzione. Introduzione

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

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

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

BASI di DATI. SQL: concetti fondamentali

Basi di Dati SQL-92. Concetti Fondamentali

Basi di Dati. Concetti Avanzati

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

Interrogazioni con Raggruppamenti

Basi di Dati. Dettagli e Approfondimenti

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

ALGEBRA RELAZIONALE. Patrizio Dazzi a.a

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

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti

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

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

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

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

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

Basi di Dati. Progettazione Logica

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

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

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

Basi di dati. Linguaggi di interrogazione

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

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

Algebra relazionale: operazioni

Vincoli di Integrità Referenziale

Linguaggi per basi di dati e SQL

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Scopo. Informatica. Sistema informativo. Sistema informatico

Scopo Laboratorio di Informatica

Basi di Dati. Definizione del Modello Concettuale dei Dati: Concetti Fondamentali

Modulo 2 Data Base 2

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

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

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

Basi di Dati. Modello Concettuale

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida

Linguaggi di interrogazione. linguaggi interrogazione 1

Interrogazioni nidificate

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

Operatori derivati dagli insiemi

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

Informatica Grafica. Basi di dati parte 2

Basi di dati e Relazioni

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

Laboratorio di Basi di Dati

Interrogazioni nidificate

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

Structured Query Language

Il linguaggio SQL. TUTORATO DIFONDAMENTI DIINFORMATICA

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

Basi di dati (database)

Corso di Basi di Dati

Parte III. L algebra relazionale

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

Linguaggi per basi di dati

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

Il modello relazionale

ALGEBRA RELAZIONALE. DB -Algebra Relazionale 1

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

Fondamenti di Teoria delle Basi di Dati

Parte III L algebra relazionale

Model o relazionale 1

Laboratorio di Basi di Dati e Multimedia

Sistemi di Elaborazione delle Informazioni

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

Modulo 2 Data Base 3

SQL: "storia" 31/05/2006 2

Aggiornamenti e Interrogazioni

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

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

Laboratorio di Basi di Dati

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

FONDAMENTI DI INFORMATICA 1

Basi di dati: appello 14/07/06

IL MODELLO RELAZIONALE

SQL Esempi. 24/10-7/11/2016 Basi di dati - SQL 1

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

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

Lezione 5. Algebra relazionale

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

Sistemi di Elaborazione delle Informazioni (C.I. 15) Basi di dati Introduzione teorica

Interrogazioni Interrogazioni in SQL } L'istruzione base dell'sql per costruire interrogazioni di complessita arbitraria e lo statement SELECT } Sinta

Il linguaggio SQL: DDL di base

DataBase Management System - DBMS

Interrogazioni in SQL SQL1 1

Fondamenti di Teoria delle Basi di Dati

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

Modello relazionale e algebra relazionale

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

Corso di Informatica Linguaggio SQL prima parte

Sommario. Introduzione... 13

Transcript:

Basi di Dati Algebra Relazionale Concetti Fondamentali

Concetti Fondamentali u Introduzione u La Base di Dati di Esempio u Algebra Relazionale selezione, proiezione prodotto cartesiano, join unione, intersezione, differenza ridenominazioni u Forma Standard 2

u SQL Introduzione u Linguaggio di Definizione (DDL) Creare la base di dati e le tabelle (schema) u Linguaggio di Controllo (DCL) Creare utenti e autorizzazioni u Linguaggio di Manipolazione (DML) Inserire, cancellare, modificare le ennuple Interrogare la base di dati 3

u DDL, DCL concettualmente semplici Introduzione u DML aggiornamenti: concettualmente semplice interrogazioni: complesso u Lavorare con oggetti inconsueti le tabelle algebra su tabelle; analogo: algebra sui reali 4

Algebra Relazionale >> Concetti Fondamentali Introduzione u 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 5

Introduzione u Algebra Relazionale definita da Codd nell articolo sul modello lontana dall SQL sotto molti aspetti u Algebra dei DBMS Relazionali operatori attraverso cui vengono implementate le interrogazioni SQL alla base delle ottimizzazioni u Presenteremo la seconda 6

Base di Dati dei Corsi di Informatica u Professori u Studenti codice, nome, qualifica, facoltà numeri di telefono matricola, nome, tipo di corso (ciclo): laurea tr., laurea spec. relatore della tesi u Corsi u Esami codice, titolo, docente, ciclo studente, voto, lode, corso u Tutorato Studentesco studente tutore, studente tutorato 7

TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); 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 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 Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); 8

Base di Dati dei Corsi di Informatica u 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) 9

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

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 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 Corsi cod titolo ciclo docente PR1 Programmazione I laurea tr. FT ASD Algoritmi e Str. Dati laurea tr. CV INFT Informatica Teorica laurea sp. ADP 11

Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Tutorato studente tutor 111 77777 Numeri professore numero FT 0971205145 222 77777 FT 347123456 333 88888 VC 0971205227 444 88888 ADP 0971205363 ADP 338123456 Esami studente corso voto lode 111 PR1 27 false 222 ASD 30 true 111 INFT 24 false 77777 PR1 21 false 77777 ASD 20 false 88888 ASD 28 false 88888 PR1 30 false 88888 INFT 30 true 12

Base di Dati dei Corsi di Informatica u 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 13

u Collezione di operatori applicati a tabelle Algebra Relazionale che producono tabelle u Espressioni composizione di operatori applicati a tabelle u Assegnazioni consentono di assegnare ad un nuova tabella il risultato di un espressione 14

Algebra Relazionale u Attenzione lavoreremo con due tipi di tabelle u Tabelle originali della base di dati con schema completo di vincoli u 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 15

u Operatori principali selezione proiezione Algebra Relazionale prodotto cartesiano e join unione, intersezione e differenza ridenominazione u Terminologia ispirata all analogia ennuple = vettori 16

Selezione u Funzione serve per selezionare alcune delle ennuple di una tabella scartando le altre u Esempio sulla base di una condizione Estrarre dalla base di dati una tabella, StudentiTriennio, contenente i dati degli studenti della laurea triennale 17

Studenti della laurea triennale Studenti matr 111 cognome Rossi nome Mario ciclo laurea tr. anno 1 relatore 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 matr cognome nome ciclo anno 111 Rossi Mario laurea tr. 1 relatore null 222 Neri Paolo laurea tr. 2 null 333 Rossi Maria laurea tr. 1 null 444 Pinco Palla laurea tr. 3 FT 18

Selezione: Sintassi u Operatore unario ( monadico ) condizione sui valori degli attributi u Condizione: espressione booleana operandi: valori degli attributi della tabella operatori di confronto, operatori booleani u Sintassi: σ condizione (R) StudentiTriennio = σ (Studenti) ciclo= laurea tr. 19

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 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: ciclo= laurea tr. AND anno > 1 Risultato matr cognome nome ciclo anno 222 Neri relatore Paolo laurea tr. 2 null 444 Pinco Palla laurea tr. 3 FT Risultato = σ ciclo= laurea tr. AND anno>1 (Studenti) 20

Selezione: Semantica u Schema del risultato attributi e tipi della tabella originale u Istanza del risultato ennuple della tabella i cui valori soddisfano la condizione cardinalità minore o uguale rispetto alla tabella originale 21

Selezione: Semantica u 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 ( TABLE StudentiTriennio ( Studenti.matr integer, matr integer, Studenti.cognome varchar(20), Studenti.cognome varchar(20), Studenti.nome varchar(20), Studenti.nome varchar(20), Studenti.ciclo char(20), Studenti.ciclo char(20), Studenti.anno integer, anno integer, Studenti.relatore char(4)); relatore char(4)); 22

Proiezione u Funzione estrarre alcune delle colonne di una tabella u Esempio Estrarre l elenco dei nomi e i cognomi degli studenti TABLE ElencoNomi ( Studenti.cognome varchar(20), Studenti.nome varchar(20), ); 23

Cognomi e Nomi 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 ElencoNomi cognome Rossi Neri Rossi Pinco Bruno Pinco nome Mario Paolo Maria Palla Pasquale Pietro 24

Proiezione: Sintassi u Operatore unario lista di attributi della tabella u Sintassi π lista attributi (R) ElencoNomi = π (Studenti) cognome, nome 25

Proiezione: Semantica u Schema del risultato attributi dello schema originale su cui si effettua la proiezione u Istanza del risultato restrizione ( proiezione ) delle ennuple originali agli attributi specificati u ATTENZIONE se nel risultato non sopravvivono chiavi dello schema originale possono esserci duplicati 26

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 Risultato cognome anno Rossi 1 Risultato = π cognome, anno (Studenti) Neri 2 Rossi 1 Pinco 3 Bruno 1 Pinco 1 ennuple identiche (duplicati) NOTA: ulteriori duplicati se Risultato = π (Studenti) cognome 27

Prodotto Cartesiano u Finora operatori unari lavorano sui dati di un unica tabella u 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 28

Prodotto Cartesiano u 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 Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); TABLE ProfessoriENumeri ( Professori.cognome varchar(20), Professori.nome varchar(20), numero char(9)); 29

Professori e Numeri Professori cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria CV Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null Numeri professore numero FT 0971205145 FT 347123456 VC 0971205227 ADP 0971205363 ADP 338123456 I Passo: Prodotto Cartesiano TabellaA = Professori X Numeri cod cognome nome qualifica facolta professore numero FT FT FT Totti Totti Totti Francesco ordinario Ingegneria FT 0971205145 Francesco ordinario Ingegneria FT 347123456 Francesco ordinario Ingegneria VC 0971205227 FT Totti Francesco ordinario Ingegneria ADP 0971205363 FT Totti Francesco ordinario Ingegneria ADP 338123456 CV Vieri Christian associato Scienze FT 0971205145 CV Vieri Christian associato Scienze FT 347123456 ADP Del Piero Alessandro supplente null ADP 338123456 30

31 Professori e Numeri 338123456 ADP null supplente Alessandro Del Piero ADP 0971205145 FT Scienze associato Christian Vieri CV Ingegneria Ingegneria Ingegneria Ingegneria Ingegneria facolta ADP ADP VC FT FT professore 338123456 ordinario Francesco Totti FT 0971205363 ordinario Francesco Totti FT Francesco Francesco Francesco nome 0971205227 ordinario Totti FT ordinario ordinario qualifica 347123456 Totti FT 0971205145 Totti FT numero cognome cod TabellaA null null Scienze Ingegneria Ingegneria facolta ADP ADP VC FT FT professore 338123456 supplente Alessandro Del Piero ADP 0971205363 supplente Alessandro Del Piero ADP Christian Francesco Francesco nome 0971205227 associato Vieri CV ordinario ordinario qualifica 347123456 Totti FT 0971205145 Totti FT numero cognome cod II Passo: Selezione TabellaB = σ cod=professore (TabellaA)

Tabella B Professori e Numeri cod cognome nome qualifica facolta professore numero FT Totti Francesco ordinario Ingegneria FT 0971205145 FT Totti Francesco ordinario Ingegneria FT 347123456 CV Vieri Christian associato Scienze VC 0971205227 ADP Del Piero Alessandro supplente null ADP 0971205363 ADP Del Piero Alessandro supplente null ADP 338123456 III Passo: Proiezione ProfessoriENumeri = π cognome,nome,numero (TabellaB) cognome Totti Totti Vieri Del Piero Del Piero nome Francesco Francesco Christian Alessandro Alessandro numero 0971205145 347123456 0971205227 0971205363 338123456 32

u In sintesi Professori e Numeri TabellaA = Professori X Numeri TabellaB = σ (TabellaA) cod=professore ProfessoriENumeri = π (TabellaB) cognome, nome, numero ProfessoriENumeri = π ( cognome, nome, numero σ ( cod=professore Professori X Numeri )) 33

Prodotto Cartesiano: Sintassi u Operatore binario ( diadico ) è il primo operatore che consente di mettere assieme dati provenienti da tabelle diverse u Sintassi R X S 34

Prodotto Cartesiano: Semantica u Schema del risultato unione degli attributi (e relativi tipi) u Istanza del risultato tutte le ennuple ottenute concatenando ennuple delle due tabelle indiscriminatamente (in tutti i modi possibili) cardinalità pari al prodotto delle cardinalità 35

Join u 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 u Sarebbe opportuno avere un operatore che consente di fare la correlazione verificando contestualmente la condizione 36

Professori Professori e Numeri: Alternativa Numeri professore numero FT 0971205145 cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria VC Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null FT 347123456 VC 0971205227 ADP 0971205363 ADP 338123456 I Passo: Join TabellaA = Professori cod=professore Numeri cod FT FT VC cognome Totti Totti Vieri nome qualifica facolta professore numero Francesco ordinario Ingegneria FT 0971205145 Francesco ordinario Ingegneria FT 347123456 Christian associato Scienze VC 0971205227 ADP Del Piero Alessandro supplente null ADP 0971205363 ADP Del Piero Alessandro supplente null ADP 338123456 37

Tabella A Professori e Numeri cod cognome nome qualifica facolta professore numero FT Totti Francesco ordinario Ingegneria FT 0971205145 FT Totti Francesco ordinario Ingegneria FT 347123456 CV Vieri Christian associato Scienze VC 0971205227 ADP Del Piero Alessandro supplente null ADP 0971205363 ADP Del Piero Alessandro supplente null ADP 338123456 II Passo: Proiezione ProfessoriENumeri=πcognome,nome,numero (TabellaA ) cognome Totti Totti Vieri Del Piero Del Piero nome Francesco Francesco Christian Alessandro Alessandro numero 0971205145 347123456 0971205227 0971205363 338123456 38

u In sintesi Professori e Numeri TabellaA = Professori cod=professore Numeri ProfessoriENumeri = π (TabellaA ) cognome, nome, numero ProfessoriENumeri = π ( cognome, nome, numero Professori cod=professore Numeri) 39

Join: Sintassi u Operatore binario ( diadico ) u Sintassi R condizione S u Condizione AND di condizioni semplici attributo di R = attributo di S i due attributi devono essere dello stesso tipo 40

Join: Semantica u Schema del risultato unione degli attributi e relativi tipi u Istanza del risultato: ennuple ottenute concatenando ennuple di R ed ennuple di S, tali che soddisfano la condizione u Equivalente a prodotto cartesiano e selezione: R condizione S = σ condizione (R X S) Attenzione: semantica operazionale diversa 41

Join Complessi u Esempio Matricola e cognome degli studenti che hanno sostenuto l esame di informatica teorica u Richiede di correlare tre tabelle matricola di Studenti e studente di Esami cod di Corso e corso di Esami u Due condizioni di join 42

Esame di Informatica Teorica TABLE Studenti ( TABLE Esami ( matr integer PRIMARY KEY, studente integer cognome varchar(20) NOT NULL, REFERENCES Studenti(matr) nome varchar(20) NOT NULL, corso char(3) ciclo char(20), REFERENCES Corsi(cod), anno integer, voto integer, relatore char(4) lode bool, REFERENCES Professori(cod)); PRIMARY KEY (studente, corso)); StudentiEsami = Studenti 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); matr=studente Esami 43

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); StudentiEsamiCorsi = StudentiEsami corso=cod Corso 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)); 44

Esame di Informatica Teorica StudentiEsamiCorsi matr cognome nome studente corso voto cod titolo 111 Rossi Mario 111 PR1 27 PR1 Progr... 222 Neri Paolo 222 ASD 30 ASD Algorit 111 Rossi Mario 111 INFT 24 INFT Inform 77777 Bruno Pasquale 77777 PR1 21 PR1 Progr 77777 Bruno Pasquale 77777 ASD 20 ASD Algorit 88888 Pinco Pietro 88888 ASD 28 ASD Algorit 88888 Pinco Pietro 88888 PR1 30 PR1 Progr 88888 Pinco Pietro 88888 INFT 30 INFT Inform dalla tabella Studenti dalla tabella Esami dalla tabella Corsi Risultato = π matricola, cognome (σ titolo= Inform. t. (StudentiEsamiCorsi)) Risultato matr cognome 111 Rossi 88888 Pinco 45

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 46

u In sintesi: Esame di Infomatica Teorica StudentiEsami = Studenti StudentiEsamiCorsi = StudentiEsami matr=studente Esami cod=corso Corsi Risultato = π matricola, cognome ( σ titolo= Inform. t. (StudentiEsamiCorsi)) Risultato = π matricola, cognome ( σ titolo= Inform. t. ( Studenti matr=studente Esami cod=corso Corsi )) 47

Algebra Relazionale u Finora abbiamo visto gli operatori fondamentali u Unari u Binari selezione, σ condizione (R) proiezione, π attributi (R) prodotto cartesiano, R x S ð join, R condizione S 48

Algebra Relazionale u Altri operatori importanti u Operatori insiemistici unione intersezione differenza u Ridenominazione meno importante (ha solo funzioni di leggibilità) 49

Operatori Insiemistici u Funzione le tabelle sono collezioni di ennuple è possibile applicare le operazioni consuete sulle collezioni unione intersezione differenza 50

Operatori Insiemistici u 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 ( 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)); cognome varchar(20), nome varchar(20)); 51

Professori Cognome e Nome delle Persone NomiProfessori = π cognome, nome (Professori) cod cognome nome qualifica facolta cognome nome FT Totti Francesco ordinario Ingegneria Totti Francesco CV Vieri Christian associato Scienze Vieri Christian ADP Del Piero Alessandro supplente null Del Piero Alessandro Studenti NomiStudenti = π cognome, nome (Studenti) matr cognome nome ciclo anno relatore cognome nome 111 Rossi Mario laurea tr. 1 null Rossi Mario 222 Neri Paolo laurea tr. 2 null Neri Paolo 333 Rossi Maria laurea tr. 1 null Rossi Maria 444 Pinco Palla laurea tr. 3 FT Pinco Palla 77777 Bruno Pasquale laurea sp. 1 FT Bruno Pasquale 88888 Pinco Pietro laurea sp. 1 CV Pinco Pietro 52

Cognome e Nome delle Persone NomiProfessori cognome Totti Vieri Del Piero NomiStudenti cognome Rossi Neri Rossi Pinco Bruno Pinco nome Francesco Christian Alessandro nome Mario Paolo Maria Palla Pasquale Pietro Persone = NomiProfessori U NomiStudenti cognome Totti Vieri Del Piero Rossi Neri Rossi Pinco Bruno Pinco nome Francesco Christian Alessandro Mario Paolo Maria Palla Pasquale Pietro 53

Operatori Insiemistici: Sintassi u Operatori binari u Sintassi stessi simboli delle operazioni convenzionali su insiemi u Unione: R U S u Intersezione: R S u Differenza: R S 54

Operatori Insiemistici: Semantica u 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 u Schema del risultato eredita i nomi degli attributi dalla prima tabella 55

Operatori Insiemistici: Semantica u Istanza del risultato unione, intersezione o differenza delle ennuple u Attenzione semantica della differenza: tutti gli elementi del primo membro che non appartengono al secondo esempio: {1, 3, 5} {3, 7, 9} = {1, 5} 56

Operatori Insiemistici: Semantica u Attenzione dal risultato degli operatori insiemistici vengono eliminati eventuali duplicati passo finale di eliminazione degli eventuali duplicati prodotti u Motivazioni semantica più naturale esistono implementazioni efficienti 57

u Esempio Operatori Insiemistici: Semantica NomiProfessori cognome Pinco Vieri Del Piero nome Palla Christian Alessandro Persone = NomiProfessori U NomiStudenti cognome Pinco nome Palla Vieri Christian NomiStudenti cognome Rossi nome Mario Del Piero Rossi Alessandro Mario Neri Paolo Neri Paolo Rossi Maria Rossi Maria Pinco Palla Bruno Pasquale Bruno Pasquale Pinco Pietro Pinco Pietro 58

Cognome e Nome delle Persone u In sintesi: NomiProfessori = π cognome, nome (Professori) NomiStudenti = π cognome, nome (Studenti) Persone = NomiProfessori U NomiStudenti Persone = π cognome, nome (Professori) U π cognome, nome (Studenti) 59

Cognome e Nome delle Persone u Nota sulla base della semantica è possibile anche StranaTabella = π nome, cognome (Professori) U π cognome, nome (Studenti) nome Francesco Christian Alex Rossi Neri Rossi Pinco Bruno Pinco cognome Totti Vieri Del Piero Mario Paolo Maria Palla Pasquale Pietro 60

Ridenominazione u Funzione consente di cambiare i nomi degli attributi in una tabella temporanea es: cognomepersona, nomepersona u 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 ) 61

Ridenominazione u Sintassi ρ ridenominazioni (R) ridenominazioni: elenco di coppie vecchionome AS nuovonome separate da virgole vecchionome deve essere un attributo di R u Semantica nello schema del risultato ai vecchi nomi sono sostituiti i nuovi 62

Cognomi e Nomi delle Persone u In definitiva: Persone = ρ cognome AS cognomepersona, nome AS nomepersona ( π cognome, nome (Professori)) U π cognome, nome (Studenti) TABLE Persone ( cognomepersona varchar(20), nomepersona varchar(20)); 63

Forma Standard u Interrogazioni in algebra relazionale risultato dell applicazione di vari operatori è possibile applicare gli operatori in ordine vario (es: prima selezioni o prima ridenominaz.) u Forma standard nel seguito viene presentata una strategia sistematica per la scrittura di interrogazioni ordine standardizzato di applicazione degli operatori dell algebra 64

Forma Standard u Esempio Nome e Cognome dei professori ordinari che non hanno tesisti della laurea triennale u 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) 65

(a) Cognomi e Nomi dei Prof. Ordinari Professori cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria CV Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null ProfessoriOrdinari = σ qualifica = Ordinario (Professori) cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria NomiOrdinari = ρ cognome AS cognomeprof, nome AS nomeprof ( π cognome, nome (ProfessoriOrdinari)) cognomeprof Totti nomeprof Francesco 66

(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 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 ProfessoriConTesisti = Studenti relatore = cod Professori 67

(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 FT Totti Francesco ordinario Ing. 88888 Pinco Pietro laurea sp. 1 CV Vieri Christian associato Sc. ProfessoriConTesiTriennali = σ 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 = ρ cognome AS cognomeprof, nome AS nomeprof ( π Professori.cognome, Professori.nome (ProfessoriConTesiTriennali)) cognomeprof Totti nomeprof Francesco 68

Cognomi e Nomi dei Prof. Ordinari senza Tesi Triennali NomiOrdinari = ρ cognome AS cognomeprof, nome AS nomeprof ( π cognome, nome ( σ qualifica = Ordinario ( Professori)) cognomeprof Totti nomeprof Francesco NomiProfConTesiTriennali = ρ cognome AS cognomeprof, nome AS nomeprof ( π cognome, nome ( σ ciclo = laurea tr. ( Studenti relatore = cod cognomeprof Totti Professori ))) nomeprof Francesco Risultato = NomiOrdinari NomiProfConTesiTriennali cognomeprof nomeprof 69

sottointerrogazione n. 1 operatore insiemistico sottointerrogazione n. 2 Riassumendo Risultato = ρ cognome AS cognomeprof, nome AS nomeprof ( π cognome, nome ( σ qualifica = Ordinario ( Professori))) ρ cognome AS cognomeprof, nome AS nomeprof ( π cognome, nome ( σ ciclo = laurea tr. ( Studenti relatore = cod Professori ))) ridenominazioni proiezioni selezioni join 70

Forma Standard u Varie sottointerrogazioni (una o più) correlate con operatori insiemistici u Ciascuna sottointerrogazione prima: eventuali join o prodotti cartesiani poi: eventuali selezioni poi: eventuali proiezioni infine: eventuali ridenominazioni 71

Forma Standard u Attenzione la forma standard non è necessariamente la più efficiente esempio: anticipare la selezioni NomiProfConTesiTriennali = ρ cognome AS cognomeprof, nome AS nomeprof ( π cognome, nome ( σ ciclo = laurea tr. ( Studenti relatore = cod Professori )) 72

u Ordine alternativo: Forma Standard NomiProfConTesiTriennali = ρ cognome AS cognomeprof, nome AS nomeprof ( π cognome, nome ( σ ciclo = laurea tr. (Studenti) relatore = cod Professori )) esecuzione più efficiente: si eliminano subito le ennuple irrilevanti 73

Forma Standard u 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 74

Forma Standard u 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 75

Forma Standard u 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 76

Forma Standard u Suggerimento n.1 dare un nome a ciascun risultato parziale rimettere assieme gli operatori solo alla fine u 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 77

Concetti Fondamentali u Introduzione u La Base di Dati di Esempio u Algebra Relazionale selezione, proiezione prodotto cartesiano, join unione, intersezione, differenza ridenominazioni u Forma Standard 78

TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); 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 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 Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); 79

Corsi T Esami T codice CHAR(3) titolo VARCHAR(20) PK Numeri T corso CHAR(3) studente INTEGER PK, FK PK, FK ciclo CHAR(20) docente CHAR(4) FK numero CHAR(9) professore CHAR(4) PK PK, FK voto INTEGER lode BOOL Professori T cod CHAR(4) PK cognome VARCHAR(20) Studenti T nome VARCHAR(20) matr INTEGER cognome VARCHAR(20) nome VARCHAR(20) PK qualifica CHAR(15) facolta CHAR(10) ciclo CHAR(20) anno INTEGER relatore CHAR(4) FK Tutorato studente INTEGER tutor INTEGER T PK, FK PK, FK 80

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 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 Corsi cod titolo ciclo docente PR1 Programmazione I laurea tr. FT ASD Algoritmi e Str. Dati laurea tr. CV INFT Informatica Teorica laurea sp. ADP 81

Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Tutorato studente tutor 111 77777 Numeri professore numero FT 0971205145 222 77777 FT 347123456 333 88888 VC 0971205227 444 88888 ADP 0971205363 ADP 338123456 Esami studente corso voto lode 111 PR1 27 false 222 ASD 30 true 111 INFT 24 false 77777 PR1 21 false 77777 ASD 20 false 88888 ASD 28 false 88888 PR1 30 false 88888 INFT 30 true 82