Introduzione all’algebra relazionale Prof. Giovanni Giuffrida Esempio di interrogazione Studenti Esami Nome Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Matr_Studente Corso Voto Ugo Bianchi 567 Via Etnea 154 095 222 678 Programmazione 27 Teo Verdi 678 Via Parma 12 095 333 456 Architettura 30 567 Programmazione 18 678 Matematica 22 678 Architettura 30 Corsi Denominazione Docente Programmazione Ferro Architettura Pappalardo Matematica Lizzio Professore Corso Programmazione Ferro Architettura Pappalardo Quali professori hanno dato piu’ di 24 a Teo Verdi ed in quali corsi? Definizioni • • • • Relazione: La tabella Attributi/Colonne: Nomi delle colonne Tuple/Righe/Record: Righe della relazione Query: Interrogazione Nome Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Ugo Bianchi 567 Via Etnea 154 095 222 Teo Verdi 678 Via Parma 12 095 333 Algebra relazionale • Un linguaggio formale per eseguire interrogazioni su un insieme di relazioni • Un set di operatori che: – Sono definiti sulle relazioni – Producono come risultato una relazione • Gli operatori possono essere combinati per formare espressioni (molto) complesse • Modello universale di interrogazione di schemi relazionali – Non esiste praticamente – Usato come base da tutti i linguaggi di interrogazione relazionali Operatori dell’algebra relazionale (AR) • Gli operatori unari dell’AR sono: – Ridenominazione: ρ – Proiezione: – Restrizione/Selezione: • Gli operatori binari dell’AR sono: – – – – – Unione: Intersezione: Differenza: Prodotto cartesiano: ⋈ Join: ⋈F Ridenominazione • Simbolo: ρ • Modifica il nome di un attributo, lascia inalterate le tuple Studenti Nome Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Ugo Bianchi 567 Via Etnea 154 095 222 Teo Verdi 678 Via Parma 12 095 333 • ρNome Studente(Studenti) Studenti Studente Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Ugo Bianchi 567 Via Etnea 154 095 222 Teo Verdi 678 Via Parma 12 095 333 Unione, Differenza e Intersezione • Operatori insiemistici • Una relazione è un insieme di tuple – Quindi possiamo applicare alle relazioni gli operatori insiemistici standard • Il risultato dev’essere un set omogeneo di tuple • Possiamo applicare gli operatori insiemistici solo su relazioni omogenee, cioè con gli stessi attributi – Stesso numero di attributi e stesso nome degli attributi!! Esempio Unione Studenti Amministrativi Nome Matricola Indirizzo Telefono Nome Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Franco Bollo 756 Piazza Roma 2 091 817 Ugo Bianchi 567 Via Etnea 154 095 222 Mario Rossi 456 Via Roma 1 095 111 Teo Verdi 678 Via Parma 12 095 333 Leo Poldo 896 Via Piave 12 0931 Ugo Bianchi 567 Via Etnea 154 095 222 Studenti Amministrativi Nome Matricola Indirizzo Telefono Franco Bollo 756 Piazza Roma 2 091 817 Mario Rossi 456 Via Roma 1 095 111 Leo Poldo 896 Via Piave 12 0931 Ugo Bianchi 567 Via Etnea 154 095 222 Teo Verdi 678 Via Parma 12 095 333 • Contiene le righe che sono presenti o nell’una o nell’altra relazione (o in entrambe) • Stessa struttura delle due relazioni di input • Tuple duplicate vengono rimosse (le relazioni sono insiemi!) • Gode della proprietà commutativa Esempio Intersezione Studenti Amministrativi Nome Matricola Indirizzo Telefono Nome Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Franco Bollo 756 Piazza Roma 2 091 817 Ugo Bianchi 567 Via Etnea 154 095 222 Mario Rossi 456 Via Roma 1 095 111 Teo Verdi 678 Via Parma 12 095 333 Leo Poldo 896 Via Piave 12 0931 Ugo Bianchi 567 Via Etnea 154 095 222 Studenti Amministrativi Nome Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Ugo Bianchi 567 Via Etnea 154 095 222 • Contiene le righe che sono presenti nell’una e nell’altra relazione • Stessa struttura delle due relazioni di input • Gode della proprietà commutativa Esempio Differenza Studenti Amministrativi Nome Matricola Indirizzo Telefono Nome Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Franco Bollo 756 Piazza Roma 2 091 817 Ugo Bianchi 567 Via Etnea 154 095 222 Mario Rossi 456 Via Roma 1 095 111 Teo Verdi 678 Via Parma 12 095 333 Leo Poldo 896 Via Piave 12 0931 Ugo Bianchi 567 Via Etnea 154 095 222 Studenti - Amministrativi Amministrativi - Studenti Nome Matricola Indirizzo Telefono Nome Matricola Indirizzo Telefono Teo Verdi 678 Via Parma 12 095 333 Franco Bollo 756 Piazza Roma 2 091 817 Leo Poldo 896 Via Piave 12 0931 L’operatore Differenza non gode della proprietà commutativa Un esempio utile ma non fattibile Paternita Maternita Padre Figlio Madre Figlio Adamo Caino Eva Caino Adamo Abele Eva Seth Abramo Isacco Sara Isacco Abramo Ismaele Agar Ismaele Paternita Maternita ??? • «Padre» e «Madre» sono attributi diversi – Le relazioni non sono omogenee • «Padre» e «Madre» semanticamente simili, i.e., entrambi sono «Genitori» Un esempio utile ma non fattibile • Soluzione: Ridenominare gli attributi e poi fare l’unione ρPadre→Genitore(Paternita) ρMadre→Genitore(Maternita) Genitore Figlio Adamo Caino Adamo Abele Abramo Isacco Genitore Abramo Ismaele Genitore Figlio Eva Caino Eva Seth Figlio Sara Isacco Eva Caino Agar Ismaele Eva Seth Sara Isacco Agar Ismaele Adamo Caino Adamo Abele Abramo Isacco Abramo Ismaele Proiezione • Produce risultati: – Su un sottoinsieme degli attributi dell’operando – Con valori da tutte le tuple della relazione • Esempio: A1, A2,…, An (R) • In pratica permette di selezionare un sottoinsieme di attributi Esempio Proiezione Studenti Nome Matricola Indirizzo Telefono Mario Rossi 456 Via Roma 1 095 111 Ugo Bianchi 567 Via Etnea 154 095 222 Teo Verdi 678 Via Parma 12 095 333 Nome, Telefono (Studenti) Nome Telefono Mario Rossi 095 111 Ugo Bianchi 095 222 Teo Verdi 095 333 Proiezione Un’altro esempio di proiezione Studenti Nome Matrico la Indirizzo Comune Provincia Mario Rossi 456 Via Roma 1 Acicastello CT Ugo Bianchi 567 Via Etnea 154 Catania CT Teo Verdi 678 Via Parma 12 Modica Leo Poldo 889 Via mare 1 Acicastello Comune, Provincia (Studenti) Comune Provincia RG Acicastello CT CT Catania CT Modica RG Acicastello CT • Si riduce la cardinalita’ del risultato rispetto all’operando – Gli insieme non contengono duplicati Comune Provincia Acicastello CT Catania CT Modica RG Selezione (Restrizione) • Produce una relazione avente: – Lo stesso schema della relazione di partenza – Con un sottoinsieme delle righe della relazione di partenza • Quelle che soddisfano la condizione specificata – Simbolo: Esempio Selezione Corsi Corso Matricola Voto Programmazione 678 27 Architetture 456 30 Programmazione 567 18 Matematica 678 22 Architettura 678 30 Voto > 25 (Corsi) Corso Matricola Voto Programmazione 678 27 Architetture 456 30 Architettura 678 30 Selezione Un altro esempio di Selezione Studenti Nome Matricola Indirizzo Citta Luogo di nascita Mario Rossi 456 Via Roma 1 Catania Catania Ugo Bianchi 567 Via Etnea 154 Enna Ragusa Teo Verdi 678 Via Parma 12 Catania Enna Leo Poldo 768 Piazza Roma 1 Ragusa Ragusa Citta = Luogo di nascita (Studenti) Nome Matricola Indirizzo Citta Luogo di nascita Mario Rossi 456 Via Roma 1 Catania Catania Leo Poldo 768 Piazza Roma 1 Ragusa Ragusa Prodotto Cartesiano • Combina tutti gli attributi e tutte le tuple delle due relazioni che partecipano – Il numero di attributi è la somma degli attributi delle due relazioni – Il numero di tuple è il prodotto del numero di tuple nelle due relazioni • Simbolo: ⋈ Esempio prodotto cartesiano Impiegati Progetti Impiegato Progetto Rossi A Verdi A Caio B Codice Descrizione A Venere B Marte Impiegati ⋈ Progetti Impiegato Progetto Codice Descrizione Rossi A A Venere Verdi A A Venere Caio B A Venere Rossi A B Marte Verdi A B Marte Caio B B Marte Join (Giunzione) • L’operatore più importante dell’algebra relazionale • Permette di combinare tuple da relazioni diverse basandosi sui valori degli attributi – R ⋈ FS Esempio Join Impiegati Progetti Impiegato Progetto Rossi A Verdi A Caio B Codice Descrizione A Venere B Marte Impiegati ⋈ Progetto=Codice Progetti Impiegato Progetto Codice Descrizione Rossi A A Venere Verdi A A Venere Caio B B Marte Join incompleto • Caso in cui alcuni valori tra gli attributi comuni non coincidono Progetti Impiegati • Alcune righe non partecipano alla relazione finale – Dangling tuples Impiegato Progetto Codice Descrizione Rossi A A Venere Verdi A B Marte Caio B C Saturno Impiegati ⋈ Progetto=Codice Progetti Impiegato Progetto Codice Descrizione Rossi A A Venere Verdi A A Venere Caio B B Marte Join vuoti, un caso estremo • Potrebbe anche succedere che nessuna riga trovi il corrispettivo Progetti Impiegati • Il risultato è una relazione vuota Impiegato Progetto Codice Descrizione Rossi A X Venere Verdi A Y Marte Caio B Impiegati ⋈ Progetto=Codice Progetti Impiegato Progetto Codice Descrizione L’altro caso estremo del Join • Ogni riga della prima relazione si combina con ogni riga della seconda relazione Progetti Impiegati • Il risultato coincide con il prodotto cartesiano • Numero di tuple: prodotto del numero di tuple Impiegato Progetto Codice Descrizione Rossi A A Venere Verdi A A Marte Caio A Impiegati ⋈ Progetto=Codice Progetti Impiegato Progetto Codice Descrizione Rossi A A Venere Verdi A A Venere Caio A A Venere Rossi A A Marte Verdi A A Marte Caio A A Marte Query (interrogazioni) • L’algebra relazionale può essere usata come strumento per interrogare una base di dati • Una query è una funzione da una istanza di un database (insieme di relazioni) ad una relazione – Qundi prende in input un insieme di relazioni e produce come output una relazione Database di esercitazione Studenti Nome Matricola Indirizzo Citta Luogo di nascita Mario Rossi 456 Via Roma 1 Catania Catania Ugo Bianchi 567 Via Etnea 154 Enna Ragusa Teo Verdi 678 Via Parma 12 Catania Enna Leo Poldo 768 Piazza Roma 1 Ragusa Ragusa Esami Corsi Denominazione Docente Programmazione Ferro Architettura Pappalardo Matematica Lizzio Statistica Lizzio Matr_Studente Corso Voto 678 Programmazione 27 456 Architettura 30 567 Programmazione 18 678 Matematica 22 678 Architettura 30 456 Statistica 19 678 Statistica 29 567 Matematica 18 Query di esercitazione • Nome e indirizzo di tutti gli studenti nati a Ragusa? • Nome e voto di tutti gli studenti che hanno sostenuto l’esame di Architettura? • Corso e voto degli esami sostenuti da Mario Rossi? • Nome e Indirizzo di tutti gli studenti che hanno sostenuto almeno un esame con il Prof. Lizzio Query di esercitazione 2 • Nome dei professori che hanno dato più di 24 a Teo Verdi ed in quali corsi? • Nomi degli studenti che hanno preso meno di 24 con il Prof. Ferro? • Nome degli studenti che hanno dato sia l’esame di Architettura che di Programmazione? • Nome degli studenti che hanno sostenuto sia un esame col Prof. Lizzio che un esame col Prof. Pappalardo?