Algebra Relazionale Eugenio Di Sciascio 1 Introduzione L’algebra relazionale è un linguaggio procedurale: le operazioni vengono specificate descrivendo il procedimento da seguire Essa è un’algebra chiusa. E’ costituita da un insieme di operatori definiti su relazioni che producono relazioni. Pertanto il risultato di una operazione può essere ulteriormente manipolato. I principali operatori sono la selezione e la proiezione (unari) e il join (binario) Esistono le operazioni tipiche dell’insiemistica, unione, intersezione, differenza e il prodotto cartesiano 2 Selezione Consente di selezionare un sottoinsieme delle tuple di una relazione che soddisfino una condizione di selezione. L’operazione è espressa in generale come: condizione_ di _ selezione ( relazione ) La condizione di selezione può prevedere comparazione tra attributi compatibili o con costanti, oltre a essere ottenuta collegando varie condizioni mediante connettivi logici (and, or, not). 3 Esempio Impiegati da tan asc 01 01 60 dataass 05 0393 Data di nascita 08-dic-48 Data di assunzione 01-mag-92 Andrew 19-feb-52 14-ago-92 Leverling Janet 30-ago-63 01-apr-92 Peacock 19-set-37 03-mag-93 Buchanan Margare tSteven 04-mar-55 17-ott-93 Suyama Michael 02-lug-63 17-ott-93 King Robert 29-mag-60 02-gen-94 Callahan Laura 09-gen-58 05-mar-94 Dodswort h Rossi Anne 27-gen-66 15-nov-94 Cognome Nome Davolio Nancy Fuller Im piegato Data di nascita Data di assunzione Cognome Nome Suyama Michae l Robert 02-lug-63 17-ott-93 29-mag-60 02-gen-94 Anne 27-gen-66 15-nov-94 King Dodswort h mario 4 Selezione (2) L’operazione viene applicata a ciascuna tupla individualmente. La relazione risultante mantiene lo schema di quella di partenza, i.e. il grado rimane invariato. La cardinalità risultante è invece di quella di partenza. La selezione è commutativa: cond1 ( cond 2 R ) cond 2 ( cond1 R ) 5 Proiezione Consente di selezionare un sottoinsieme delle colonne (attributi) di una relazione elencati in una lista di attributi di proiezione L’operazione è espressa in generale come: lista_ di _ attributi ( relazione ) 6 Proiezione (2) L’operazione modifica, in generale, il grado, i.e. il numero di attributi. L’operazione modifica, in generale, anche la cardinalità (perché?) L’operazione non è commutativa. 7 Esempio Impiegato Cognome Nome Posizione Titolo Davolio Nancy Rappresentante Dott.ssa Fuller Andrew Direttore vendite Leverling Janet Peacock Data di nascita Cognome Nome 08-dic-48 Davolio Nancy Ing. 19-feb-52 Fuller Andrew Funzionario commerciale Dott.ssa 30-ago-63 Leverling Janet Margaret Rappresentante Dott.ssa 19-set-37 Peacock Margaret Buchanan Steven Direttore commerciale Ing. 04-mar-55 Buchanan Steven Suyama Michael Rappresentante Dott. 02-lug-63 Suyama Michael King Robert Rappresentante Dott. 29-mag-60 King Robert Callahan Laura Resp. comm. di zona Dott.ssa 09-gen-58 Callahan Laura Dodsworth Anne Rappresentante Dott.ssa 27-gen-66 Dodsworth Anne Rossi mario Rossi mario cognome,nome( impiegato) Titolo Dott. titolo( impiegato ) Dott.ssa Ing. 8 Sequenze di operazioni Trattando operazioni in una algebra chiusa è ovviamente possibile scrivere espressioni come sequenza di operazioni cognome,nome( titolo" dott." ( impiegato )) Cognome Nome Posizione Titolo Data di nascita Davolio Nancy Rappresentante Dott.ssa 08-dic-48 Fuller Andrew Direttore vendite Ing. 19-feb-52 Leverling Janet Funzionario commerciale Dott.ssa 30-ago-63 Peacock Margaret Rappresentante Dott.ssa 19-set-37 Buchanan Steven Direttore commerciale Ing. 04-mar-55 Suyama Michael Rappresentante Dott. 02-lug-63 King Robert Rappresentante Dott. 29-mag-60 Callahan Laura Resp. comm. di zona Dott.ssa 09-gen-58 Dodsworth Anne Rappresentante Dott.ssa 27-gen-66 Rossi mario Nome Cognome Michael Suyama Robert King 9 Unione, intersezione, differenza Operazioni binarie dell’insiemistica Hanno senso su relazioni compatibili, cioè con identici attributi o almeno appartenenti al medesimo dominio. Unione: RS produce una relazione che include tutte le tuple presenti in R o in S o in entrambe. Intersezione: RS produce una relazione che include tutte le tuple presenti sia in R che in S. Differenza: R-S produce una relazione che include tutte le tuple presenti in R, ma non in S. 10 Esempio Studente (S) Laureato (L) mat 119310 125314 199111 mat 119310 125314 501111 cognome città di sciascio bari rossi bari verdi foggia SL mat 119310 125314 199111 501111 cognome città di sciascio bari rossi bari bianchi lecce SL cognome città di sciascio bari rossi bari verdi foggia bianchi lecce mat cognome città 119310 di sciascio bari 125314 rossi bari S-L mat cognome città 501111 bianchi lecce 11 Prodotto cartesiano E’ una operazione binaria su insiemi, ma non richiede la compatibilità delle relazioni partecipanti.. Essa è denotata con il simbolo X. Il grado della relazione risultante è pari alla somma dei gradi delle due relazioni partecipanti. La cardinalità è pari al prodotto di quelle delle due relazioni partecipanti. 12 Esempio 13 Join E’ l’operazione utilizzata per combinare coppie di tuple provenienti da relazioni collegate in singole tuple. Consente di elaborare le “associazioni” tra relazioni. R condizione S condizione ( R S ) <condizione> è dello stesso tipo di quella già vista per la selezione 14 Join (2) Il join con una condizione generica è detto theta join Quando la condizione sia una uguaglianza l’operazione è detta equi join. Questa operazione includerà due volte, nella tabella risultante, gli attributi su cui è posta la condizione di uguaglianza. Quando l’operazione si limita a riportare una volta l’attributo di comparazione nella tabella risultante parleremo di join naturale. 15