Algebra Relazionale. Concetti Fondamentali

Documenti analoghi
Algebra Relazionale. Concetti Fondamentali

4/16/07. Algebra Relazionale. Introduzione. La Base di Dati di Esempio

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

Introduzione. Introduzione

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Gestione e Analisi dei Dati. Lezione 4 Relazioni multi tabella Relazioni uno-a-uno, uno-a-molti, molti-a-molti

BASI di DATI. SQL: concetti fondamentali

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

Basi di Dati SQL-92. Concetti Fondamentali

Basi di Dati. Concetti Avanzati

Interrogazioni con Raggruppamenti

Basi di Dati. Dettagli e Approfondimenti

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti

ALGEBRA RELAZIONALE. Patrizio Dazzi a.a

SQL: ALTRE FORME DI JOIN, FUNZIONI AGGREGATIVE, ESPRESSIONI. Patrizio Dazzi a.a

SQL: RAGGRUPPAMENTI, QUANTIFICAZIONE, METODO. Patrizio Dazzi a.a

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

Basi di Dati. La Progettazione Logica. Sommario. Il Processo di Progetto della BD. Algoritmo di Progettazione Logica

STRUCTURED QUERY LANGUAGE (SQL) E INTERROGAZIONI. Patrizio Dazzi a.a

Basi di Dati. Progettazione Logica

BASE DI DATI. Progettazione logica. Informatica Umanistica Università di Pisa

VISTE. 19/11/2015 Concetti Avanzati - SQL 71

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

Basi di Dati. Sistemi per Basi di Dati Relazionali: Modello Logico. Concetti Fondamentali. Concetti Fondamentali

SQL: SCRIVERE INTERROGAZIONI E ANNIDARLE. Patrizio Dazzi a.a

Mirco Nanni ISTI CNR, Pisa. CdL in Lettere A.A. 2007/2008

Basi di dati. Linguaggi di interrogazione

Algebra relazionale: operazioni

Scopo. Informatica. Sistema informativo. Sistema informatico

Scopo Laboratorio di Informatica

Linguaggi per basi di dati e SQL

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Linguaggi di interrogazione. linguaggi interrogazione 1

Il linguaggio SQL. TUTORATO DIFONDAMENTI DIINFORMATICA

Scopo Informatica. Sistema informativo. Sistema informatico. Gestione dell informazione per le lauree triennali

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale.

Informatica. per laurea triennale di area non informatica. 1 Le basi di dati

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

Informatica Grafica. Basi di dati parte 2

Sistemi di Elaborazione delle Informazioni

Structured Query Language

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Vincoli di Integrità Referenziale

ALGEBRA RELAZIONALE. DB -Algebra Relazionale 1

Modulo 2 Data Base 3

Basi di dati (database)

Operatori derivati dagli insiemi

Corso di Basi di Dati

Basi di Dati. Modello Concettuale

Interrogazioni nidificate

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati e Multimedia

Modulo 2 Data Base 2

Linguaggi per basi di dati

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Interrogazioni in SQL SQL1 1

Dichiarativi : specificano le proprietà del risultato ("che cosa") Procedurali specificano le modalità di generazione del risultato ("come")

Parte III. L algebra relazionale

Laboratorio di Basi di Dati

Parte III L algebra relazionale

Il modello relazionale

Dichiarazione degli schemi in SQL DDL 1

Basi di dati e Relazioni

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi

Interrogazioni nidificate

Basi di da' Il modello relazionale. Anna Monreale Università di Pisa

Dati una relazione r(x) e un sottoinsieme Y di X, la proiezione di r su Y si indica con

FONDAMENTI DI INFORMATICA 1

Basi di Dati. Definizione del Modello Concettuale dei Dati: Concetti Fondamentali

Il linguaggio SQL: DDL di base

Fondamenti di Teoria delle Basi di Dati

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi

SQL: "storia" 31/05/2006 2

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Basi di dati: appello 14/07/06

Linguaggi per Basi di Dati - 1. Algebra Relazionale. Algebra Relazionale. Linguaggi per Basi di Dati - 2. Operatori Insiemistici.

Aggiornamenti e Interrogazioni

Sommario FONDAMENTI DI INFORMATICA 1. Sistemi informatici e sistemi informativi. Informazioni e dati BASI DI DATI

DataBase Management System - DBMS

Model o relazionale 1

Basi di dati I 8 settembre 2011 Tempo a disposizione: un ora e trenta minuti. Libri chiusi.

Basi di dati 8 novembre 2010 Prova parziale Compito A

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

Fondamenti di Informatica A. A / 1 9

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

IL MODELLO RELAZIONALE

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Stringhe di caratteri

Sistemi di Elaborazione delle Informazioni (C.I. 15) Basi di dati Introduzione teorica

Corso di Informatica Linguaggio SQL prima parte

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Transcript:

Algebra Relazionale Concetti Fondamentali

Introduzione La Base di Dati di Esempio Algebra Relazionale selezione, proiezione prodotto cartesiano, join unione, intersezione, differenza ridenominazioni Forma Standard

SQL Integra linguaggi per scopi diversi: DDL, DCL, DML Linguaggio di Definizione (DDL) Creare la base di dati e le tabelle (schema) Linguaggio di Controllo (DCL) Creare utenti e autorizzazioni Linguaggio di Manipolazione (DML) Inserire, cancellare, modificare le ennuple Interrogare la base di dati

DDL, DCL concettualmente semplici DML aggiornamenti: concettualmente semplice interrogazioni: complesso Lavorare con oggetti inconsueti le tabelle algebra su tabelle; analogo: algebra sui reali

Algebra per Tabelle insieme di operatori che applicati a tabelle restituiscono tabelle analogo: y+3, x-2 espressioni analogo: z=(y+3)-2 sintassi astratta semantica operazionale astratta

Professori codice, nome, qualifica, facoltà numeri di telefono Studenti matricola, nome, tipo di corso (ciclo): laurea tr., laurea spec. relatore della tesi Corsi codice, titolo, docente, ciclo Esami studente, voto, lode, corso Tutorato Studentesco studente tutore, studente tutorato

TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); TABLE Studenti ( matr integer PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod) ); TABLE Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) ); TABLE Tutorato ( studente integer REFERENCES Studenti(matr), tutor integer REFERENCES Studenti(matr), PRIMARY KEY (studente,tutor)); TABLE Esami ( studente integer REFERENCES Studenti(matr) ON DELETE cascade ON UPDATE cascade, corso char(3) REFERENCES Corsi(cod), voto integer, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), PRIMARY KEY (studente, corso)); TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero));

Professori cod cognome nome Francesco qualifica ordinario facolta Ingegneria CV Vieri Christian associato Scienze Del Piero Alessandro supplente Studenti matr 111 cognome Rossi nome Mario ciclo anno 1 relatore 222 Neri Paolo 2 333 Rossi Maria 1 444 Pinco Palla 3 77777 Bruno Pasquale laurea sp. 1 88888 Pinco Pietro laurea sp. 1 CV Corsi cod PR1 titolo Programmazione I ciclo docente ASD Algoritmi e Str. Dati CV IN Informatica Teorica laurea sp.

88888 444 88888 333 77777 222 77777 111 tutor studente Tutorato true 30 IN 88888 false 30 PR1 88888 false 28 ASD 88888 false 20 ASD 77777 false 21 PR1 77777 24 30 27 voto false IN 111 true false lode ASD 222 PR1 111 corso studente Esami 338123456 0971205363 0971205227 VC 347123456 0971205145 numero professore Numeri

Collezione di operatori applicati a tabelle risultato = ancora tabelle Espressioni composizione di operatori applicati a tabelle Assegnazioni consentono di assegnare ad un nuova tabella il risultato di un espressione

Attenzione lavoreremo con due tipi di tabelle: della BD e temporanee Tabelle originali della base di dati con schema completo di vincoli Tabelle temporanee risultato di interrogazioni dell algebra per queste tabelle non viene definito uno schema vero e proprio ereditano parte dello schema (attributi e tipi) dall interrogazione di cui sono il risultato

Operatori principali selezione proiezione prodotto cartesiano e join unione, intersezione e differenza ridenominazione

Funzione serve per selezionare alcune delle ennuple di una tabella scartando le altre sulla base di una condizione Esempio Estrarre dalla base di dati una tabella, StudentiTriennio, contenente i dati degli studenti della laurea triennale

Studenti matr 111 cognome Rossi nome Mario ciclo anno 1 relatore 222 Neri Paolo 2 333 Rossi Maria 1 444 Pinco Palla 3 77777 Bruno Pasquale laurea sp. 1 88888 Pinco Pietro laurea sp. 1 CV condizione: Studenti.ciclo= StudentiTriennio matr cognome nome ciclo anno 111 Rossi Mario 1 relatore 222 Neri Paolo 2 333 Rossi Maria 1 444 Pinco Palla 3

Operatore unario ( monadico ) condizione sui valori degli attributi Condizione: espressione booleana operandi: valori degli attributi della tabella operatori di confronto, operatori booleani Sintassi: σ condizione (R) StudentiTriennio =σ (Studenti) ciclo=

Studenti matr 111 cognome Rossi nome Mario ciclo anno 1 relatore 222 Neri Paolo 2 333 Rossi Maria 1 444 Pinco Palla 3 77777 Bruno Pasquale laurea sp. 1 88888 Pinco Pietro laurea sp. 1 CV condizione: ciclo= AND anno > 1 Risultato matr cognome nome ciclo anno 222 Neri relatore Paolo 2 444 Pinco Palla 3 Risultato = σ ciclo= AND anno>1 (Studenti)

Schema del risultato attributi e tipi della tabella originale Istanza del risultato ennuple della tabella i cui valori soddisfano la condizione cardinalità minore o uguale rispetto alla tabella originale

Nota sullo schema si tratta di una tabella temporanea i nomi (e i tipi) degli attributi sono ereditati dalle tabelle della base di dati TABLE StudentiTriennio ( Studenti.matr integer, Studenti.cognome varchar(20), Studenti.nome varchar(20), Studenti.ciclo char(20), Studenti.anno integer, Studenti.relatore char(4)); TABLE StudentiTriennio ( matr integer, Studenti.cognome varchar(20), Studenti.nome varchar(20), Studenti.ciclo char(20), anno integer, relatore char(4));

Funzione estrarre alcune delle colonne di una tabella Esempio Estrarre l elenco dei nomi e i cognomi degli studenti TABLE ElencoNomi ( Studenti.cognome varchar(20), Studenti.nome varchar(20), );

Studenti matr 111 cognome Rossi nome Mario ciclo anno 1 relatore 222 Neri Paolo 2 333 Rossi Maria 1 444 Pinco Palla 3 77777 Bruno Pasquale laurea sp. 1 88888 Pinco Pietro laurea sp. 1 CV ElencoNomi cognome nome Rossi Mario Neri Paolo Rossi Maria Pinco Palla Bruno Pasquale Pinco Pietro

Operatore unario lista di attributi della tabella Sintassi π lista attributi (R) ElencoNomi = π cognome, nome (Studenti)

Schema del risultato attributi dello schema originale su cui si effettua la proiezione Istanza del risultato restrizione ( proiezione ) delle ennuple originali agli attributi specificati ATTENZIONE se nel risultato non sopravvivono chiavi dello schema originale possono esserci duplicati

Studenti matr 111 cognome Rossi nome Mario ciclo anno 1 relatore 222 Neri Paolo 2 333 Rossi Maria 1 444 Pinco Palla 3 77777 Bruno Pasquale laurea sp. 1 88888 Pinco Pietro laurea sp. 1 CV Risultato cognome anno Rossi 1 Risultato = π cognome, anno (Studenti) Neri 2 Rossi 1 Pinco 3 Bruno 1 Pinco 1 ennuple identiche (duplicati) NOTA: ulteriori duplicati se Risultato = (Studenti) π cognome

Finora operatori unari lavorano sui dati di un unica tabella In realtà è nella natura del modello relazionale frammentare i dati tra le tabelle molto spesso è necessario correlare dati provenienti da tabelle diverse è possibile utilizzare il prodotto cartesiano

Esempio Generare la tabella ProfessoriENumeri contenente nomi, cognomi e numeri dei prof. TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); TABLE ProfessoriENumeri ( Professori.cognome varchar(20), Professori.nome varchar(20), numero char(9));

Numeri Professori professore numero 0971205145 cod cognome nome qualifica facolta 347123456 Francesco ordinario Ingegneria VC 0971205227 CV Vieri Christian associato Scienze 0971205363 Del Piero Alessandro supplente 338123456 1 Passo: Prodotto Cartesiano TabellaA = Professori X Numeri cod cognome nome qualifica facolta professore numero Francesco ordinario Ingegneria 0971205145 Francesco ordinario Ingegneria 347123456 Francesco ordinario Ingegneria VC 0971205227 Francesco ordinario Ingegneria 0971205363 Francesco ordinario Ingegneria 338123456 CV Vieri Christian associato Scienze 0971205145 CV Vieri Christian associato Scienze 347123456 Del Piero Alessandro supplente 338123456

338123456 supplente Alessandro Del Piero 0971205145 Scienze associato Christian Vieri CV Ingegneria Ingegneria Ingegneria Ingegneria Ingegneria facolta VC professore 338123456 ordinario Francesco 0971205363 ordinario Francesco Francesco Francesco Francesco nome 0971205227 ordinario ordinario ordinario qualifica 347123456 0971205145 numero cognome cod TabellaA Scienze Ingegneria Ingegneria facolta VC professore 338123456 supplente Alessandro Del Piero 0971205363 supplente Alessandro Del Piero Christian Francesco Francesco nome 0971205227 associato Vieri CV ordinario ordinario qualifica 347123456 0971205145 numero cognome cod 2 Passo: Selezione TabellaB = σ cod=professore (TabellaA)

Tabella B cod cognome nome qualifica facolta professore numero Francesco ordinario Ingegneria 0971205145 Francesco ordinario Ingegneria 347123456 CV Vieri Christian associato Scienze VC 0971205227 Del Piero Alessandro supplente 0971205363 Del Piero Alessandro supplente 338123456 3 Passo: Proiezione ProfessoriENumeri = π cognome,nome,numero (TabellaB) cognome Vieri Del Piero Del Piero nome Francesco Francesco Christian Alessandro Alessandro numero 0971205145 347123456 0971205227 0971205363 338123456

In sintesi TabellaA = TabellaB = Professori X Numeri σ cod=professore ProfessoriENumeri = π (TabellaA) cognome, nome, numero (TabellaB) ProfessoriENumeri = π ( cognome, nome, numero σ ( cod=professore Professori X Numeri ) ) )

Operatore binario ( diadico ) è il primo operatore che consente di mettere assieme dati provenienti da tabelle diverse Sintassi R X S

Schema del risultato unione degli attributi (e relativi tipi) Istanza del risultato tutte le ennuple ottenute concatenando ennuple delle due tabelle indiscriminatamente (in tutti i modi possibili) cardinalità pari al prodotto delle cardinalità

Prodotto cartesiano consente di correlare dati di tabelle diverse ma genera risultati di grandi dimensioni es: tabelle di 1000 ennuple > 1 mil. di ennuple su cui poi bisogna effettuare una selezione Sarebbe opportuno avere un operatore che consente di fare la correlazione verificando contestualmente la condizione

Numeri Professori professore numero 0971205145 cod cognome nome qualifica facolta 347123456 Francesco ordinario Ingegneria VC 0971205227 VC Vieri Christian associato Scienze 0971205363 Del Piero Alessandro supplente 338123456 I Passo: Join TabellaA = Professori cod=professore Numeri cod VC cognome Vieri nome qualifica facolta professore numero Francesco ordinario Ingegneria 0971205145 Francesco ordinario Ingegneria 347123456 Christian associato Scienze VC 0971205227 Del Piero Alessandro supplente 0971205363 Del Piero Alessandro supplente 338123456

Tabella A cod cognome nome qualifica facolta professore numero Francesco ordinario Ingegneria 0971205145 Francesco ordinario Ingegneria 347123456 CV Vieri Christian associato Scienze VC 0971205227 Del Piero Alessandro supplente 0971205363 Del Piero Alessandro supplente 338123456 II Passo: Proiezione ProfessoriENumeri=πcognome,nome,numero (TabellaA ) cognome Vieri Del Piero Del Piero nome Francesco Francesco Christian Alessandro Alessandro numero 0971205145 347123456 0971205227 0971205363 338123456

In sintesi TabellaA = Professori cod=professore Numeri ProfessoriENumeri = π cognome, nome, numero (TabellaA ) ProfessoriENumeri = π ( cognome, nome, numero Professori cod=professore Numeri )

Operatore binario ( diadico ) Sintassi R condizione S Condizione AND di condizioni semplici attributo di R = attributo di S i due attributi devono essere dello stesso tipo

Schema del risultato unione degli attributi e relativi tipi Istanza del risultato: ennuple ottenute concatenando ennuple di R ed ennuple di S, tali che soddisfano la condizione Equivalente a prodotto cartesiano e selezione: R condizione S = σ condizione (R X S) Attenzione: semantica operazionale diversa

Esempio Matricola e cognome degli studenti che hanno sostenuto l esame di informatica teorica Richiede di correlare tre tabelle matricola di Studenti e studente di Esami cod di Corso e corso di Esami Due condizioni di join

TABLE Studenti ( TABLE Esami ( matr integer PRIMARY KEY, studente integer cognome varchar(20) NOT NULL, REFERENCES Studenti(matr) nome varchar(20) NOT NULL, corso char(3) ciclo char(20), REFERENCES Corsi(cod), anno integer, voto integer, relatore char(4) lode bool, REFERENCES Professori(cod)); PRIMARY KEY (studente, corso)); StudentiEsami = Studenti matr=studente Esami TABLE StudentiEsami ( matr integer, cognome varchar(20), nome varchar(20), ciclo char(20), anno integer, relatore char(4) studente integer, corso char(3), voto integer, lode bool);

TABLE StudentiEsami ( matr integer, cognome varchar(20), nome varchar(20), Studenti.ciclo char(20), anno integer, relatore char(4) studente integer, corso char(3), voto integer, lode bool); StudentiEsamiCorsi = StudentiEsami corso=cod Corsi TABLE Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod)); TABLE StudentiEsamiCorsi ( matr integer, cognome varchar(20), nome varchar(20), Studenti.ciclo char(20), anno integer, relatore char(4) studente integer, corso char(3), voto integer, lode bool cod char(3), titolo varchar(20), Corso.ciclo char(20), docente char(4));

StudentiEsamiCorsi matr cognome nome studente corso voto cod titolo 111 Rossi Mario 111 PR1 27 PR1 Progr... 222 Neri Paolo 222 ASD 30 ASD Algorit 111 Rossi Mario 111 IN 24 IN Inform 77777 Bruno Pasquale 77777 PR1 21 PR1 Progr 77777 Bruno Pasquale 77777 ASD 20 ASD Algorit 88888 Pinco Pietro 88888 ASD 28 ASD Algorit 88888 Pinco Pietro 88888 PR1 30 PR1 Progr 88888 Pinco Pietro 88888 IN 30 IN Inform dalla tabella Studenti dalla tabella Esami dalla tabella Corsi Risultato = π matr, cognome (σ titolo= Inform. t. (StudentiEsamiCorsi)) Risultato matr 111 88888 cognome Rossi Pinco

StudentiEsami = Studenti matr=studente Esami StudentiEsamiCorsi = StudentiEsami cod=corso Corsi StudentiEsamiCorsi = (Studenti matr=studente Esami) cod=corso Corsi il join è associativo StudentiEsamiCorsi = Studenti matr=studente (Esami cod=corso Corsi) StudentiEsamiCorsi = Studenti matr=studente Esami cod=corso Corsi

In sintesi: StudentiEsami = Studenti matr=studente Esami StudentiEsamiCorsi = StudentiEsami cod=corso Corsi Risultato = π matr, cognome ( σ titolo= Inform. t. (StudentiEsamiCorsi)) Risultato = π matricola, cognome ( σ titolo= Inform. t. ( Studenti matr=studente Esami cod=corso Corsi ))

Operatori fondamentali visti fin qui: Unari selezione, σ condizione (R) proiezione, π attributi (R) Binari prodotto cartesiano, R x S join, R condizione S