Algebra relazionale (II). Join esterni Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi.

Slides:



Advertisements
Presentazioni simili
Informatica II – Basi di Dati (08/09) – Parte 1
Advertisements

DB -Algebra Relazionale
Calcolo Relazionale.
Algebra e calcolo relazionale (parte 2)
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
4 – Progettazione – Introduzione e Modello E-R
Algoritmo di Query Optimization. Espressione Algebrica di Query LAlgebra Relazionale può essere utilizzata come linguaggio per interrogare una base di.
Basi di Dati prof. A. Longheu 4 – Progettazione – Introduzione e Modello E-R Cap. 5 Basi di dati Atzeni – Ceri – Paraboschi - Torlone.
ESEMPI DI ARCHIVI DI DATI
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
11/10/2001Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 1 Viste (relazioni derivate) Rappresentazioni diverse per gli stessi dati (schema esterno)schema.
DB -Algebra Relazionale
Algoritmo di Query Optimization
Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni PROJCapo (SELStipendio>40 (Supervisione JOIN Impiegato=Matricola Impiegati))
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
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.
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Modello E-R Generalizzazioni
Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.
Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.
Basi di dati Claudia Raibulet
MODELLO LOGICO DEI DATI
INFORMATICA MATTEO CRISTANI. INDICE CICLO DELLE LEZIONI LEZ. 1 INTRODUZIONE AL CORSO LEZ. 2 I CALCOLATORI ELETTRONICI LEZ. 3 ELEMENTI DI TEORIA DELL INFORMAZIONE.
Introduzione a Oracle 9i
Pierdaniele Giaretta Linguaggio della logica predicativa
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
Pierdaniele Giaretta Linguaggio della logica predicativa
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
DB- Sistemi Informativi
Algebra relazionale (III). Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di.
Il modello relazionale (II). Informazione incompleta e valori nulli In una tupla di una relazione un attributo può non avere valore Per esempio: Mario.
Informatica Introduzione alle basi di dati Lezione 8 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
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.
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
Una convenzione e notazione alternativa per i join Nota: è sostanzialmente l'approccio usato in SQL Ignoriamo il join naturale (cioè non consideriamo implicitamente.
Microsoft Access Query (II), filtri.
Esercizi su ALGEBRA RELAZIONALE
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.
Informatica Introduzione alle basi di dati Lezione 8 (bis) Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
ALGEBRA RELAZIONALE. Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
Il modello relazionale. Modello logico dei dati basato su concetti relazione e tabella Relazione: da teoria degli insiemi Tabella: rappresentazione grafica.
Interrogazioni (parte 2)
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.
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
1 Il modello relazionale. 2 Introduzione Il modello relazionale, sebbene non sia stato il modello usato nei primi DBMS, e' divenuto lentamente il modello.
Basi di dati e Relazioni Uno schema di relazione R(X) è costituito da un simbolo (nome della relazione) R e da una serie di attributi X={A 1, A 2, …, A.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Algebra di Boole L’algebra di Boole è un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono assumere.
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.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Progettazione di una base di dati relazionale Vincoli.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
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.
S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni) Normalizzazione di Schemi.
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Informatica Introduzione alle basi di dati Lezione 7 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
L’Algebra Relazionale
Operazioni Relazionali
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Basi di Dati Esercitazione Modello Relazionale 19 ottobre 2015 Luigi Bellomarini
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Transcript della presentazione:

Algebra relazionale (II)

Join esterni Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi comuni, inserendo valori NULL in assenza di controparti Non tralasciano tuple di operandi nel risultato

Join esterni Join esterno sinistro: estende solo le tuple del primo operando Aggiunge tuple di r1 senza corrispettivo in r2 Join esterno destro:estende solo le tuple del secondo operando Aggiunge tuple di r2 Join esterno completo: estende tuple di entrambi gli operandi Bilaterale

Join esterni ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori AcquistiBruni Rel1Rel2 ImpiegatoRepartoCapo RossiVenditeNULL NeriProduzioneMori BianchiProduzioneMori Rel1  LEFT Rel2

Join esterni ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori AcquistiBruni Rel1Rel2 ImpiegatoRepartoCapo NeriProduzioneMori BianchiProduzioneMori NULLAcquistiBruni Rel1  RIGHT Rel2

Join esterni ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione RepartoCapo ProduzioneMori AcquistiBruni Rel1Rel2 ImpiegatoRepartoCapo RossiVenditeNULL NeriProduzioneMori BianchiProduzioneMori NULLAcquistiBaldi Rel1  FULL Rel2

Theta-Join Serve per fare Join su relazioni senza attributi omonimi Operatore derivato: si ottiene come prodotto cartesiano seguito da selezione di tuple che verificano condizione di uguaglianza tra valori di attributi r1  F r2 =  F (r1  r2)

Theta-Join ImpiegatoReparto RossiVendite NeriProduzione BianchiProduzione DivisioneCapo VenditeBruni ProduzioneMori AcquistiBaldi Rel1Rel2 ImpiegatoRepartoDivisioneCapo RossiVendite Bruni NeriProduzione Mori BianchiProduzione Mori  Reparto=Divisione (Rel1  Rel2)

Theta-Join ed Equi-Join Theta-Join: r1  F r2 =  F (r1  r2) Condizione di selezione F è formula proposizionale come descritto per operatore di selezione Se F è congiunzione di uguaglianze tra attributi di r1 e attributi di r2: theta-join detto equi-join

Theta-Join ed Equi-Join Per esempio: Rel1(Impiegato,Reparto), Rel2(Divisione,Capo)  Reparto=Divisione (Rel1  Rel2) Infrazioni(Codice,Data,Ag,Art,Prov,Num), Auto(Provincia,Targa,Prop,Indirizzo)  Prov=Provincia  Num=Targa (Infrazioni  Auto)

Theta-Join ed Equi-Join Theta-join e equi-join più utili di join naturale Permettono di operare su relazioni senza attributi in comune Join naturale simulabile mediante ridenominazione, equi-join e proiezione

Theta-Join ed Equi-Join Per esempio: R1(A,B,C), R2(B,C,D) R1  R2 =  A,B,C,D (R1  B=B’  C=C’ (  B’,C’  B,C (R2)))

Theta-Join ed Equi-Join Per esempio: R1(A,B,C), R2(B,C,D) R1  R2 =  A,B,C,D (R1  B=B’  C=C’ (  B’,C’  B,C (R2))) Join naturale Equi-join

Theta-Join ed Equi-Join Per esempio: R1(A,B,C), R2(B,C,D) R1  R2 =  A,B,C,D (R1  B=B’  C=C’ (  B’,C’  B,C (R2))) Si ridenomina R2 affinchè abbia attributi diversi da quelli di R1 Equi-join tra R1 e R2 per selezionare tuple in corrispondenza Proiezione del risultato per eliminare attributi ridondanti

Esercitazione Che cos’è Studenti  Lavoratori? MatricolaCognomeNome BruniAndrea NeriDario RealeCarla MatricolaCognomeNome BiancoGiovanni NeriDario RealeCarla Studenti Lavoratori

Esercitazione Che cos’è Studenti  Lavoratori? MatricolaCognomeNome BruniAndrea NeriDario RealeCarla MatricolaCognomeNome BiancoGiovanni NeriDario RealeCarla Studenti Lavoratori

Esercitazione Che cos’è Studenti - Lavoratori? MatricolaCognomeNome BruniAndrea NeriDario RealeCarla MatricolaCognomeNome BiancoGiovanni NeriDario RealeCarla Studenti Lavoratori

Esercitazione Che cos’è  Numero  Matricola (Studenti)? MatricolaCognomeNome BruniAndrea NeriDario RealeCarla Studenti

Esercitazione Che cos’è  Voto>25 (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

Esercitazione Che cos’è  Voto>25  Eta<23 (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

Esercitazione Che cos’è  Voto>25  Eta<23 (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

Esercitazione Che cos’è  Cognome,Nome (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

Esercitazione Che cos’è  Nome,Voto (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

Esercitazione Che cos’è  Cognome,Nome,Età,Voto (Studenti)? CognomeNomeEtàVoto BruniDario2129 NeriDario2329 RealeCarla2022 Studenti

Esercitazione Che cos’è Studenti  Esami (join naturale)? MatricolaCognomeNome BruniDario NeriDario RealeCarla Studenti MatricolaCorsoVoto Psicologia Informatica Psicologia Psicologia22 Esami

Esercitazione Che cos’è Studenti  Esami (join naturale)? MatricolaCognomeNome BruniDario NeriDario RealeCarla Studenti NumeroCorsoVoto Psicologia Informatica Psicologia Psicologia22 Esami

Esercitazione Che cos’è Studenti  Esami (join naturale)? MatricolaCognomeNome BruniDario NeriDario RealeCarla Studenti MatricolaCorsoVoto Psicologia Informatica Psicologia Psicologia22 Esami

Esercitazione Che cos’è Studenti  Lavoratori (join naturale)? MatricolaCognomeNome BruniAndrea NeriDario RealeCarla MatricolaCognomeNome BiancoGiovanni NeriDario RealeCarla Studenti Lavoratori

Esercitazione Studenti  Esami è un join completo? MatricolaCognomeNome BruniDario NeriDario RealeCarla Studenti MatricolaCorsoVoto Psicologia Informatica Psicologia Psicologia22 Esami

Esercitazione Che cos’è Studenti  LEFT Esami? MatricolaCognomeNome BruniDario NeriDario RealeCarla Studenti MatricolaCorsoVoto Psicologia Informatica Psicologia Psicologia22 Esami

Esercitazione Che cos’è Studenti  FULL Esami? MatricolaCognomeNome BruniDario NeriDario RealeCarla Studenti MatricolaCorsoVoto Psicologia Informatica Psicologia Psicologia22 Esami

Interrogazioni con Algebra Relazionale Dato schema R(Y) di DB, un’interrogazione è una funzione che, per ogni istanza r di R(Y), produce una relazione su un dato insieme di attributi X Le espressioni di un linguaggio di interrogazione (per esempio, algebra relazionale), permettono di realizzare interrogazioni a un DB E(r): risultato dell’applicazione dell’espressione E al DB r E(r) è una relazione

Esempi di Interrogazioni: 1 MatrNomeEtàStip 101Mario Rossi Mario Bianchi Luigi Neri Nico Bini Marco Celli Siro Bisi Nico Bini Sergio Rossi Mario Rossi CapoImpiegato ImpiegatiSupervisione

Esempi di Interrogazioni: 1 Trovare matricola, nome ed età degli impiegati che guadagnano più di  Matr,Nome,Età (  Stip>2.000 (Impiegati))

Esempi di Interrogazioni: 2 Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo 1. Definire relazione R che lega (join) descrizione di impiegati a descrizione di capo Per non confondere gli attributi dell’impiegato e del capo bisogna ridenominare una delle due relazioni

Esempi di Interrogazioni: 2 Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo 2. Selezionare le tuple di R tali nelle quali lo stipendio dell’impiegato è superiore a quello del capo

Esempi di Interrogazioni: 2 Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo 3. Proiettare risultato su attributo Matr, Nome e Stip di impiegato e sui corrispettivi (ridenominati) di capo

Esempi di Interrogazioni: 2 1. Definire relazione R che lega descrizione di impiegati a descrizione di capo a) Definire relazione R1 che descrive gli impiegati di ciascun capo Schema: R1(Matr,Nome,Età,Stip,Capo,Impiegato) R1 = Impiegati  Matr=Impiegato Supervisione

Esempi di Interrogazioni: 2 1. b) Definire relazione R che descrive impiegati e capo: per non confondere gli attributi dell’impiegato e del capo ridenominare impiegati R2=  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati) R = R1  Capo=MatrC R2

Esempi di Interrogazioni: 2 1. b) Definire relazione R che descrive impiegati e capo: per non confondere gli attributi dell’impiegato e del capo ridenominare impiegati R2=  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati) R = R1  Capo=MatrC R2 (Impiegati  Matr=Impiegato Supervisione)  Capo=MatrC  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati)

Esempi di Interrogazioni: 2 2. Selezionare tuple in R in cui lo stipendio dell’impiegato è superiore a quello del capo:  Stip>StipC (R)

Esempi di Interrogazioni: 2 2. Selezionare tuple in R in cui lo stipendio dell’impiegato è superiore a quello del capo:  Stip>StipC (R)  Stip>StipC ((Impiegati  Matr=Impiegato Supervisione)  Capo=MatrC  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati))

Esempi di Interrogazioni: 2 3. Proiettare R su attributi richiesti:  Matr,Nome,Stip,MatrC,NomeC,StipC (  Stip>StipC (R))

Esempi di Interrogazioni: 2 3. Proiettare R su attributi richiesti:  Matr,Nome,Stip,MatrC,NomeC,StipC (  Stip>StipC (R))  Matr,Nome,Stip,MatrC,NomeC,StipC (  Stip>StipC ((Impiegati  Matr=Impiegato Supervisione)  Capo=MatrC  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati)))

Esempi di Interrogazioni: 2  Matr,Nome,Stip,MatrC,NomeC,StipC (  Stip>StipC ((Impiegati  Matr=Impiegato Supervisione)  Capo=MatrC  MatrC,NomeC,EtàC,StipC  Matr,Nome,Età,Stip (Impiegati))) Trovare gli impiegati che guadagnano più del loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo

Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati? Selezionare capi che hanno impiegati con stipendio <  Capo (Supervisione  Matr=Impiegato (  Stip<2.000 (Impiegati)))

Esempi di Interrogazioni: 3 2. Sottrarre tali capi all’insieme di tutti i capi  Capo (Supervisione) –  Capo (Supervisione  Matr=Impiegato (  Stip<2.000 (Impiegati)))

Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di  Matr,Nome (Impiegati  Matr=Impiegato (  Capo (Supervisione) –  Capo (Supervisione  Matr=Impiegato (  Stip<2.000 (Impiegati)))))

Algebra con valori nulli Come applicare espressioni di algebra relazionale in presenza di tuple con valori nulli? Per esempio:  Età>30 (Impiegati) Se in relazione Impiegati non si conosce età di alcune persone: tuple 104 e 219 devono essere selezionate? MatrNomeEtàStip 101Mario Rossi Mario Bianchi Luigi NeriNULL Nico Bini Marco CelliNULL3.000

Algebra con valori nulli Logica a 3 valori per il trattamento di valori veri, falsi, sconosciuti: T, F, U (unknown) Un predicato assume volore U quando uno dei termini del confronto ha valore nullo Tabelle di verità dei connettivi: AND, OR, NOT ANDTUF TTUF UUUF FFFF ORTUF TTTT UTUU FTUF NOT TF UU FT

Algebra con valori nulli Poiché ragionare su valori nulli è complesso, adottiamo approccio semplificato al trattamento del valore nullo nelle espressioni dell’algebra relazionale Definiamo due nuove condizioni atomiche di selezione: dato attributo A A IS NULL: vera su tupla t se il valore di t su A è nullo; falsa se valore specificato A IS NOT NULL: vera su t se valore di t su A specificato, falsa altrimenti

Algebra con valori nulli Interpretiamo le condizioni di selezione in modo restrittivo, escludendo da selezione le tuple con valore U, a meno che non sia espicitamente incluso nella selezione

Algebra con valori nulli Per esempio:  Età>30 (Impiegati) – le tuple con Età null non vengono selezionate (su di esse la condizione Età>30 assume valore U)  Età>30  Età IS NULL (Impiegati) – si includono anche le tuple con Età sconosciuta (104, 210 in relazione Impiegati)

Viste Relazioni derivate definite su relazioni di schema logico Viste materializzate (con tuple memorizzate in DB) Relazioni virtuali, o viste (memorizzate in DB mediante espressioni del linguaggio di interrogazione, senza memorizzazione di tuple)

Viste DBMS offrono solo relazioni virtuali (no ridondanza dati) Interrogazioni che utilizzano viste sono risolte sostituendo la definizione delle viste alle loro occorrenze

Viste Per esempio: R1(A,B,C), R2(C,D,E), R3(E,G) Vista: R =  A>D (R1  R2) Interrogazione:  B=G (R  R3) risolta così:  B=G (  A>D (R1  R2)  R3)

Viste Viste utile per: Permettere ad applicazioni di utilizzare relazioni che contengono solo le informazioni di interesse Se schema di DB viene ristrutturato, ricreare relazioni eliminate per evitare di modificare le applicazioni che le usavano  Per esempio: R(A,B,C) sostituita in DB da R1(A,B), R2(B,C), e definiamo vista R= R1  R2