ALGEBRA RELAZIONALE. Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante.

Slides:



Advertisements
Presentazioni simili
DB -Algebra Relazionale
Advertisements

Calcolo Relazionale.
Algebra e calcolo relazionale (parte 2)
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
Interrogazione di una base di dati relazionale Algebra relazionale.
1 Algebra Relazionale Eugenio Di Sciascio. 2 Introduzione Lalgebra relazionale è un linguaggio procedurale: le operazioni vengono specificate descrivendo.
Operazioni Relazionali
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
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.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Access: Query semplici
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.
Equivalenza di espressioni
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.
Relazioni Relazione : concetto mutuato dalla definizione di relazione matematica della teoria degli insiemi, come sottoinsieme del prodotto cartesiano.
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 3: ALGEBRA E CALCOLO RELAZIONALE 10/10/2002.
Basi di dati Claudia Raibulet
MODELLO LOGICO DEI DATI
Valutazione costi di una QUERY. A.1-Nome di tutti i fornitori che forniscono il prodotto P2 forpro fornitori CP=P2 Nome fornitori (CF, Nome, Citta) prodotti(CP,
Introduzione a Oracle 9i
Sistemi di Elaborazione delle Informazioni Mod.I.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
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:
Una convenzione e notazione alternativa per i join Nota: è sostanzialmente l'approccio usato in SQL Ignoriamo il join naturale (cioè non consideriamo implicitamente.
Basi di dati Esercizi su ALGEBRA RELAZIONALE 17/10/2013 Paolo Atzeni 1.
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.
Microsoft Access Maschere (II).
ALGEBRA E CALCOLO RELAZIONALE
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.
IL MODELLO RELAZIONALE. Modello Relazionale2 Cronologia dei modelli per la rappresentazione dei dati  Modello gerarchico (anni 60)  Modello reticolare.
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.
BASI DI DATI. 2 Sommario Introduzione e obiettivi Introduzione e obiettivi Il modello di dati relazionale Il modello di dati relazionale SQL SQL Software.
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.
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.
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.
Vincoli interrelazionali
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Lezione 6 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni) Normalizzazione di Schemi.
Algebra relazionale (II). Join esterni Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi.
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Informatica Introduzione alle basi di dati Lezione 7 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Approfondimenti SQL.
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.
Linguaggi per basi di dati Linguaggi di definizione dei dati Utilizzati per definire gli schemi e le autorizzazioni per l’accesso Linguaggi di manipolazione.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
SQL Linguaggio per l’interrogazione di una base dati.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Selezione e Proiezione
Transcript della presentazione:

ALGEBRA RELAZIONALE

Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante considerare linguaggi per la specifica di operazioni sui dati stessi, che siano legati al modello dei dati scelto (modello relazionale)

Algebra Relazionale3 Linguaggi per basi di dati  operazioni sullo schema DDL: data definition language per definire lo schema VDL: view definition language per definire le viste d’utente  operazioni sui dati DML: data manipulation language interrogazione ("query") inserimento, cancellazione e aggiornamento dei dati

Algebra Relazionale4 Linguaggi per l’interrogazione  Una base di dati richiede un insieme di operazioni che consentano all’utente di specificare le richieste di recupero fondamentali  Le operazioni di questo tipo producono nuove relazioni, sulle quali è ulteriormente possibile applicare operazioni

Algebra Relazionale5 Linguaggi di interrogazione per basi di dati relazionali  Dichiarativi (di alto livello) le espressioni specificano le proprietà del risultato ("che cosa")  Procedurali (di basso livello) specificano le modalità di generazione del risultato ("come")

Algebra Relazionale6 Linguaggi di interrogazione  Algebra relazionale: procedurale (teorico)  Calcolo relazionale: dichiarativo (teorico)  SQL (Structured Query Language): combina gli aspetti dichiarativi del calcolo e quelli procedurali dell’algebra (linguaggio reale)

Algebra Relazionale7 Algebra relazionale  Insieme di operatori, definiti su relazioni, che producono ancora relazioni come risultati insiemistici: unione, intersezione, differenza specifici: ridenominazione, selezione, proiezione join: join naturale, prodotto cartesiano, theta-join raggruppamento: divisione

Algebra Relazionale8 Operatori insiemistici  le relazioni sono insiemi  i risultati debbono essere relazioni - è sensato applicare le operazioni insiemistiche classiche di unione,intersezione, differenza - è possibile applicare solo a relazioni definite sugli stessi attributi

Algebra Relazionale9 Laureati Matricola Età Nome Neri Verdi Rossi Quadri Matricola Età Nome Neri Verdi Neri Laureati  Quadri MatricolaEtàNome Neri Verdi Neri Rossi Neri Verdi Rossi Neri Verdi Neri Neri Verdi Neri Rossi Unione

Algebra Relazionale10 Laureati Matricola Età Nome Neri Verdi Rossi Quadri Matricola Età Nome Neri Verdi Neri Laureati  Quadri MatricolaEtàNome Neri Verdi Neri Verdi Neri Verdi Neri Verdi Intersezione

Algebra Relazionale11 Laureati MatricolaEtàNome Neri Verdi Rossi Quadri Matricola Età Nome Neri Verdi Neri Laureati – Quadri MatricolaEtàNome Neri Verdi Rossi Neri Verdi Rossi Differenza

Algebra Relazionale12 Paternità PadreFiglio AdamoCaino AbramoIsacco AdamoAbele Maternità MadreFiglio EvaSet SaraIsacco EvaAbele Paternità  Maternità ?? Una unione sensata ma impossibile

Algebra Relazionale13 Ridenominazione  operatore unario  "modifica lo schema" lasciando inalterata l'istanza dell'operando, cambia solo il nome degli attributi

Algebra Relazionale14 Ridenominazione: definizione formale  Siano R una relazione su X, e Y un altro insieme di attributi con la stessa cardinalità X = {A 1,……. A k } Y = {B 1,……. B k } La ridenominazione  A1,……. Ak  B1,……. Bk (R) contiene una ennupla t’ per ogni ennupla t in R tale che:  t’ è una ennupla su Y  t’[B i ]=t[A i ], per ogni i=1,…,k

Algebra Relazionale15 Paternità PadreFiglio AdamoCaino AbramoIsacco AdamoAbele  Genitore  Padre (Paternità) PadreFiglio AdamoCaino AbramoIsacco AdamoAbele Genitore

Algebra Relazionale16 Paternità PadreFiglio AdamoCaino AbramoIsacco AdamoAbele Maternità MadreFiglio EvaSet SaraIsacco EvaAbele  Genitore  Padre (Paternità)  Genitore  Madre (Maternità) GenitoreFiglio AdamoCaino AbramoIsacco AdamoAbele GenitoreFiglio EvaSet SaraIsacco EvaAbele

Algebra Relazionale17  Genitore  Padre (Paternità)  Genitore  Madre (Maternità) GenitoreFiglio AdamoCaino AbramoIsacco AdamoAbele GenitoreFiglio EvaSet SaraIsacco EvaAbele GenitoreFiglio AdamoCaino AbramoIsacco AdamoAbeleEvaSet SaraIsacco EvaAbele  Genitore  Padre (Paternità)  Genitore  Madre (Maternità) 

 Sede, Retribuzione  Ufficio, Stipendio (Impiegati)  Sede, Retribuzione  Fabbrica, Salario (Operai)  Impiegati Cognome Neri Rossi Ufficio Milano Roma Stipendio Operai Cognome Verdi Bruni Fabbrica Latina Monza Salario CognomeRetribuzioneSede Neri Rossi Milano Roma Verdi Bruni Latina Monza 55 45

Algebra Relazionale19 Selezione  operatore unario su una tabella  produce un risultato che ha lo stesso schema della relazione di partenza (colonne della tabella) contiene un sottoinsieme delle ennuple dell'operando (righe della tabella), quelle che soddisfano una condizione

Algebra Relazionale20 Selezione ABC ABC

Algebra Relazionale21 Impiegati CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano  impiegati che: guadagnano più di 50 guadagnano più di 50 e lavorano a Milano hanno lo stesso nome della filiale presso cui lavorano

Algebra Relazionale22 Selezione, sintassi e semantica  sintassi  Condizione (Operando) Condizione: espressione booleana Operando: una espressione dell’algebra relazionale  semantica il risultato è una relazione sugli stessi attributi che contiene le ennuple dell'operando che soddisfano la condizione

Algebra Relazionale23 Condizione di selezione F formula proposizionale formata da operatori booleani:  (AND),  (OR), ¬ (NOT) condizioni atomiche: termini che possono contenere confronti fra attributi, o fra attributi e costanti. Hanno forma: A B oppure A c dove –  operatore di confronto (=, , >, <, ,  ) – A, B attributi in X – c costante compatibile con dominio di attributo (A) con cui c viene confrontata

Algebra Relazionale24 Condizioni di selezione, esempi  Esempi: (Stipendio > 50) Filiale='Milano' Cognome = Filiale (Stipendio > 50) AND (Filiale='Milano') NOT (Cognome='Neri')

Algebra Relazionale25 CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano Impiegati Milano NeriNapoli impiegati che guadagnano più di 50  Stipendio > 50 (Impiegati)

Algebra Relazionale26 Impiegati CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano impiegati che guadagnano più di 50 e lavorano a Milano  Stipendio > 50 AND Filiale = 'Milano' (Impiegati) RossiRoma NeriNapoli Milano NeriMilano645998

Algebra Relazionale27 Impiegati CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano impiegati che hanno lo stesso nome della filiale presso cui lavorano  Cognome = Filiale (Impiegati) NeriMilano RossiRoma NeriNapoli Milano

Algebra Relazionale28 Osservazioni  l’operazione di selezione è commutativa  (  (R)) =  AND (R)  il numero delle t-uple della relazione R dopo l’applicazione di una selezione è minore o uguale al numero delle t-uple di R |  (R) |  | R |

Algebra Relazionale29 Selezione con valori nulli CognomeFilialeEtàMatricola NeriMilano RossiRoma BruniMilano NULL 9553 Impiegati  Età > 40 (Impiegati) la condizione atomica è vera solo per valori non nulli

Algebra Relazionale30 Un risultato non desiderabile  Età>30 (Persone)   Età  30 (Persone)  Persone  Perché? Perché le selezioni vengono valutate separatamente!  Ma anche  Età>30  Età  30 (Persone)  Persone  Perché? Perché anche le condizioni atomiche vengono valutate separatamente!

Algebra Relazionale31  Età > 40 (Impiegati)  la condizione atomica è vera solo per valori non nulli  per riferirsi ai valori nulli esiste la apposita di condizione: IS NULL

Algebra Relazionale32  A questo punto:  Età>30 (Persone)   Età  30 (Persone)   Età IS NULL (Persone) =  Età>30  Età  30  (Età IS NULL) (Persone) = Persone

Algebra Relazionale33 Logica con il valore NULL  Oltre ai valori di verità Vero (V) e Falso (F), si introduce NULL (?)  NOT ( A IS NULL) si scrive anche A IS NOT NULL

Algebra Relazionale35 CognomeFilialeEtàMatricola NeriMilano RossiRoma BruniMilano NULL 9553 Impiegati NeriMilano BruniMilano NULL 9553  (Età > 40) OR (Età IS NULL) (Impiegati) NeriMilano BruniMilano NULL 9553

Algebra Relazionale36 Selezione e proiezione  operatori "ortogonali"  selezione: decomposizione orizzontale  proiezione: decomposizione verticale

selezione proiezione

Algebra Relazionale38 Proiezione  operatore unario su una tabella  produce un risultato che ha parte degli attributi della tabella contiene ennuple (righe) cui contribuiscono tutte le ennuple della tabella iniziale

Algebra Relazionale39 Impiegati CognomeFilialeStipendioMatricola NeriMilano NeriNapoli RossiRoma RossiRoma per tutti gli impiegati: matricola e cognome cognome e filiale

Algebra Relazionale40 Proiezione, sintassi e semantica  sintassi  (Operando) è un elenco di attributi di Operando Operando è una espressione nell’algebra relazionale  semantica il risultato contiene le ennuple ottenute da tutte le ennuple dell'operando ristrette agli attributi nella lista

Algebra Relazionale41 CognomeFilialeStipendioMatricola NeriMilano NeriNapoli RossiRoma RossiRoma matricola e cognome di tutti gli impiegati  Matricola, Cognome (Impiegati)

Algebra Relazionale42 CognomeFilialeStipendioMatricola NeriMilano NeriNapoli RossiRoma RossiRoma cognome e filiale di tutti gli impiegati  Cognome, Filiale (Impiegati)

Algebra Relazionale43 Cardinalità delle proiezioni  una proiezione contiene al più tante ennuple quante l'operando può contenerne di meno  se X è una superchiave di R, allora  X (R) contiene esattamente tante ennuple quante R

Algebra Relazionale44 Selezione e proiezione  Combinando selezione e proiezione, possiamo estrarre interessanti informazioni da una relazione  Cond (  A,B,C (R) ) = (  A,B,C  Cond (R) ) ? Sono commutative a certe condizioni !

Algebra Relazionale45 CognomeFilialeStipendioMatricola NeriMilano RossiRoma NeriNapoli Milano Milano NeriNapoli matricola e cognome degli impiegati che guadagnano più di 50  Stipendio > 50 (Impiegati)  Matricola,Cognome ( )

Algebra Relazionale46 combinando selezione e proiezione, possiamo estrarre informazioni da una relazione non possiamo però correlare informazioni presenti in relazioni diverse

Algebra Relazionale47 Join  il join è l'operatore più interessante dell'algebra relazionale  permette di correlare dati in relazioni diverse  sfrutta la caratteristica fondamentale del modello relazionale, che è quella di essere basato su valori

Idea del join naturale matricolacognomedata_nasc 2021Rossi Bianchi Neri matricolacorsovoto 2021Basi dati Calcolo Algebra30 matricolacognomedata_nasccorsovoto 2021Rossi Basi dati Rossi Calcolo Neri Algebra Rossi Basi dati Rossi Basi dati Rossi Calcolo Rossi Calcolo Neri Algebra Neri Algebra30

Algebra Relazionale49 Join naturale  operatore binario (generalizzabile a più relazioni)  produce un risultato sull'unione degli attributi degli operandi (schema) con ennuple costruite ciascuna a partire da una ennupla di ognuno degli operandi (istanza)

Algebra Relazionale50 Join, sintassi e semantica  R 1 (X 1 ), R 2 (X 2 )  R 1  R 2 è una relazione su X 1  X 2 { t su X 1  X 2 : esistono t 1  R 1 e t 2  R 2 con t[X 1 ] =t 1 [X 1 ] e t[X 2 ] =t 2 [X 2 ] }

Algebra Relazionale51 Join, proprietà  Il join naturale è commutativo: R 1  R 2 = R 2  R 1  Il join naturale è associativo: ( R 1  R 2 )  R 3 = R 1  ( R 2  R 3 )

MatricolaCognomeNome 6554RossiMario 8765NeriPaolo 3456RossiMaria 9283VerdiLuisa studentiCorsoTitoloDocente 01AnalisiMario 02ChimicaBruni 04ChimicaVerdi corsi MatricolaVotoCorso esami (studenti  esami) ((studenti  esami)  corsi )

AMori BBruni RepartoCapo RossiA NeriB BianchiB ImpiegatoReparto RossiAMori NeriBBruni ImpiegatoRepartoCapo BianchiBBruni RossiA NeriB BianchiB RossiA NeriB BianchiB AMori BBruni AMori BBruniB B  ogni ennupla contribuisce al risultato: join completo

Algebra Relazionale54 NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni A C Un join non completo

Algebra Relazionale55 ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo DMori CBruni ImpiegatoRepartoCapo Un join vuoto

Algebra Relazionale56 RossiBMori NeriBMori ImpiegatoRepartoCapo BianchiBBruni RossiA NeriB ImpiegatoReparto RossiA NeriB RossiB NeriB AMori BBruni RepartoCapo AMori BBruni BMori BBruniB B RossiBBruni Un join completo, con n x m ennuple Ogni n-upla di ciascuna tabella è combinabile con tutte le n-uple dell’altro

Algebra Relazionale57 Cardinalità del join  Il join di R 1 (A) e R 2 (B) contiene un numero di ennuple compreso fra zero e il prodotto di |R 1 | e |R 2 |

Algebra Relazionale58 ImpiegatoReparto RossiA NeriB BianchiB Rossi AMori ImpiegatoRepartoCapo Neri BBruni ImpiegatoCapo RossiMori NeriBruni Neri Bianchi se il join coinvolge una chiave di R 1 allora il numero di ennuple è compreso tra zero e |R 2 | Neri B Bianchi VerdiBianchi

Algebra Relazionale59 ImpiegatoReparto RossiA NeriB BianchiB Rossi AMori ImpiegatoRepartoCapo Neri BBruni ImpiegatoCapo RossiMori NeriBruni Neri Bianchi se il join coinvolge una chiave di R 1 e c’è un vincolo di integrità allora il numero di ennuple è compreso uguale a |R 2 | Neri B Bianchi

Algebra Relazionale60 Cardinalità del join, riepilogo  R 1 (A,B), R 2 (B,C)  in generale: 0  |R 1  R 2 |  |R 1 | · |R 2 |  se B è chiave in R 1 0  |R 1  R 2 |  |R 2 |  se B è chiave in R 1 ed esiste vincolo di integrità referenziale fra B (in R 2 ) e R 1 |R 1  R 2 | = |R 2 |

Algebra Relazionale61 Join naturale e valori nulli

Algebra Relazionale62 ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori A C Join, una difficoltà  alcune ennuple non contribuiscono al risultato: vengono "tagliate fuori'': si possono omettere informazioni importanti

Algebra Relazionale63 Join esterno  Il join esterno estende, con valori nulli, le ennuple che verrebbero tagliate fuori da un join (naturale)  esiste in tre versioni: sinistro, destro, completo

Algebra Relazionale64 Join esterno sinistro: prevede che tutte le ennuple del primo operando, estendendole con valori nulli, se necessario, diano un contributo al join destro:... del secondo operando... completo: … di entrambi gli operandi … OSSERVAZIONE: il Join esterno non è commutativo

ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati  LEFT Reparti C RossiA NULL ARossi

ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati  RIGHT Reparti A NULL CBruni C

ImpiegatoReparto RossiA NeriB BianchiB Impiegati RepartoCapo BMori CBruni Reparti NeriBMori ImpiegatoRepartoCapo BianchiBMori Impiegati  FULL Reparti NULL CBruni C ARossi A NULL

MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami Esercizio 1 Determinare i corsi tenuti dal Prof. Mari  Titolo (  Docente=‘Mari’ (corsi) )

MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami Esercizio 2 Determinare nome, cognome e numero di matricola degli studenti che hanno ricevuto la votazione di 30  Nome, Cognome, Matr (  Voto=30 ( esami  studenti ))

MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami Esercizio 3 Determinare il nome e il cognome degli studenti che hanno sostenuto l'esame di Analisi

Algebra Relazionale71 MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami Esercizio 4 Determinare nome, cognome ed eventuali esami sostenuti da tutti gli studenti del corso di laurea che hanno più di 25 anni.

Algebra Relazionale72 MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04ChimicaVerdi corsi Corso 04 esami MatrVotoCodice esami Esercizio 5 Determinare nome, cognome degli studenti del corso di laurea che non hanno sostenuto alcun esame.

Join e proiezioni ImpiegatoReparto RossiA NeriB BianchiBRepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto NeriB BianchiB RepartoCapo BMori

Proiezioni e join NeriBMori ImpiegatoRepartoCapo BianchiBBruni VerdiABini NeriB ImpiegatoReparto BianchiB VerdiA BMori RepartoCapo BBruni ABini VerdiABini NeriBMori ImpiegatoRepartoCapo BianchiBBruni NeriBBruni BianchiBMori

Algebra Relazionale75 Join e proiezioni  R 1 (X 1 ), R 2 (X 2 )  X 1 (R 1  R 2 )  R 1  R(X), X = X 1  X 2 (  X 1 (R))  (  X 2 (R))  R

Algebra Relazionale76 Prodotto cartesiano Che cosa accade se si effettua un join naturale su relazioni senza attributi in comune? Prodotto cartesiano tra le due relazioni contiene sempre un numero di ennuple pari al prodotto delle cardinalità degli operandi (le ennuple sono tutte combinabili )

RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B CodiceCapo Reparti Impiegati  Reparti ImpiegatoRepartoCapoCodice RossiAMoriAAA RossiABBruni NeriBMoriA NeriBBBruni BianchiBMoriA BianchiBBBruni

Algebra Relazionale78  Il prodotto cartesiano, in pratica, ha senso solo se seguito da selezione:  Condizione (R 1  R 2 )  L'operazione viene chiamata theta-join e indicata con: R 1  Cond R 2

Algebra Relazionale79 Perché "theta-join"?  La condizione C è spesso una congiunzione (AND) di atomi di confronto A 1 A 2 dove è uno degli operatori di confronto (=, >, <, …)  se l'operatore è sempre l'uguaglianza (=) allora si parla di equi-join

RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B CodiceCapo Reparti Impiegati  Reparto=Codice Reparti ImpiegatoRepartoCapoCodice RossiAMoriAAA RossiABBruni NeriBMoriA NeriBBBruni BianchiBMoriA BianchiBBBruni RossiAMoriAAA NeriBBBruni BianchiBBBruni Equi-join

Algebra Relazionale81 RossiA NeriB BianchiB ImpiegatoReparto Impiegati AMori BBruniB B RepartoCapo Reparti Impiegati  Reparti

Algebra Relazionale82 Join naturale ed equi-join ImpiegatoReparto Impiegati RepartoCapo Reparti Impiegati  Reparti  Impiegato,Reparto,Capo ( )  Codice  Reparto (Reparti) Impiegati   Reparto=Codice ( ) ) Producono lo stesso risultato !

Algebra Relazionale83 prodotto cartesiano o join naturale?  Prodotto cartesiano e Join naturale possono essere ottenuti l’uno a partire dall’altro  R(A,B), S(B,C)  Prodotto cartesiano  : R  S =  A,B,C (  R.B=S.B (R  S) )  Join naturale  : R  S = (  B  B’ (R)  S)

Operatore di divisione  trovare gli studenti che hanno sostenuto tutti gli esami del corso di laurea Algebra Relazionale84 MatrCognomeNomeData di nascita 6554RossiMario05/12/ NeriPaolo03/11/ RossiMaria01/02/ VerdiLuisa12/11/1979 studenti CodiceTitoloDocente 01AnalisiMari 02ChimicaMari 04FisicaVerdi corsi Corso 04 esami MatrVotoCodice esami

Algebra Relazionale85 Corso 04 esami MatrCodice  Matr,Codice (esami) Codice  Codice (corsi)  Matr,Codice (esami)   Codice (corsi) Matr 6554 R(X  Y) / S(X) è una relazione su T(Y) tale che t  T(Y) se e solo se esistono n-uple t R in R tali che: -t R [Y]=t -t R [X]=l per ogni n-unpla l di S Si considerano solo le righe della prima tabella che si combinano con tutte le righe della seconda tabella

Algebra Relazionale86 Un insieme completo di operazioni  Teorema: L’insieme delle operazioni { , , , , - } è un insieme completo.  ESEMPIO R  S=(R  S) - (( R-S)  ( S- R )) Join naturale = Prod. Cartesiano + Selezione + Proiezione Divisione= Prodotto Cartesiano + Differenza + Proiezione

Algebra Relazionale87 Alcune operazioni in algebra relazionale  Esempio: qual è la squadra prima in classifica? Classifica SquadraPunti Inter36 Juve34 Siena40

Algebra Relazionale88  Ridenominazione + Join Squadra1Punti1Squadra2Punti2 Siena40Siena40 Inter36Siena40 Siena40Juve34 Inter36Juve34 ….… …

Algebra Relazionale89 Squadra1Punti1Squadra2Punti2 Juve34Siena40 Inter36Siena40 Juve34Inter36 Selezione sulla condizione: (Punti1  Punti2) AND (Squadra1  Squadra2) Proiezione su Squadra1, Punti1 Squadra1Punti1 Juve34 Inter36 Classifica 2 Squadre che hanno meno punti di almeno un’altra squadra Squadre che hanno più punti di almeno un’altra squadra

Algebra Relazionale90 Differenza tra la tabella Classifica e Classifica 2 (dopo opportuna ridenominazione) SquadraPunti Siena40 Classifica SquadraPunti Inter36 Juve34 Siena 40 Squadra1Punti1 Juve34 Inter36 Classifica 2

Algebra Relazionale91 Chiusura transitiva Supervisione(Impiegato, Capo) Per ogni impiegato, trovare tutti i superiori (cioè il capo, il capo del capo, e cosi' via) Rossi Neri Impiegato Rossi Neri Rossi Neri Lupi Mori Bruni Capo Mori Bruni Lupi Bruni Falchi Rossi Neri Impiegato Rossi Neri Rossi Neri Lupi Mori Bruni Superiore Mori Bruni Lupi Bruni Falchi Rossi Falchi Lupi

Algebra Relazionale92 Chiusura transitiva, come si fa?  Nell'esempio, basterebbe il join della relazione con se stessa, previa opportuna ridenominazione  Ma: Rossi Neri Impiegato Rossi Neri Rossi Neri Lupi Mori Bruni Superiore Mori Bruni Lupi Bruni Falchi Rossi Falchi Rossi Neri Impiegato Rossi Neri Rossi Neri Lupi Mori Bruni Capo Mori Bruni Lupi Bruni Lupi Leoni Falchi Lupi Leoni Rossi Leoni Falchi

Algebra Relazionale93 Chiusura transitiva, impossibile!  Per ogni specifico livello è possibile determinare tutti gli impiegati sorvegliati da un impegato a un certo livello, ma non quelli sorvegliati a tutti i livelli  Non esiste in algebra la possibilità di esprimere l'interrogazione che, per ogni relazione binaria, ne calcoli la chiusura transitiva  Per ciascuna istanza relazione, è possibile calcolare la chiusura transitiva, ma con un'espressione ogni volta diversa: dipende dall’istanza e non dallo schema!  Immaginate una istanza di migliaia di tuple: quanti join servono?

Algebra Relazionale94 Interrogazioni in algebra relazionale  Una interrogazione su una base di dati è una funzione che restituisce una relazione R su un insieme di attributi X.

Esempi Impiegati NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi Supervisione ImpiegatoCapo

Algebra Relazionale96  Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni  Stipendio>40 (Impiegati)

Algebra Relazionale97 NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi  Stipendio>40 (Impiegati) Bianchi Neri Rossi Bruni Mori Lupi Rossi Bruni Mori Lupi

Algebra Relazionale98  Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni  Matricola, Nome, Età (  Stipendio>40 (Impiegati)) NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi Bianchi Neri Rossi Bruni Mori Lupi Rossi Bruni Mori Lupi

Algebra Relazionale99  Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati)))

Algebra Relazionale100  Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 milioni  Nome,Stipendio (Impiegati  Matricola=Capo  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati))))

Capo  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati))) Bianchi Rossi Bruni Neri Mori Lupi NomeEtàStipendioMatricola Impiegati

Algebra Relazionale102 Impiegati  Matricola=Capo  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati)))) CapoMatricolaNomeEtàStipendio 5698 Bianchi Mori Lupi4660

Algebra Relazionale103  Nome,Stipendio (Impiegati  Matricola=Capo  Capo (Supervisione  Impiegato=Matricola (  Stipendio>40 (Impiegati)))) NomeStipendio Bianchi38 Mori50 Lupi60 Nome e stipendio dei capi di impiegati che guadagnano più di 40 milioni

Algebra Relazionale104  Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo  Matr,Nome,Stip,MatrC,NomeC,StipC (  Stipendio>StipC (  MatrC,NomeC,StipC,EtàC  Matr,Nome,Stip,Età (Impiegati)  MatrC=Capo (Supervisione  Impiegato=Matricola Impiegati)))

Algebra Relazionale105 Equivalenza di espressioni algebriche  Espressioni E1 e E2 sono equivalenti per lo schema R, E1  R E2 se E1(r) = E2(r) per ogni istanza r di R.  Le due espressioni sono assolutamente equivalenti, E1  E2 se E1  R E2 per ogni schema R.

Algebra Relazionale106  equivalenza assoluta:  A,B (  A>0 (R))   A>0 (  A, B (R))  equivalenza:  A,B (R1)   A,C (R2)  R  A,B,C (R1  R2) vale solo per gli schemi R per cui l’intersezione tra gli attributi di R1 e R2 è uguale ad A ESERCIZIO: trovare un controesempio

Algebra Relazionale107 Trasformazioni di equivalenza  Due espressioni E1 ed E2 equivalenti garantiscono lo stesso risultato, ma questo non significa che la scelta sia indifferente in termini di “risorse” necessarie  Scopi: 1. trasformare le espressioni in modo semplice, affinchè sia ridotto il numero delle operazioni da eseguire 2. il costo di una interrogazione viene valutato in termini di dimensione dei risultati intermedi: in presenza di alternative si sceglie quella col costo minore.

Algebra Relazionale108 Trasformazioni di equivalenza (2)  Operazioni che sostituiscono una espressione con un’altra ad essa equivalente 1.Atomizzazione delle selezioni  F1  F2 (E)   F1 (  F2 (E))) 2.Idempotenza delle proiezioni  X (E)   X (  X  Y (E)) 3.Anticipazione della selezione rispetto al join  F (E1  E2)  E1   F (E2)  se la condizione F fa riferimento solo ad attributi nella sottoespressione E2

Algebra Relazionale109 4.Inglobamento di una selezione in un prodotto cartesiano  F (E1  E2)  E1  F E2 5.Distributività della selezione rispetto all'unione  F (E1  E2)   F (E1)   F (E2) 6.Distributività della proiezione rispetto all'unione  X (E1  E2)   X (E1)   X (E2) 7.Distributività della selezione rispetto alla differenza  F (E1 - E2)   F (E1) -  F (E2)

Impiegati NomeEtàStipendioMatricola Bianchi Rossi Bruni Neri Mori Lupi Supervisione ImpiegatoCapo

Algebra Relazionale111 Esercizio: Utilizzando le regole di trasformazione dimostrare che le due espressioni sono equivalenti  Capo (  Matr=Imp  Età < 30 (IMPIEGATI  SUPERVISIONE))  Capo (SUPERVISIONE  Matr=Imp (  Età < 30 (IMPIEGATI))

Algebra Relazionale112 Trovare i numeri di matricola dei capi di impiegati con meno di 30 anni  Capo (  Matr=Imp  Età < 30 (IMPIEGATI  SUPERVISIONE)) Per calcolare pochi valori effettua un prodotto cartesiano (molto costoso)  Capo (  Età < 30 (  Matr=Imp (IMPIEGATI  SUPERVISIONE)))  Capo (  Età<30 (IMPIEGATI  Matr=Imp SUPERVISIONE)) REGOLA 1: REGOLA 4:

Algebra Relazionale113  Capo (  Età<30 (IMPIEGATI)  Matr=Imp SUPERVISIONE) REGOLA 3

Algebra Relazionale114 Viste (relazioni derivate)  Spesso è utile mettere a disposizione degli utenti rappresentazioni diverse per gli stessi dati (schema esterno)schema esterno  Relazioni derivate: relazioni il cui contenuto è funzione del contenuto di altre relazioni (definito per mezzo di interrogazioni)  Relazioni di base: contenuto autonomo (quelle che costituiscono effettivamente la base di dati)

Architettura standard (ANSI/SPARC) a tre livelli per DBMS BD Schema logico Schema esterno Schema interno Schema esterno Schema esterno utente

Algebra Relazionale116 Viste virtuali e materializzate  Due tipi di relazioni derivate: viste materializzate relazioni virtuali (o viste) relazioni virtuali

Algebra Relazionale117 Viste materializzate  relazioni derivate effettivamente memorizzate nella base di dati vantaggi: immediatamente disponibili per le interrogazioni svantaggi: ridondanti appesantiscono gli aggiornamenti (il loro contenuto deve essere mantenuto allineato con quello delle relazioni da cui derivano) non sono supportate dai DBMS commerciali

Algebra Relazionale118 Viste  relazioni virtuali (o viste): non sono memorizzate nella base di dati sono supportate dai DBMS commerciali una interrogazione su una vista viene eseguita "ricalcolando" la vista (o quasi) vengono definite nei sistemi relazionali per mezzo di espressioni nel linguaggio di interrogazione

Algebra Relazionale119 Viste, esempio Una vista: Supervisione =  Impiegato,Capo (Afferenza  Direzione) AMori BLeoni RepartoCapoRossiA NeriB VerdiB ImpiegatoReparto BianchiBBBruni AfferenzaDirezione

Algebra Relazionale120 Interrogazioni sulle viste  Sono eseguite sostituendo alla vista la sua definizione:  Capo='Leoni' (Supervisione) viene eseguita come  Capo='Leoni' (  Impiegato,Capo (Afferenza  Direzione))

Algebra Relazionale121 Viste, motivazioni  Schema esterno: ogni utente vede solo ciò che gli interessa e nel modo in cui gli interessa, senza essere distratto dal resto ciò che e' autorizzato a vedere (autorizzazioni)  Strumento di programmazione: si può semplificare la scrittura di interrogazioni: espressioni complesse e sottoespressioni ripetute  Utilizzo di programmi esistenti su schemi ristrutturati. Invece:  L'utilizzo di viste non influisce sull'efficienza delle interrogazioni

Algebra Relazionale122 Viste come strumento di programmazione  Trovare gli impiegati che hanno lo stesso capo di Rossi  Senza vista:  Impiegato (Afferenza  Direzione)   ImpR,RepR  Imp,Reparto (  Impiegato='Rossi' (Afferenza  Direzione))  Con la vista:  Impiegato (Supervisione)   ImpR,RepR  Imp,Reparto (  Impiegato='Rossi' (Supervisione))