Introduzione. Introduzione

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

Algebra Relazionale. Concetti Fondamentali

Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

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

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

Basi di Dati. 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

Interrogazioni con Raggruppamenti

Basi di Dati. Concetti Avanzati

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

ALGEBRA RELAZIONALE. Patrizio Dazzi a.a

Basi di Dati. Dettagli e Approfondimenti

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

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

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

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

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

Basi di Dati. Progettazione Logica

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

Basi di dati. Linguaggi di interrogazione

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

Algebra relazionale: operazioni

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

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

Vincoli di Integrità Referenziale

Scopo. Informatica. Sistema informativo. Sistema informatico

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

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

Scopo Laboratorio di Informatica

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

Modulo 2 Data Base 2

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

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida

Linguaggi di interrogazione. linguaggi interrogazione 1

Interrogazioni nidificate

Operatori derivati dagli insiemi

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

Informatica Grafica. Basi di dati parte 2

Basi di Dati. Modello Concettuale

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

Basi di dati e Relazioni

Laboratorio di Basi di Dati

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

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

Structured Query Language

Corso di Basi di Dati

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

Interrogazioni nidificate

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

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

Basi di dati (database)

ALGEBRA RELAZIONALE. DB -Algebra Relazionale 1

Il linguaggio SQL. TUTORATO DIFONDAMENTI DIINFORMATICA

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

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

Parte III L algebra relazionale

Fondamenti di Teoria delle Basi di Dati

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

Sistemi di Elaborazione delle Informazioni

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Modulo 2 Data Base 3

Aggiornamenti e Interrogazioni

Basi di dati: appello 14/07/06

Laboratorio di Basi di Dati e Multimedia

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

Laboratorio di Basi di Dati

Lezione 5. Algebra relazionale

FONDAMENTI DI INFORMATICA 1

Il linguaggio SQL: DDL di base

Il modello relazionale

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

Sommario. Introduzione... 13

3 Algebra Relazionale

Corso di Informatica Linguaggio SQL prima parte

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

SQL: "storia" 31/05/2006 2

DataBase Management System - DBMS

Algebra Relazionale. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Basi di dati. Selezione, proiezione e join. Linguaggi di interrogazione. Selezione, proiezione e join. Equivalenza di espressioni

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Modello relazionale e algebra relazionale

Introduzione. Il Modello Relazionale. Relazioni e Tabelle. Relazioni Matematiche - 1. Relazioni Matematiche - 2. Relazioni Matematiche - 3

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

Model o relazionale 1

Interrogazioni in SQL SQL1 1

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

Dichiarazione degli schemi in SQL DDL 1

Transcript:

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

SQL Introduzione 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 3 DDL, DCL concettualmente semplici Introduzione DML aggiornamenti: concettualmente semplice interrogazioni: complesso Lavorare con oggetti inconsueti le tabelle algebra su tabelle; analogo: algebra sui reali 4 2

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 5 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 6 3

Base di Dati dei Corsi di Informatica Professori codice,, qualifica, facoltà numeri di telefono Studenti matricola,, tipo di corso (ciclo): laurea tr., laurea spec. relatore della tesi Corsi codice, titolo, docente, ciclo Esami studente, voto, lode, corso Tutorato Studentesco studente tutore, studente tutorato 7 TABLE Professori ( cod char(4) PRIMARY KEY, varchar(20) NOT NULL, varchar(20) NOT NULL, qualifica char(5), facolta char(0) ); TABLE Studenti ( matr integer PRIMARY KEY, varchar(20) NOT NULL, 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>=8 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 4

Base di Dati dei Corsi di Informatica Una rappresentazione grafica dello schema relazionale (stereotipi di UML) ogni tabella è un rettangolo con un 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) PK, FK ciclo CHAR(20) numero CHAR(9) PK studente INTEGER PK, FK docente CHAR(4) FK professore CHAR(4) PK, FK voto INTEGER lode BOOL Professori T cod CHAR(4) PK Studenti T VARCHAR(20) VARCHAR(20) matr INTEGER VARCHAR(20) VARCHAR(20) PK qualifica CHAR(5) facolta CHAR(0) ciclo CHAR(20) Tutorato T anno INTEGER studente INTEGER PK, FK relatore CHAR(4) FK tutor INTEGER PK, FK 0 5

Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Professori cod qualifica facolta Ingegneria Vieri Christian associato Scienze supplente Studenti matr Mario ciclo anno relatore 222 Neri Paolo 2 333 Maria 444 Palla 3 Bruno Pasquale laurea sp. Pietro laurea sp. Corsi cod PR titolo Programmazione I ciclo docente ASD Algoritmi e Str. Dati IN Informatica Teorica laurea sp. Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Tutorato studente tutor Numeri professore numero 09720545 222 34723456 333 VC 097205227 444 097205363 33823456 Esami studente corso PR voto 27 lode false 222 ASD 30 true IN 24 false PR 2 false ASD 20 false ASD 28 false PR 30 false IN 30 true 2 6

Base di Dati dei Corsi di Informatica Nota nella base di dati vengono utilizzati ripetutamente codici alfanumerici leggibilità dell esempio (es:, PR ) in generale è meglio adottare come chiavi primarie codici interi maggiore compattezza e migliori prestazioni 3 Collezione di operatori applicati a tabelle che producono tabelle Algebra Relazionale Espressioni composizione di operatori applicati a tabelle Assegnazioni consentono di assegnare ad un nuova tabella il risultato di un espressione 4 7

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 5 Algebra Relazionale Operatori principali selezione proiezione prodotto cartesiano e join unione, intersezione e differenza ridenominazione Terminologia ispirata all analogia ennuple = vettori 6 8

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 7 Studenti della laurea triennale Studenti matr Mario ciclo anno relatore 222 Neri Paolo 2 333 Maria 444 Palla 3 Bruno Pasquale laurea sp. Pietro laurea sp. condizione: Studenti.ciclo= StudentiTriennio matr ciclo anno Mario relatore 222 Neri Paolo 2 333 Maria 444 Palla 3 8 9

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: σ (R) condizione StudentiTriennio =σ (Studenti) ciclo= 9 Studenti della di anni successivi al I Studenti matr Mario ciclo anno relatore 222 Neri Paolo 2 333 Maria 444 Palla 3 Bruno Pasquale laurea sp. Pietro laurea sp. condizione: ciclo= AND anno > Risultato matr ciclo anno relatore 222 Neri Paolo 2 444 Palla 3 Risultato = σ (Studenti) ciclo= AND anno> 20 0

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 2 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 ( TABLE StudentiTriennio ( Studenti.matr integer, matr integer, Studenti. varchar(20), Studenti. varchar(20), Studenti. varchar(20), Studenti. varchar(20), Studenti.ciclo char(20), Studenti.ciclo char(20), Studenti.anno integer, anno integer, Studenti.relatore char(4)); relatore char(4)); 22

Proiezione Funzione estrarre alcune delle colonne di una tabella Esempio Estrarre l elenco dei nomi e i cognomi degli studenti TABLE ElencoNomi ( Studenti. varchar(20), Studenti. varchar(20), ); 23 Cognomi e Nomi degli Studenti Studenti matr Mario ciclo anno relatore 222 Neri Paolo 2 333 Maria 444 Palla 3 Bruno Pasquale laurea sp. Pietro laurea sp. ElencoNomi Mario Neri Paolo Maria Palla Bruno Pasquale Pietro 24 2

Proiezione: Sintassi Operatore unario lista di attributi della tabella Sintassi π lista attributi (R) ElencoNomi = π, (Studenti) 25 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 26 3

Cognomi e Anni di Corso degli Studenti Studenti matr ciclo anno relatore Mario 222 Neri Paolo 2 333 Maria 444 Palla 3 Bruno Pasquale laurea sp. Pietro laurea sp. Risultato anno Neri 2 3 Bruno Risultato = π, anno ennuple identiche (duplicati) (Studenti) NOTA: ulteriori duplicati se Risultato = π (Studenti) 27 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 28 4

Prodotto Cartesiano Esempio Generare la tabella ProfessoriENumeri contenente nomi, cognomi e numeri dei prof. TABLE Professori ( cod char(4) PRIMARY KEY, varchar(20) NOT NULL, varchar(20) NOT NULL, qualifica char(5), facolta char(0) ); TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); TABLE ProfessoriENumeri ( Professori. varchar(20), Professori. varchar(20), numero char(9)); 29 Professori e Numeri Professori Numeri professore numero 09720545 cod qualifica facolta 34723456 Ingegneria VC 097205227 Vieri Christian associato Scienze 097205363 supplente 33823456 I Passo: Prodotto Cartesiano TabellaA = Professori X Numeri cod qualifica facolta professore numero Ingegneria 09720545 Ingegneria 34723456 Ingegneria VC 097205227 Ingegneria 097205363 Ingegneria 33823456 Vieri Christian associato Scienze 09720545 Vieri Christian associato Scienze 34723456 supplente 33823456 30 5

Professori e Numeri TabellaA cod qualifica facolta professore numero Ingegneria 09720545 Ingegneria 34723456 Ingegneria VC 097205227 Ingegneria 097205363 Ingegneria 33823456 Vieri Christian associato Scienze 09720545 supplente 33823456 II Passo: Selezione TabellaB = σ cod=professore (TabellaA) cod qualifica facolta professore numero Ingegneria 09720545 Ingegneria 34723456 Vieri Christian associato Scienze VC 097205227 supplente 097205363 supplente 33823456 3 Tabella B Professori e Numeri cod qualifica facolta professore numero Ingegneria 09720545 Ingegneria 34723456 Vieri Christian associato Scienze VC 097205227 supplente 097205363 supplente 33823456 III Passo: Proiezione ProfessoriENumeri = π,,numero (TabellaB) Vieri Christian numero 09720545 34723456 097205227 097205363 33823456 32 6

In sintesi Professori e Numeri TabellaA = TabellaB = Professori X Numeri σ cod=professore ProfessoriENumeri = π (TabellaA),, numero (TabellaB) ProfessoriENumeri = π (,, numero σ ( cod=professore Professori X Numeri )) 33 Prodotto Cartesiano: Sintassi Operatore binario ( diadico ) è il primo operatore che consente di mettere assieme dati provenienti da tabelle diverse Sintassi R X S 34 7

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à 35 Join Prodotto cartesiano consente di correlare dati di tabelle diverse ma genera risultati di grandi dimensioni (es: tabelle di 000 ennuple > mil. di ennuple) su cui poi bisogna effettuare una selezione Sarebbe opportuno avere un operatore che consente di fare la correlazione verificando contestualmente la condizione 36 8

cod VC Professori Professori e Numeri: Alternativa Numeri professore numero 09720545 qualifica facolta 34723456 Ingegneria VC 097205227 Vieri Christian associato Scienze 097205363 supplente 33823456 I Passo: Join TabellaA = Professori cod=professore Numeri cod VC Vieri qualifica facolta professore numero Ingegneria 09720545 Ingegneria 34723456 Christian associato Scienze VC 097205227 supplente 097205363 supplente 33823456 37 Tabella A Professori e Numeri cod qualifica facolta professore numero Ingegneria 09720545 Ingegneria 34723456 Vieri Christian associato Scienze VC 097205227 supplente 097205363 supplente 33823456 II Passo: Proiezione ProfessoriENumeri=π,,numero (TabellaA ) Vieri Christian numero 09720545 34723456 097205227 097205363 33823456 38 9

In sintesi Professori e Numeri TabellaA = Professori ProfessoriENumeri = π cod=professore Numeri,, numero (TabellaA ) ProfessoriENumeri = π (,, numero Professori cod=professore Numeri) 39 Join: Sintassi Operatore binario ( diadico ) Sintassi R condizione S Condizione AND di condizioni semplici attributo di R = attributo di S i due attributi devono essere dello stesso tipo 40 20

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 prodotto cartesiano e selezione: R condizione S = σ condizione (R X S) Attenzione: semantica operazionale diversa 4 Join Complessi Esempio Matricola e degli studenti che hanno sostenuto l esame di informatica teorica Richiede di correlare tre tabelle matricola di Studenti e studente di Esami cod di Corso e corso di Esami Due condizioni di join 42 2

Esame di Informatica Teorica TABLE Studenti ( TABLE Esami ( matr integer PRIMARY KEY, studente integer varchar(20) NOT NULL, REFERENCES Studenti(matr) 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, varchar(20), 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, varchar(20), 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, varchar(20), 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 22

Esame di Informatica Teorica StudentiEsamiCorsi matr studente corso voto cod titolo Mario PR 27 PR Progr... 222 Neri Paolo 222 ASD 30 ASD Algorit Mario IN 24 IN Inform Bruno Pasquale PR 2 PR Progr Bruno Pasquale ASD 20 ASD Algorit Pietro ASD 28 ASD Algorit Pietro PR 30 PR Progr Pietro IN 30 IN Inform dalla tabella Studenti dalla tabella Esami dalla tabella Corsi Risultato = π matricola, (σ titolo= Inform. t. (StudentiEsamiCorsi)) Risultato matr 45 StudentiEsami = Studenti Join Complessi StudentiEsamiCorsi = StudentiEsami matr=studente Esami 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 23

Esame di Infomatica Teorica In sintesi: StudentiEsami = Studenti matr=studente Esami StudentiEsamiCorsi = StudentiEsami Risultato = π matricola, ( σ titolo= Inform. t. (StudentiEsamiCorsi)) cod=corso Corsi Risultato = π matricola, ( σ titolo= Inform. t. ( Studenti matr=studente Esami cod=corso Corsi )) 47 Algebra Relazionale Finora abbiamo visto gli operatori fondamentali Unari selezione, σ condizione (R) proiezione, π attributi (R) Binari prodotto cartesiano, R x S join, R condizione S 48 24

Algebra Relazionale Altri operatori importanti Operatori insiemistici unione intersezione differenza Ridenominazione meno importante (ha solo funzioni di leggibilità) 49 Operatori Insiemistici Funzione le tabelle sono collezioni di ennuple è possibile applicare le operazioni consuete sulle collezioni unione intersezione differenza 50 25

Operatori Insiemistici Esempio Cog e di tutte le persone TABLE Professori ( cod char(4) PRIMARY KEY, Professori. varchar(20) NOT NULL, Professori. varchar(20) NOT NULL, qualifica char(5), facolta char(0) ); TABLE Persone ( TABLE Studenti ( matr integer PRIMARY KEY, Studenti. varchar(20) NOT NULL, Studenti. varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod)); varchar(20), varchar(20)); 5 Cog e Nome delle Persone Professori NomiProfessori = π, (Professori) cod qualifica facolta Ingegneria Vieri Christian associato Scienze Vieri Christian supplente Studenti NomiStudenti = π, (Studenti) matr ciclo anno relatore Mario Mario 222 Neri Paolo 2 Neri Paolo 333 Maria Maria 444 Palla 3 Palla Bruno Pasquale laurea sp. Bruno Pasquale Pietro laurea sp. Pietro 52 26

Cog e Nome delle Persone NomiProfessori Vieri NomiStudenti Neri Bruno Christian Mario Paolo Maria Palla Pasquale Pietro Persone = NomiProfessori U NomiStudenti Vieri Neri Bruno Christian Mario Paolo Maria Palla Pasquale Pietro 53 Operatori Insiemistici: Sintassi Operatori binari Sintassi stessi simboli delle operazioni convenzionali su insiemi Unione: R U S Intersezione: R S Differenza: R S 54 27

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 55 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: {, 3, 5} {3, 7, 9} = {, 5} 56 28

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 57 Esempio Operatori Insiemistici: Semantica NomiProfessori Vieri Palla Christian Persone = NomiProfessori U NomiStudenti Palla Vieri Christian NomiStudenti Neri Bruno Mario Paolo Maria Palla Pasquale Neri Bruno Mario Paolo Maria Pasquale Pietro Pietro 58 29

Cog e Nome delle Persone In sintesi: NomiProfessori = π, (Professori) NomiStudenti = π, (Studenti) Persone = NomiProfessori U NomiStudenti Persone = π, (Professori) U π, (Studenti) 59 Cog e Nome delle Persone Nota sulla base della semantica è possibile anche StranaTabella = π, (Professori) U π, (Studenti) Christian Alex Neri Bruno Vieri Mario Paolo Maria Palla Pasquale Pietro 60 30

Ridenominazione Funzione consente di cambiare i nomi degli attributi in una tabella temporanea es: Persona, Persona Caratteristiche agisce solo sullo schema non cambia né la cardinalità, né il n. di attributi normalmente si applica solo sul risultato finale (funzione puramente cosmetica ) 6 Ridenominazione Sintassi ρ 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 62 3

Cognomi e Nomi delle Persone In definitiva: Persone = ρ AS Persona, AS Persona ( π, (Professori)) U π, (Studenti) TABLE Persone ( Persona varchar(20), Persona varchar(20)); 63 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 64 32

Forma Standard Esempio Nome e Cog dei professori ordinari che non hanno tesisti della laurea triennale Strategia (a) trovo e di tutti i professori ordinari (b) trovo e 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 qualifica facolta Ingegneria Vieri Christian associato Scienze supplente ProfessoriOrdinari = σ qualifica = Ordinario (Professori) cod qualifica facolta Ingegneria NomiOrdinari = ρ AS Prof, AS Prof ( π, (ProfessoriOrdinari)) Prof Prof 66 33

(b) Cognomi e Nomi di Prof. con Tesi Triennali Professori cod qualifica facolta Ingegneria Vieri Christian associato Scienze supplente Studenti matr Mario ciclo anno relatore 222 Neri Paolo 2 333 Maria 444 Palla 3 Bruno Pasquale laurea sp. Pietro laurea sp. ProfessoriConTesisti = Studenti relatore = cod Professori 67 (b) Cognomi e Nomi di Prof. con Tesi Triennali ProfessoriConTesisti = Studenti relatore = cod Professori matr S. S. ciclo anno relatore P. P. qualifica facolta 444 Palla 3 Ing. Bruno Pasquale laurea sp. Ing. Pietro laurea sp. Vieri Christian associato Sc. ProfessoriConTesiTriennali = σ ciclo = (ProfessoriConTesisti) matr S. S. ciclo anno relatore P. P. qualifica facolta 444 Palla 3 Ing. NomiProfConTesiTriennali = ρ AS Prof, AS Prof ( π Professori., Professori. (ProfessoriConTesiTriennali)) Prof Prof 68 34

Cognomi e Nomi dei Prof. Ordinari senza Tesi Triennali NomiOrdinari = ρ AS Prof, AS Prof ( π, ( σ qualifica = Ordinario ( Professori)) Prof Prof NomiProfConTesiTriennali = ρ AS Prof, AS Prof ( π, ( σ ciclo = ( Professori ))) Studenti relatore = cod Prof Prof Risultato = NomiOrdinari NomiProfConTesiTriennali Prof Prof 69 sottointerrogazione n. operatore insiemistico sottointerrogazione n. 2 Riassumendo Risultato = ρ AS Prof, AS Prof ( π, ( σ qualifica = Ordinario ( Professori)) ρ AS Prof, AS Prof ( π, ( σ ciclo = ( Studenti relatore = cod Professori )) ridenominazioni proiezioni selezioni join 70 35

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 7 Forma Standard Attenzione la forma standard non è necessariamente la più efficiente esempio: anticipare la selezioni NomiProfConTesiTriennali = ρ AS Prof, AS Prof ( π, ( σ ciclo = ( Professori )) Studenti relatore = cod 72 36

Forma Standard Ordine alternativo: NomiProfConTesiTriennali = ρ AS Prof, AS Prof ( π, ( σ ciclo = (Studenti) relatore = cod Professori )) esecuzione più efficiente: si eliminano subito le ennuple irrilevanti 73 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 74 37

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 75 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 76 38

Forma Standard Suggerimento n. dare un 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 77 Introduzione Concetti Fondamentali La Base di Dati di Esempio Algebra Relazionale selezione, proiezione prodotto cartesiano, join unione, intersezione, differenza ridenominazioni Forma Standard 78 39

TABLE Professori ( cod char(4) PRIMARY KEY, varchar(20) NOT NULL, varchar(20) NOT NULL, qualifica char(5), facolta char(0) ); TABLE Studenti ( matr integer PRIMARY KEY, varchar(20) NOT NULL, 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>=8 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) PK, FK ciclo CHAR(20) numero CHAR(9) PK studente INTEGER PK, FK docente CHAR(4) FK professore CHAR(4) PK, FK voto INTEGER lode BOOL Professori T cod CHAR(4) PK Studenti matr INTEGER VARCHAR(20) VARCHAR(20) T PK VARCHAR(20) VARCHAR(20) qualifica CHAR(5) facolta CHAR(0) ciclo CHAR(20) Tutorato T anno INTEGER studente INTEGER PK, FK relatore CHAR(4) FK tutor INTEGER PK, FK 80 40

Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Professori cod qualifica facolta Ingegneria Vieri Christian associato Scienze supplente Studenti matr Mario ciclo anno relatore 222 Neri Paolo 2 333 Maria 444 Palla 3 Bruno Pasquale laurea sp. Pietro laurea sp. Corsi cod PR titolo Programmazione I ciclo docente ASD Algoritmi e Str. Dati IN Informatica Teorica laurea sp. 8 Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio Tutorato studente tutor Numeri professore numero 09720545 222 34723456 333 VC 097205227 444 097205363 33823456 Esami studente corso PR voto 27 lode false 222 ASD 30 true IN 24 false PR 2 false ASD 20 false ASD 28 false PR 30 false IN 30 true 82 4