Selezione e Proiezione

Slides:



Advertisements
Presentazioni simili
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Advertisements

Proiezione Dati una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y si indica con Y ( r ) o PROJ Y ( r ) ed è linsieme di tuple su Y ottenute.
Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Join Proprietà Il join di r 1 e r 2 contiene un numero di tuple compreso fra zero e il prodotto di |r 1 | e |r 2 | se il join di r 1 e r 2 è completo allora.
Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata.
2a + 10b abx2 3a + 1 y 2 a + 1 x + 2y a − Espressioni algebriche
L’addizione ESEMPIO Rappresentazione
I Polinomi Prof.ssa A.Comis.
Il modello logico Il modello logico.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Le operazioni relazionali
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Le operazioni relazionali (continua)
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
A. A – 2008 Basi di dati 1 Corso Prof
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
x : variabile indipendente
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Integrità referenziale
Corso di Basi di Dati Il Linguaggio SQL
La normalizzazione delle relazioni
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Interrogazione di una base di dati relazionale
Corso di Basi di Dati Il Linguaggio SQL
Equazioni e disequazioni
Corso di Basi di Dati Il Linguaggio SQL
PARTE TERZA OPERAZIONI CON LE PROPOSIZIONI
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
I vincoli di integrità Alcuni aspetti della realtà NON possono essere modellati solamente con entità, attributi e relazioni, per esempio i vincoli di integrità.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Il modello relazionale
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Progettazione logica: Il modello relazionale
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Partizionamento/accorpamento di concetti
Algebra Booleana.
Modello Relazionale Proposto agli inizi degli anni ‘70 da Codd
Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi Reparto
Il modello relazionale
Condizioni decisionali
Operatori aggregati e raggruppamenti
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere.
La programmazione strutturata
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

Selezione e Proiezione Le operazioni di selezione e di proiezione si applicano ad una relazione e ne restituiscono una porzione. Possono essere considerate ortogonali o complementari, in quanto una opera sulle righe e l’altra sulle colonne. La selezione produce un insieme di tuple, su tutti gli attributi. La proiezione produce un risultato definito su un insieme di attributi, cui contribuiscono tutte le tuple.

selezione proiezione

Selezione La selezione produce una nuova relazione definita sugli stessi attributi, contenente solamente le tuple di una relazione che soddisfano una specifica condizione di selezione. Si indica con F ( r ) o SELF ( r ) dove: F è una condizione da verificare r è la relazione a cui la selezione è applicata Quindi, F ( r ) produce una relazione sugli stessi attributi di r contenente le tuple su cui F è vera.

Selezione, sintassi e semantica SEL Condizione (Operando) Condizione: espressione booleana (come quelle dei vincoli di tupla) semantica il risultato contiene le tuple dell'operando che soddisfano la condizione

Selezione F è una formula proposizionale su X, cioè una formula ottenuta combinando con i simboli  (and)  (or)  (not) espressioni del tipo A  B o A  c dove :  è un operatore di confronto (, , , , ) A e B sono attributi di X su cui i confronto abbia senso c è una costante tale che il confronto con A sia definito E’ definito un valore di verità di F su una tupla t: A  B è vera se e solo se t[A]  t[B] è vero A  c è vera se t[A]  c è vera F1  F2, F1  F2,  F hanno l’usuale significato

SELStipendio > 50 (Impiegati) Cognome Filiale Stipendio Matricola Rossi Roma 55 7309 Neri Milano 64 5998 Milano 44 9553 Neri Napoli 64 5698 SELStipendio > 50 (Impiegati) Cognome Filiale Stipendio Matricola Neri Milano 64 5998 Rossi Roma 55 7309 Napoli 5698 44 9553 Impiegati (che guadagnano piu’ di 50) Milano 44 9553 Neri Napoli 64 5698

Selezione con valori nulli Impiegati Cognome Filiale Età Matricola Rossi Roma 32 7309 Neri Milano 45 5998 Bruni Milano NULL 9553 SEL Età>30 (Persone)  SEL Età30 (Persone)  Persone Perché? Perché le selezioni vengono valutate separatamente! Ma anche SEL Età>30  Età30 (Persone)  Persone Perché? Perché anche le condizioni atomiche vengono valutate separatamente!

Selezione con valori nulli Per riferirsi ai valori nulli esistono forme apposite di condizioni: IS NULL IS NOT NULL SEL Età>30 (Persone)  SEL Età30 (Persone)  SEL Età IS NULL (Persone) = SEL Età>30  Età30  Età IS NULL (Persone) Persone

Proiezione Dati una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y si indica con Y ( r ) o PROJY ( r ) ed è l’insieme di tuple su Y ottenute dalle tuple di r considerando solo i valori su Y. Y ( r ) = { t[Y] | t  r } Una proiezione ha un numero di tuple minore o uguale rispetto alla relazione r cui è applicata. Il numero di tuple è uguale se e solo se Y è superchiave per r.

Proiezione operatore monadico produce un risultato che ha parte degli attributi dell'operando contiene tuple cui contribuiscono tutte le tuple dell'operando sintassi PROJ ListaAttributi (Operando) semantica il risultato contiene le tuple ottenute da tutte le tuple dell'operando ristrette agli attributi nella lista

visualizzare matricola e cognome di tutti gli impiegati Filiale Stipendio Matricola Neri Milano 64 5998 Napoli 55 7309 Rossi Roma 5698 44 9553 PROJ Matricola, Cognome (Impiegati) Cognome Filiale Stipendio Matricola Neri Milano 64 5998 Napoli 55 7309 Rossi Roma 5698 44 9553 PROJ Cognome, Filiale (Impiegati)

Join Combinando selezione e proiezione, si possono estrarre informazioni da una relazione Non si possono però correlare informazioni presenti in relazioni diverse Il join è l'operatore più interessante (potente) dell'algebra relazionale in quanto permette di correlare dati in relazioni diverse

Join E’ l’operatore più caratteristico, che evidenzia la proprietà del modello relazionale di essere basato su valori. L’operatore di join (naturale) correla dati in relazioni diverse, producendo una relazione definita sull’unione degli insiemi di attributi degli operandi, le cui tuple sono ottenute combinando le tuple degli operandi con valori uguali su attributi comuni.

Join Il join naturale r1  r2 di r1(X1) e r2(X2) è una relazione definita su X1X2 ( che si può scrivere X1X2 ) : r1  r2 = { t su X1X2 | t[X1]  r1 e t[X2]  r2} Il grado della relazione ottenuta è minore o uguale al grado della somma dei gradi delle due relazioni in quanto gli attributi omonimi compaiono una sola volta. Se X1  X2 è vuoto il join naturale equivale al prodotto cartesiano fra le relazioni. Se X1=X2 il join naturale equivale all’intersezione fra le relazioni

Join Se ciascuna tupla di ciascuno degli operandi contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata la corrispondenza e non contribuiscono al risultato, le tuple si dicono dangling. Ai due estremi si pongono il join vuoto in cui nessuna tupla degli operandi è combinabile, e quello in cui ciascuna delle tuple di un operando è combinabile con tutte le tuple dell’altro. In questo caso la cardinalità della relazione risultante è pari al prodotto della cardinalità degli operandi

Impiegato Reparto Reparto Capo Rossi A Rossi A Rossi A A Mori A Mori A Neri B Neri B Neri B B Bruni B Bruni B Bruni B Bruni B Bruni Bianchi B Bianchi B Bianchi B Impiegato Reparto Capo Rossi A Mori Neri B Bruni Bianchi B Bruni ogni ennupla contribuisce al risultato: join completo

Un join non completo Impiegato Reparto Rossi A Neri B Bianchi Reparto Capo B Mori C Bruni A C Neri B Mori Impiegato Reparto Capo Bianchi

Un join vuoto Impiegato Reparto Rossi A Neri B Bianchi Reparto Capo D Mori C Bruni Impiegato Reparto Capo

Join Proprietà Il join di r1 e r2 contiene un numero di tuple compreso fra zero e il prodotto di |r1| e |r2| se il join di r1 e r2 è completo allora contiene un numero di tuple pari almeno al massimo fra |r1|e |r2| se X1X2 contiene una chiave per r2, allora il join di r1 (X1) e r2(X2) contiene al più |r1| tuple. se il join coinvolge una chiave di R2 e un vincolo di integrità referenziale, allora il numero di tuple è pari a |R1| r1  r2 = r1  r2 il join è commutativo (r1  r2)  r3 = r1  (r2  r3) il join è associativo Quindi sequenze di join possono essere scritte senza parentesi

Join Se si devono correlare attributi con nome diverso è possibile fare il theta-join, definito come un prodotto cartesiano seguito da una selezione r1 F r2 = F (r1  r2 ) Se F è una relazione di uguaglianza, con un attributo della pima relazione e uno della seconda, allora siamo in presenza di un equi-join. Sono importanti formalmente: il join naturale è basato sui nomi degli attributi equi-join e theta-join sono basati sui valori

Rossi A Neri B Bianchi Impiegato Reparto Impiegati A Mori B Bruni Codice Capo Reparti Impiegati JOINReparto=Codice Reparti Impiegato Reparto Capo Codice Rossi A Mori B Bruni Neri Bianchi Rossi A Mori Neri B Bruni Bianchi

Join naturale ed equi-join Impiegati Reparti Impiegato Reparto Codice Capo Impiegati JOIN Reparti SELReparto=Codice ( ) PROJImpiegato,Reparto,Capo ( ) Impiegati JOIN RENCodice  Reparto (Reparti)