Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale

Documenti analoghi
Introduzione all Algebra Relazionale

Linguaggi per basi di dati

Operazioni sui database

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

ALGEBRA RELAZIONALE RIEPILOGO

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Elementi di Algebra Relazionale

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Algebra Relazionale. algebra relazionale

Basi di Dati e Sistemi Informativi. Algebra Relazionale

Gli operatori relazionali

Attributi e domini. A per {A}; XY per X Y (pertanto A 1 A 2 A 3 denota

Algebra e calcolo relazionale. Ripasso. Le 7 Virtù del DBMS persistenza affidabilità volume condivisione riservatezza efficienza efficacia

Capitolo 13. Interrogare una base di dati

Modello Relazionale. Modello Relazionale. Relazioni - Prodotto Cartesiano. Relazione: tre accezioni. Es. Dati gli insiemi

Lezione V. Aula Multimediale - sabato 29/03/2008

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

Basi di dati 9 febbraio 2010 Compito A


Il Modello Relazionale

TEORIA sulle BASI DI DATI

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Algebra Relazionale e Calcolo Relazionale. L. Vigliano

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

MODELLO RELAZIONALE. Introduzione

DBMS (Data Base Management System)

Normalizzazione. Normalizzazione. Normalizzazione e modello ER. Esempio. Normalizzazione

Introduzione ai database relazionali

Organizzazione degli archivi

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Database. Si ringrazia Marco Bertini per le slides

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

DATABASE RELAZIONALI

Cardinalità e identificatori. Informatica. Generalizzazioni. Generalizzazioni. Generalizzazioni. Generalizzazioni

Calcolo Relazionale Basi di dati e sistemi informativi 1. Calcolo Relazionale. Angelo Montanari

Database. Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Calcolatori: Algebra Booleana e Reti Logiche

Algebra Relazionale.

Le Basi di Dati. Le Basi di Dati

Archivi e Basi di Dati

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Modelli relazionali. Esistono diversi modi di modellare un database. Il modello piu' usato al momento e' il modello relazionale

Basi Di Dati, 09/12/2003

Vincoli di integrità

Informatica (Basi di Dati)

Il linguaggio SQL: query innestate

Elena Baralis 2013 Politecnico di Torino 1

Correttezza. Esempi di TRC. AR è esprimibile tramite TRC. AR è esprimibile tramite TRC. AR è esprimibile tramite TRC

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

risulta (x) = 1 se x < 0.

Dispensa di database Access

Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.

Corso di Informatica (Basi di Dati)

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

Unità C1 Modello logico

Il Modello Relazionale

Basi di Dati e Microsoft Access

1. PRIME PROPRIETÀ 2

Corso di Basi di Dati. Linguaggi per basi di dati. Linguaggi per basi di dati. Linguaggi per basi di dati: Algebra Relazionale

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Facoltà di Farmacia - Corso di Informatica

Decomposizione senza perdita. Decomposizione senza perdita. Conservazione delle dipendenze. Conservazione delle dipendenze

Fa riferimento ad una famiglia di linguaggi dichiarativi, basati sul calcolo dei predicati del primo ordine

SQL/OLAP. Estensioni OLAP in SQL

(anno accademico )

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Introduzione al corso

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

LA NORMALIZZAZIONE. Introduzione

MODULO 5 Appunti ACCESS - Basi di dati

Basi di dati. Concetti Introduttivi ESEMPIO. Fisica, Analisi, Informatica. Entità Relazioni Interrogazioni. Database 2

Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse

Informatica per le discipline umanistiche 2 lezione 10

Access. P a r t e p r i m a

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Il database management system Access

Compito DA e BD. Tempo concesso: 90 minuti 12 giugno 03 Nome: Cognome: Matricola: Esercizio 1

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Sistemi per la gestione di database: MySQL ( )

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

Passo 2: avviare Access e creare una tabella per ogni tipo di entità Costruire la tabella per l entità cliente.

Ottimizzazione delle interrogazioni (parte I)

( x) ( x) 0. Equazioni irrazionali

Modello Relazionale. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto san giovanni

Introduzione al MATLAB c Parte 2

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

Esercizio sui data base "Gestione conti correnti"

Fondamenti di Teoria delle Basi di Dati

Progettazione di Basi di Dati

Transcript:

Basi di dati L Algebra Relazionale

Introduzione all Algebra Relazionale Una volta definito lo schema logico di un database, partendo da un Diagramma E-R, e dopo aver inserito le tabelle nel database, eventualmente riempite con i dati opportuni ho un insieme di tabelle delle relazioni fra di esse che nel complesso schematizzano una realtà Ricorro ai linguaggi di interrogazione e manipolazione per poter accedere, manipolare, ricavare informazioni da tali dati in particolare utilizzerò i linguaggi di interrogazione direttamente dal terminale tramite istruzioni embedded (nascoste) negli applicativi

Linguaggi interrogazione per basi di dati relazionali Un linguaggio di manipolazione, o DML, permette di interrogare e modificare istanze di Basi di Dati Tipologia: Procedurali: si dice al sistema ciò che si vuole Non Procedurali: si enunciano le proprietà del risultato Rappresentanti più significativi: Algebra relazionale: linguaggio procedurale di tipo algebrico i cui operandi sono relazioni SQL (Structured Query Language): a carattere misto, procedurale e non

L Algebra Relazionale L Algebra Relazionale è utile perché, essendo svincolata dai dettagli implementativi dell SQL, permette di comprendere rapidamente la tecnica d uso dei linguaggi di interrogazione per basi di dati relazionali

L Algebra Relazionale L Algebra Relazionale è costituita da un insieme di operazioni che accettano una o due tabelle (relazioni) come input e producono una tabella (relazione) in output. Costituita da un insieme di operatori: definiti su relazioni che producono relazioni e possono essere composti in sostanza, ciò che si fà con un linguaggio di interrogazione è: prendere delle tabelle di input generare delle tabelle di output secondo opportuni criteri

Le Operazioni di base comprendono: operazioni di arità 1: selezione (notazione ) proiezione (notazione ) operazioni di arità 2: unione (notazione U) differenza insiemistica (notazione -) prodotto cartesiano (notazione X) Operazioni derivate dalle precedenti: intersezione (notazione ) Join (notazione ) Gli operatori si possono comporre, dando luogo a espressioni algebriche di complessità arbitraria Gli operandi sono o (nomi di) relazioni del BD o espressioni (ben formate)

Selezione ( ) la selezione è una operazione unaria, poiché accetta come argomento una sola tabella seleziona le tuple di una relazione che soddisfano un predicato il predicato è costituito dal nome di un attributo, da un operatore, da un valore costante più predicati possono essere uniti con or (v) o and ( ) operatori sono =, >, >, >=, <=, # (diverso) Predicato (relazione)

Data la Tabella con schema: Impiegati (Matricola, Cognome, Filiale, Stipendio) Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5998 Neri Milano 64 9553 Milano Napoli 44 5698 Bianchi Torino 64 2568 Rossi Roma 55 Istanza della Tabella Impiegati Selezione ( ) Vogliamo trovare gli impiegati che: guadagnano più di 62 guadagnano più di 62 e lavorano a Milano

Esempio operazione di Selezione: guadagnano più di 62 Stipendio>62 (Impiegati) Matricola Cognome Filiale Stipendio 5998 Neri Milano 64 5698 Bianchi Torino 64 guadagnano più di 62 e lavorano a Milano Stipendio>62 AND Filiale = 'Milano' (Impiegati) Matricola Cognome Filiale Stipendio 5998 Neri Milano 64

Proiezione ( ) anche la proiezione è una operazione unaria data una tabella, la sua proiezione su un dato insieme di attributi è costituita dalla tabella generata dagli attributi specificati ignorando eventuali tuple (righe) duplicate Lista Attibuti (relazione)

Data la Tabella con schema: Impiegati (Matricola, Cognome, Filiale, Stipendio) Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5998 Neri Milano 64 9553 Milano Napoli 44 5698 Bianchi Torino 64 2568 Rossi Roma 55 Istanza della Tabella Impiegati Proiezione ( ) per tutti gli impiegati: matricola e cognome cognome e filiale

Esempio operazione di Proiezione: matricola e cognome di tutti gli impiegati matricola, cognome (Impiegati) Matricola Cognome 7309 Rossi 5998 Neri 9553 Milano 5698 Bianchi 2568 Rossi cognome e filiale di tutti gli impiegati cognome, filiale (Impiegati) Cognome Rossi Neri Milano Bianchi Rossi Filiale Roma Milano Napoli Torino Roma

Combinazioni di operazioni di selezione e di proiezione dal momento che selezione e proiezione richiedono come argomenti una tabella (una relazione) e che producono come risultato una tabella, posso combinare le due operazioni per ottenere query complesse (e più espressive) Se voglio sapere matricola e cognome degli impiegati che guadagnano più di 62, sottopongo la query matricola, cognome ( Stipendio>62 (Impiegati))

Esempio: selezione e proiezione matricola, cognome ( stipendio>62 (Impiegati)) Ottengo il risultato: Matricola Cognome 5998 Neri 5698 Bianchi e se scambiassi l ordine di selezione e proiezione? stipendio>62 ( matricola, cognome (Impiegati)) È un errore, poiché la tabella risultante dall operazione di proiezione ha come schema gli attributi matricola e cognome, e su di esso non posso effettuare la selezione con predicato sull attributo stipendio

Prodotto cartesiano (X) è una operazione binaria, ossia accetta in input due tabelle a differenza delle operazioni di selezione e proiezione, che consentono di estrarre informazione da una sola tabella, permette di combinare tabelle e, dunque, di combinare informazione è estremamente costoso dal punto di vista computazionale e di risorse di memorizzazione

Prodotto cartesiano (X) Il prodotto cartesiano fra due tabelle (relazioni) è una tabella con schema la somma (non l unione matematica) degli schemi attributi di nome uguale sono ripetuti il contenuto della tabella è dato dal prodotto cartesiano dei suoi elementi, ossia da tutte le coppie degli elementi appartenenti alle due relazioni R1 X R2

Prodotto cartesiano: Date le Tabelle con schemi: Banchieri(NomeCliente, NomeBanchiere) Clienti(NomeCliente, Via, Città) Istanza della Tabella Clienti Istanza della Tabella Banchieri NomeCliente Via Città Rossi Pardi Pisa Bianchi Roma Pisa Blu Italia Napoli Verdi Foscolo Torino NomeCliente Rossi Bianchi NomeBanchiere Cuccia Visco

Prodotto cartesiano: Clienti(NomeCliente, Via, Città) NomeCliente Via Città Rossi Pardi Pisa Banchieri(NomeCliente, NomeBanchiere) NomeCliente NomeBanchiere Rossi Cuccia Bianchi Roma Pisa Blu Italia Napoli Verdi Foscolo Torino Bianchi Visco R1 X R2 Clienti X Banchieri Clienti x Banchieri(C.NomeCliente,Via,Città,B.NomeCliente,NomeBanchiere) C.NomeCliente Via Città B.NomeCliente NomeBanchiere Rossi Pardi Pisa Rossi Cuccia Rossi Pardi Pisa Bianchi Visco Bianchi Roma Pisa Rossi Cuccia Bianchi Roma Pisa Bianchi Visco Blu Italia Napoli Rossi Cuccia Blu Italia Napoli Bianchi Visco Verdi Foscolo Torino Rossi Cuccia OSS: l attributo NomeCliente è ripetuto due volte. Per questo l operazione produce una unione non matematica degli schemi. Verdi Foscolo Torino Bianchi Visco

Osservazioni: se N1 è il numero di tuple di Clienti ed N2 è il numero di tuple di Banchieri, il risultato del Prodotto Cartesiano ha numero di tuple N1 x N2 nel caso precedente 4 x 2 = 8 importante: combinare semplicemente l informazione con il prodotto cartesiano non serve a niente, se non ad ottenere tabelloni si possono generare delle informazioni prive di significato, ed anche perdere contenuto informativo (ossia incapacità di estrarre dal prodotto cartesiano la stessa informazione delle tabelle di partenza)

Esempi di utilizzo del prodotto cartesiano supponiamo, dati gli schemi clienti e banchieri precedenti, di voler saper la via e la città in cui abitano tutti i clienti di Cuccia per ottenere tale informazione non basta solo la tabella banchieri, perché associa ad un cliente il relativo banchiere, né la tabella clienti da sola, perché non ho il banchiere devo allora combinare le due tabelle tramite il prodotto cartesiano, perché nell insieme delle tabelle è contenuta l informazione che mi serve Clienti X Banchieri

A questo punto, nella tabella risultante, ho tutta l informazione che mi serve (o meglio, di più) devo estrarre solo le tuple significative prendo le tuple che hanno NomeBanchiere=Cuccia ed infine proietto C.NomeCliente=B.NomeCliente(Clienti X Banchieri) via, città ( NomeBanchiere=Cuccia( C.NomeCliente=B.NomeCliente (Clienti X Banchieri)))

Ricapitolando: (funziona così anche in SQL) Una volta formulata la query: cerco le tabelle (relazioni) in cui è contenuta l informazione che mi serve effettuo l operazione di prodotto cartesiano se l informazione è presente in più tabelle che vanno concatenate scarto le tuple non significative con una selezione sugli attributi a comune inizio a fare selezioni e proiezioni per rispondere alla query

Il join naturale (simbolo ) l operazione di prodotto cartesiano accompagnata dalla selezione sugli attributi a comune fra le due relazioni prende il nome di join naturale l operatore di join naturale, combina quindi le tuple di due relazioni sulla base dell uguaglianza dei valori degli attributi comuni alle due relazioni così, la query: si rappresenta come C.NomeCliente=B.NomeCliente (Clienti X Banchieri) clienti banchieri

Join naturale: Voli(Codice, Data, Comandante) Codice Data Comandante AZ427 21/07/2001 Bianchi AZ427 23/07/2001 Rossi TW056 21/07/2001 Smith Linee(Codice, Partenza, Arrivo) Codice Partenza Arrivo AZ427 FCO JFK TW056 LAX FCO Voli Linee Codice Data Comandante Partenza Arrivo AZ427 21/07/2001 Bianchi FCO JFK AZ427 23/07/2001 Rossi FCO JFK TW056 21/07/2001 Smith LAX FCO V.Codice=L.Codice (Voli X Linee)

Osservazioni il join (natural) non è sempre supportato (DB2 per esempio) tipicamente, tutte le operazioni che richiedono un prodotto cartesiano richiedono in realtà un join se le tabelle non hanno attributi a comune, non sono in relazione e dunque non serve a niente fare il prodotto cartesiano è bene allora avere in mente il join, anche se non è supportato dal linguaggio dovremo vedere come fare il join in SQL, in termini di prodotto cartesiano e selezione

Unione, Intersezione e Differenza Le Relazioni sono insiemi, quindi possiamo applicare gli operatori tra insiemi Tuttavia, vogliamo che il risultato siano relazioni (cioè insiemi omogenei di ennuple) È quindi significativo applicare l unione, intersezione e differenza solo a coppie di relazioni definite su gli stessi attributi

Unione l unione fra due tabelle è rappresentata da una tabella costituita dall unione matematica delle due tabelle L unione fra due tabelle A e B è una tabella che contiene le tuple che sono presenti in A, in B o in entrambe tuple replicate sono considerate un unica tupla affinché l unione abbia senso, è necessario che le due tabelle abbiano lo stesso numero di attributi i tipi degli attributi corrispondenti siano uguali Se le relazioni hanno nomi di attributo diversi, nella relazione risultato per convenzione si usano i nomi della prima relazione (in questo caso A), a meno di opportune ridenominazioni Il grado della relazione risultato è uguale al grado delle relazioni operandi

Esempio dell operazione di Unione: si hanno le seguenti tabelle: depositi(nomefiliale, NumeroDeposito, NomeCliente, Saldo) prestiti(nomefiliale, NumeroPrestito, NomeCliente, Saldo) si vogliono trovare tutti i clienti della filiale di Roma che hanno un deposito o un prestito o entrambi NomeCliente( NomeCliente( NomeFiliale=Roma(Depositi)) U NomeFiliale=Roma(Prestiti))

Depositi Filiale NumeroDeposito Cliente Saldo Milano 010025 Rossi 1000 Roma 012025 Bianchi 15000 Prestiti Filiale NumeroPrestito Cliente Saldo Roma 010625 Rossi 1500 Milano 017025 Bianchi 3000 Roma 010525 Neri 200 Pisa 013025 Torino 100 Cliente ( Filiale=Roma(Depositi)) Cliente ( Filiale=Roma(Prestiti)) Cliente Cliente Bianchi Rossi Neri Cliente ( Filiale=Roma(Depositi)) U Cliente ( Filiale=Roma(Prestiti)) Cliente Rossi Bianchi Neri

Differenza - : La differenza fra due tabelle A e B è una tabella che contiene le tuple che sono presenti in A ma non in B La differenza (come l unione) può essere eseguita solo se le relazioni hanno lo stesso grado e gli attributi sono compatibili Il grado della relazione risultato è uguale al grado delle relazioni operandi Esempio dell operazione di Differenza: Trovare i clienti che hanno un deposito ma non un prestito nella filiale di Roma Cliente ( Filiale=Roma(Depositi)) - Cliente ( Filiale=Roma(Prestiti))

Depositi Filiale NumeroDeposito Cliente Saldo Milano 010025 Rossi 1000 Roma 012025 Bianchi 15000 Roma 010525 Neri 200 Prestiti Filiale NumeroPrestito Cliente Saldo Roma 010625 Rossi 1500 Milano 017025 Bianchi 3000 Roma 018221 Neri 10000 Pisa 013025 Torino 100 Cliente ( Filiale=Roma(Depositi)) Cliente ( Filiale=Roma(Prestiti)) Cliente Bianchi Neri Cliente Rossi Neri Cliente ( Filiale=Roma(Depositi)) - Cliente ( Filiale=Roma(Prestiti)) Cliente Bianchi

Intersezione : L intersezione fra due tabelle A B è una tabella che contiene le tuple che sono presenti in A e in B Esempio dell operazione di Intersezione : trovare i clienti che hanno sia un conto che un prestito Cliente ( Filiale=Roma(Depositi)) Cliente ( Filiale=Roma(Prestiti))

Depositi Filiale NumeroDeposito Cliente Saldo Milano 010025 Rossi 1000 Roma 012025 Bianchi 15000 Prestiti Filiale NumeroPrestito Cliente Saldo Roma 010625 Neri 1500 Milano 017025 Bianchi 3000 Roma 010525 Neri 200 Pisa 013025 Torino 100 Cliente ( Filiale=Roma(Depositi)) Cliente ( Filiale=Roma(Prestiti)) Cliente Bianchi Cliente Neri Neri Cliente ( Filiale=Roma(Depositi)) Cliente ( Filiale=Roma(Prestiti)) Cliente Neri

Ridenominazione: operatore unario modifica i nomi di attributi" senza cambiare i valori elimina le limitazioni associate con gli operatori su insiemi Notazione: ρ(y X)(R) Esempio dell operazione di Ridenominazione: Persone CF Cognome Nome BNCGRG78F21A Bianchi Mario RSSGRG78F23X Rossi Paolo ρ(codicefiscale CF)(Persone) CodiceFiscale Cognome Nome BNCGRG78F21A Bianchi Mario RSSGRG78F23X Rossi Paolo

Conclusioni L algebra relazionale è un linguaggio per BD costituito da un insieme di operatori che si applicano a una o più relazioni e che producono una relazione Gli operatori di base sono: selezione, proiezione, ridenominazione, unione, prodotto cartesiano e differenza Sulla base di questi si possono poi definire altre operazioni (derivate) quali divisione, intersezione, join,... In generale: un interrogazione sulla BD può essere rappresentata in Algebra Relazionale mediante diverse espressioni, tutte tra loro equivalenti dal punto di vista del risultato, ma non necessariamente dal punto di vista dell efficienza.