La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

G. Mecca – – Università della Basilicata Basi di Dati Algebra Relazionale Concetti Fondamentali versione 2.0 Questo lavoro è concesso in.

Presentazioni simili


Presentazione sul tema: "G. Mecca – – Università della Basilicata Basi di Dati Algebra Relazionale Concetti Fondamentali versione 2.0 Questo lavoro è concesso in."— Transcript della presentazione:

1 G. Mecca – – Università della Basilicata Basi di Dati Algebra Relazionale Concetti Fondamentali versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

2 2 G. Mecca - - Basi di Dati Concetti Fondamentali m Introduzione m La Base di Dati di Esempio m Algebra Relazionale selezione, proiezione prodotto cartesiano, join unione, intersezione, differenza ridenominazioni m Forma Standard Algebra Relazionale >> Sommario

3 3 G. Mecca - - Basi di Dati Introduzione m SQL m Linguaggio di Definizione (DDL) Creare la base di dati e le tabelle (schema) m Linguaggio di Controllo (DCL) Creare utenti e autorizzazioni m Linguaggio di Manipolazione (DML) Inserire, cancellare, modificare le ennuple Interrogare la base di dati Algebra Relazionale >> Concetti Fondamentali

4 4 G. Mecca - - Basi di Dati Introduzione m DDL, DCL concettualmente semplici m DML aggiornamenti: concettualmente semplice interrogazioni: complesso m Lavorare con oggetti inconsueti le tabelle algebra su tabelle; analogo: algebra sui reali Algebra Relazionale >> Concetti Fondamentali

5 5 G. Mecca - - Basi di Dati Introduzione m 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; analogo: semantica operazionale astratta analogo: somme per addizioni di unità Algebra Relazionale >> Concetti Fondamentali w= 3x y – 3

6 6 G. Mecca - - Basi di Dati Introduzione m Algebra Relazionale definita da Codd nellarticolo sul modello lontana dallSQL sotto molti aspetti m Algebra dei DBMS Relazionali operatori attraverso cui vengono implementate le interrogazioni SQL alla base delle ottimizzazioni m Presenteremo la seconda Algebra Relazionale >> Concetti Fondamentali

7 7 G. Mecca - - Basi di Dati Base di Dati dei Corsi di Informatica m Professori codice, nome, qualifica, facoltà numeri di telefono m Studenti matricola, nome, tipo di corso (ciclo): laurea tr., laurea spec. relatore della tesi m Corsi codice, titolo, docente, ciclo m Esami studente, voto, lode, corso m Tutorato Studentesco studente tutore, studente tutorato Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio

8 8 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio 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 Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); 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 Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) ); TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero));

9 9 G. Mecca - - Basi di Dati Base di Dati dei Corsi di Informatica m Una rappresentazione grafica dello schema relazionale (stereotipi di UML) ogni tabella è un rettangolo con un nome e la lista degli attributi le chiavi primarie sono indicate con PK le chiavi esterne sono indicate con FK i vincoli di riferimento sono indicati da archi tra le tabelle (utile per visualizzarli immediatamente) Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio

10 10 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio TutoratoT studente INTEGERPK, FK tutor INTEGERPK, FK StudentiT matr INTEGERPK cognome VARCHAR(20) nome VARCHAR(20) ciclo CHAR(20) anno INTEGER relatore CHAR(4)FK ProfessoriT cod CHAR(4)PK cognome VARCHAR(20) nome VARCHAR(20) qualifica CHAR(15) facolta CHAR(10) EsamiT corso CHAR(3)PK, FK studente INTEGERPK, FK voto INTEGER lode BOOL CorsiT codice CHAR(3)PK titolo VARCHAR(20) ciclo CHAR(20) docente CHAR(4)FK NumeriT numero CHAR(9)PK professore CHAR(4)PK, FK

11 11 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria CVVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti codtitolociclodocente PR1Programmazione Ilaurea tr.FT ASDAlgoritmi e Str. Datilaurea tr.CV INFTInformatica Teoricalaurea sp.ADP Corsi

12 12 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio studentetutor Tutorato studentecorsovotolode 111PR127false 222ASD30true 111INFT24false 77777PR121false 77777ASD20false 88888ASD28false 88888PR130false 88888INFT30true Esami professorenumero FT FT VC ADP ADP Numeri

13 13 G. Mecca - - Basi di Dati Base di Dati dei Corsi di Informatica m Nota nella base di dati vengono utilizzati ripetutamente codici alfanumerici leggibilità dellesempio (es: FT, PR1) in generale è meglio adottare come chiavi primarie codici interi maggiore compattezza e migliori prestazioni Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio

14 14 G. Mecca - - Basi di Dati Algebra Relazionale m Collezione di operatori applicati a tabelle che producono tabelle m Espressioni composizione di operatori applicati a tabelle m Assegnazioni consentono di assegnare ad un nuova tabella il risultato di unespressione Algebra Relazionale >> Concetti Fondamentali >> Algebra

15 15 G. Mecca - - Basi di Dati Algebra Relazionale m Attenzione lavoreremo con due tipi di tabelle m Tabelle originali della base di dati con schema completo di vincoli m Tabelle temporanee risultato di interrogazioni dellalgebra per queste tabelle non viene definito uno schema vero e proprio ereditano parte dello schema (attributi e tipi) dallinterrogazione di cui sono il risultato Algebra Relazionale >> Concetti Fondamentali >> Algebra

16 16 G. Mecca - - Basi di Dati Algebra Relazionale m Operatori principali selezione proiezione prodotto cartesiano e join unione, intersezione e differenza ridenominazione m Terminologia ispirata allanalogia ennuple = vettori Algebra Relazionale >> Concetti Fondamentali >> Algebra

17 17 G. Mecca - - Basi di Dati Selezione m Funzione serve per selezionare alcune delle ennuple di una tabella scartando le altre sulla base di una condizione m Esempio Estrarre dalla base di dati una tabella, StudentiTriennio, contenente i dati degli studenti della laurea triennale Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione

18 18 G. Mecca - - Basi di Dati Studenti della laurea triennale Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione Pietro Pasquale Palla Maria Paolo Mario nome CV1laurea sp.Pinco88888 FT1laurea sp.Bruno77777 FT3laurea tr.Pinco anno nulllaurea tr.Rossi333 laurea tr. ciclo nullNeri222 nullRossi111 relatorecognomematr Studenti StudentiTriennio nomeannociclorelatorecognomematr Mario1laurea tr.nullRossi111Paolo2laurea tr.nullNeri222Maria1nulllaurea tr.Rossi333PallaFT3laurea tr.Pinco444 condizione: Studenti.ciclo=laurea tr.

19 19 G. Mecca - - Basi di Dati Selezione: Sintassi m Operatore unario (monadico) condizione sui valori degli attributi m Condizione: espressione booleana operandi: valori degli attributi della tabella operatori di confronto, operatori booleani m Sintassi: Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione condizione (R) ciclo=laurea tr. (Studenti) StudentiTriennio =

20 20 G. Mecca - - Basi di Dati matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti della laurea tr. di anni successivi al I Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione Studenti Risultato nomeannociclorelatorecognomematr Paolo2nulllaurea tr.Neri222PallaFT3laurea tr.Pinco444 condizione: ciclo=laurea tr. AND anno > 1 ciclo=laurea tr. AND anno>1 (Studenti) Risultato =

21 21 G. Mecca - - Basi di Dati Selezione: Semantica m Schema del risultato attributi e tipi della tabella originale m Istanza del risultato ennuple della tabella i cui valori soddisfano la condizione cardinalità minore o uguale rispetto alla tabella originale Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione

22 22 G. Mecca - - Basi di Dati Selezione: Semantica m Nota sullo schema si tratta di una tabella temporanea i nomi (e i tipi) degli attributi sono ereditati dalle tabelle della base di dati Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Selezione 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));

23 23 G. Mecca - - Basi di Dati Proiezione m Funzione estrarre alcune delle colonne di una tabella m Esempio Estrarre lelenco dei nomi e i cognomi degli studenti Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione TABLE ElencoNomi ( Studenti.cognome varchar(20), Studenti.nome varchar(20), );

24 24 G. Mecca - - Basi di Dati matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Cognomi e Nomi degli Studenti Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione Studenti PietroPincoPasqualeBrunoPallaPincoMariaRossiPaoloNeriMarioRossi ElencoNomi nomecognome

25 25 G. Mecca - - Basi di Dati Proiezione: Sintassi m Operatore unario lista di attributi della tabella m Sintassi Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione lista attributi (R) cognome, nome (Studenti) ElencoNomi =

26 26 G. Mecca - - Basi di Dati Proiezione: Semantica m Schema del risultato attributi dello schema originale su cui si effettua la proiezione m Istanza del risultato restrizione (proiezione) delle ennuple originali agli attributi specificati m ATTENZIONE se nel risultato non sopravvivono chiavi dello schema originale possono esserci duplicati Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione

27 27 G. Mecca - - Basi di Dati Cognomi e Anni di Corso degli Studenti Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Proiezione Pietro Pasquale Palla Maria Paolo Mario nome CV1laurea sp.Pinco88888 FT1laurea sp.Bruno77777 FT3laurea tr.Pinco anno nulllaurea tr.Rossi333 laurea tr. ciclo nullNeri222 nullRossi111 relatorecognomematr Studenti Pinco1Bruno1Pinco3Rossi1Neri2Rossi1 Risultato cognomeanno cognome, anno (Studenti) Risultato = ennuple identiche (duplicati) NOTA: ulteriori duplicati se cognome (Studenti) Risultato =

28 28 G. Mecca - - Basi di Dati Prodotto Cartesiano m Finora operatori unari lavorano sui dati di ununica tabella m 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 Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart.

29 29 G. Mecca - - Basi di Dati Prodotto Cartesiano m Esempio Generare la tabella ProfessoriENumeri contenente nomi, cognomi e numeri dei prof. Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. 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));

30 30 G. Mecca - - Basi di Dati Professori e Numeri Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria CVVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori professorenumero FT FT VC ADP ADP Numeri ADPnullsupplenteAlessandroDel PieroADP FTScienzeassociatoChristianVieriCV FTScienzeassociatoChristianVieriCV…………………IngegneriaADP ordinarioFrancescoTottiFTIngegneriaADP ordinarioFrancescoTottiFTIngegneriaVCFrancesco ordinarioTottiFTIngegneriaFTFrancescoordinario TottiFTIngegneriaFTFrancescoordinario TottiFTfacoltaprofessorenomequalificanumerocognomecod I Passo: Prodotto Cartesiano TabellaA = Professori X Numeri

31 31 G. Mecca - - Basi di Dati Professori e Numeri Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart ADPnullsupplenteAlessandroDel PieroADP FTScienzeassociatoChristianVieriCV … Ingegneria facolta … ADP VC FT professore …………… ordinarioFrancescoTottiFT ordinarioFrancescoTottiFT Francesco nome ordinarioTottiFT ordinario qualifica TottiFT TottiFT numerocognomecod TabellaA null Scienze Ingegneria facolta ADP VC FT professore supplenteAlessandroDel PieroADP supplenteAlessandroDel PieroADP Christian Francesco nome associatoVieriCV ordinario qualifica TottiFT TottiFT numerocognomecod II Passo: Selezione TabellaB = cod=professore (TabellaA)

32 32 G. Mecca - - Basi di Dati Professori e Numeri Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. null Scienze Ingegneria facolta ADP VC FT professore supplenteAlessandroDel PieroADP supplenteAlessandroDel PieroADP Christian Francesco nome associatoVieriCV ordinario qualifica TottiFT TottiFT numerocognomecod III Passo: Proiezione ProfessoriENumeri = cognome,nome,numero (TabellaB) Tabella B AlessandroDel Piero AlessandroDel Piero Christian Francesco nome Vieri Totti Totti numerocognome

33 33 G. Mecca - - Basi di Dati Professori e Numeri m In sintesi Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart. Professori X NumeriTabellaA = cod=professore (TabellaA) TabellaB = cognome, nome, numero (TabellaB) ProfessoriENumeri = cognome, nome, numero ( ProfessoriENumeri = cod=professore ( Professori X Numeri ))

34 34 G. Mecca - - Basi di Dati Prodotto Cartesiano: Sintassi m Operatore binario (diadico) è il primo operatore che consente di mettere assieme dati provenienti da tabelle diverse m Sintassi R X S Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart.

35 35 G. Mecca - - Basi di Dati Prodotto Cartesiano: Semantica m Schema del risultato unione degli attributi (e relativi tipi) m Istanza del risultato tutte le ennuple ottenute concatenando ennuple delle due tabelle indiscriminatamente (in tutti i modi possibili) cardinalità pari al prodotto delle cardinalità Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart.

36 36 G. Mecca - - Basi di Dati Join m 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 m Sarebbe opportuno avere un operatore che consente di fare la correlazione verificando contestualmente la condizione Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Prodotto Cart.

37 37 G. Mecca - - Basi di Dati Professori e Numeri: Alternativa Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria VCVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori professorenumero FT FT VC ADP ADP Numeri nullADP supplenteAlessandroDel PieroADPnullADP supplenteAlessandroDel PieroADPScienzeVCChristian associatoVieriVCIngegneriaFTFrancescoordinario TottiFTIngegneriaFTFrancescoordinario TottiFTfacoltaprofessorenomequalificanumerocognomecod I Passo: Join TabellaA = Professori cod=professore Numeri

38 38 G. Mecca - - Basi di Dati Professori e Numeri Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join null Scienze Ingegneria facolta ADP VC FT professore supplenteAlessandroDel PieroADP supplenteAlessandroDel PieroADP Christian Francesco nome associatoVieriCV ordinario qualifica TottiFT TottiFT numerocognomecod II Passo: Proiezione ProfessoriENumeri= cognome,nome,numero (TabellaA) Tabella A AlessandroDel Piero AlessandroDel Piero Christian Francesco nome Vieri Totti Totti numerocognome

39 39 G. Mecca - - Basi di Dati Professori e Numeri m In sintesi Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join cognome, nome, numero (TabellaA) ProfessoriENumeri = Professori cod=professore NumeriTabellaA = cognome, nome, numero ( ProfessoriENumeri = Professori cod=professore Numeri)

40 40 G. Mecca - - Basi di Dati Join: Sintassi m Operatore binario (diadico) m Sintassi m Condizione AND di condizioni semplici attributo di R = attributo di S i due attributi devono essere dello stesso tipo Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join R condizione S

41 41 G. Mecca - - Basi di Dati Join: Semantica m Schema del risultato unione degli attributi e relativi tipi m Istanza del risultato: ennuple ottenute concatenando ennuple di R ed ennuple di S, tali che soddisfano la condizione m Equivalente a pr. cartesiano e selezione: Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join R condizione S = condizione (S X R) Attenzione: semantica operazionale diversa

42 42 G. Mecca - - Basi di Dati Join Complessi m Esempio Matricola e cognome degli studenti che hanno sostenuto lesame di informatica teorica m Richiede di correlare tre tabelle matr di Studenti e studente di Esami cod di Corso e corso di Esami m Due condizioni di join Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join

43 43 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join 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 Esami ( studente integer REFERENCES Studenti(matr) corso char(3) REFERENCES Corsi(cod), voto integer, lode bool, PRIMARY KEY (studente, corso)); 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); Esame di Informatica Teorica StudentiEsami = Studenti matr=studente Esami

44 44 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join 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); 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)); Esame di Informatica Teorica StudentiEsamiCorsi = StudentiEsami corso=cod Corso

45 45 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join matrcognomenome…studentecorsovoto…codtitolo… 111RossiMario…111PR127…PR1Progr… NeriPaolo…222ASD30…ASDAlgorit…… 111RossiMario…111INFT24…INFTInform…… 77777BrunoPasquale…77777PR121…PR1Progr…… 77777BrunoPasquale…77777ASD20…ASDAlgorit…… 88888PincoPietro…88888ASD28…ASDAlgorit…… 88888PincoPietro…88888PR130…PR1Progr…… 88888PincoPietro…88888INFT30…INFTInform…… StudentiEsamiCorsi Risultato = matricola, cognome ( titolo=Inform. t. (StudentiEsamiCorsi)) matrcognome 111Rossi 88888Pinco Risultato Esame di Informatica Teorica dalla tabella Studentidalla tabella Esamidalla tabella Corsi

46 46 G. Mecca - - Basi di Dati Join Complessi Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join il join è associativo StudentiEsamiCorsi = Studenti matr=studente ( Esami cod=corso Corsi) StudentiEsamiCorsi = (Studenti matr=studente Esami) cod=corso Corsi StudentiEsamiCorsi = Studenti matr=studente Esami cod=corso Corsi StudentiEsami = Studenti matr=studente Esami StudentiEsamiCorsi = StudentiEsami cod=corso Corsi

47 47 G. Mecca - - Basi di Dati Esame di Infomatica Teorica m In sintesi: Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Join StudentiEsami = Studenti matr=studente Esami StudentiEsamiCorsi = StudentiEsami cod=corso Corsi Risultato = matricola, cognome ( titolo=Inform. t. (StudentiEsamiCorsi)) Risultato = matricola, cognome ( titolo=Inform. t. ( Studenti matr=studente Esami cod=corso Corsi ))

48 48 G. Mecca - - Basi di Dati Algebra Relazionale m Finora abbiamo visto gli operatori fondamentali m Unari selezione, condizione (R) proiezione, attribut i (R) m Binari prodotto cartesiano, R x S Algebra Relazionale >> Concetti Fondamentali >> Algebra join, R condizione S

49 49 G. Mecca - - Basi di Dati Algebra Relazionale m Altri operatori importanti m Operatori insiemistici unione intersezione differenza m Ridenominazione meno importante (ha solo funzioni di leggibilità) Algebra Relazionale >> Concetti Fondamentali >> Algebra

50 50 G. Mecca - - Basi di Dati Operatori Insiemistici m Funzione le tabelle sono collezioni di ennuple è possibile applicare le operazioni consuete sulle collezioni unione intersezione differenza Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins.

51 51 G. Mecca - - Basi di Dati Operatori Insiemistici m Esempio Cognome e nome di tutte le persone Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. TABLE Studenti ( matr integer PRIMARY KEY, Studenti.cognome varchar(20) NOT NULL, Studenti.nome varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod)); TABLE Professori ( cod char(4) PRIMARY KEY, Professori.cognome varchar(20) NOT NULL, Professori.nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); TABLE Persone ( cognome varchar(20), nome varchar(20));

52 52 G. Mecca - - Basi di Dati Cognome e Nome delle Persone Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Pietro Pasquale Palla Maria Paolo Mario nome CV1laurea sp.Pinco88888 FT1laurea sp.Bruno77777 FT3laurea tr.Pinco anno nulllaurea tr.Rossi333 laurea tr. ciclo nullNeri222 nullRossi111 relatorecognomematr Studenti Professori Alessandro Christian Francesco nome nullsupplenteDel PieroADP associato ordinario qualifica ScienzeVieriCV IngegneriaTottiFT facoltacognomecod Alessandro Christian Francesco nome Del Piero Vieri Totti cognome NomiProfessori = cognome, nome (Professori) Pietro Pasquale Palla Maria Paolo Mario nome Pinco Bruno Pinco Rossi Neri Rossi cognome NomiStudenti = cognome, nome (Studenti)

53 53 G. Mecca - - Basi di Dati Cognome e Nome delle Persone Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Alessandro Christian Francesco nome Del Piero Vieri Totti cognome NomiProfessori Pietro Pasquale Palla Maria Paolo Mario nome Pinco Bruno Pinco Rossi Neri Rossi cognome NomiStudenti Alessandro Christian Francesco nome Del Piero Vieri Totti cognome Pietro Pasquale Palla Maria Paolo Mario Pinco Bruno Pinco Rossi Neri Rossi Persone = NomiProfessori U NomiStudenti

54 54 G. Mecca - - Basi di Dati Operatori Insiemistici: Sintassi m Operatori binari m Sintassi stessi simboli delle operazioni convenzionali su insiemi m Unione: R U S m Intersezione: R S m Differenza: R – S Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins.

55 55 G. Mecca - - Basi di Dati Operatori Insiemistici: Semantica m Si applicano solo in alcuni casi le tabelle R ed S devono avere lo stesso numero di attributi associazione posizionale: gli attributi devono avere ordinatamente lo stesso tipo m Schema del risultato eredita i nomi degli attributi dalla prima tabella Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins.

56 56 G. Mecca - - Basi di Dati Operatori Insiemistici: Semantica m Istanza del risultato unione, intersezione o differenza delle ennuple m Attenzione semantica della differenza: tutti gli elementi del primo membro che non appartengono al secondo esempio: {1, 3, 5} – {3, 7, 9} = {1, 5} Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins.

57 57 G. Mecca - - Basi di Dati Operatori Insiemistici: Semantica m Attenzione dal risultato degli operatori insiemistici vengono eliminati eventuali duplicati passo finale di eliminazione degli eventuali duplicati prodotti m Motivazioni semantica più naturale esistono implementazioni efficienti Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins.

58 58 G. Mecca - - Basi di Dati Operatori Insiemistici: Semantica m Esempio Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Alessandro Christian Palla nome Del Piero Vieri Pinco cognome Pietro Pasquale Palla Maria Paolo Mario nome Pinco Bruno Pinco Rossi Neri Rossi cognome NomiProfessori NomiStudenti Alessandro Christian Palla nome Del Piero Vieri Pinco cognome Pietro Pasquale Maria Paolo Mario Pinco Bruno Rossi Neri Rossi Persone = NomiProfessori U NomiStudenti

59 59 G. Mecca - - Basi di Dati Cognome e Nome delle Persone m In sintesi: NomiProfessori = cognome, nome (Professori) NomiStudenti = cognome, nome (Studenti) Persone = NomiProfessori U NomiStudenti Persone = cognome, nome (Professori) U cognome, nome (Studenti) Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins.

60 60 G. Mecca - - Basi di Dati Cognome e Nome delle Persone m Nota sulla base della semantica è possibile anche StranaTabella = nome, cognome (Professori) U cognome, nome (Studenti) Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Op. Ins. Del Piero Vieri Totti cognome Alex Christian Francesco nome Pietro Pasquale Palla Maria Paolo Mario Pinco Bruno Pinco Rossi Neri Rossi

61 61 G. Mecca - - Basi di Dati Ridenominazione m Funzione consente di cambiare i nomi degli attributi in una tabella temporanea es: cognomePersona, nomePersona m Caratteristiche agisce solo sullo schema non cambia né la cardinalità, né il n. di attributi normalmente si applica solo sul risultato finale (funzione puramente cosmetica) Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Ridenominazione

62 62 G. Mecca - - Basi di Dati Ridenominazione m Sintassi ridenominazioni (R) ridenominazioni: elenco di coppie vecchioNome AS nuovoNome separate da virgole vecchioNome deve essere un attributo di R m Semantica nello schema del risultato ai vecchi nomi sono sostituiti i nuovi Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Ridenominazione

63 63 G. Mecca - - Basi di Dati Cognomi e Nomi delle Persone m In definitiva: Persone = cognome AS cognomePersona, nome AS nomePersona ( cognome, nome (Professori)) U cognome, nome (Studenti) Algebra Relazionale >> Concetti Fondamentali >> Algebra >> Ridenominazione TABLE Persone ( cognomePersona varchar(20), nomePersona varchar(20));

64 64 G. Mecca - - Basi di Dati Forma Standard m Interrogazioni in algebra relazionale risultato dellapplicazione di vari operatori è possibile applicare gli operatori in ordine vario (es: prima selezioni o prima ridenominaz.) m Forma standard nel seguito viene presentata una strategia sistematica per la scrittura di interrogazioni ordine standardizzato di applicazione degli operatori dellalgebra Algebra Relazionale >> Concetti Fondamentali >> Forma Standard

65 65 G. Mecca - - Basi di Dati Forma Standard m Esempio Nome e Cognome dei professori ordinari che non hanno tesisti della laurea triennale m Strategia (a) trovo nome e cognome di tutti i professori ordinari (b) trovo nome e cognome dei professori che hanno tesisti della laurea triennale faccio la differenza tra (a) e (b) Algebra Relazionale >> Concetti Fondamentali >> Forma Standard

66 66 G. Mecca - - Basi di Dati (a) Cognomi e Nomi dei Prof. Ordinari Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Professori Alessandro Christian Francesco nome nullsupplenteDel PieroADP associato ordinario qualifica ScienzeVieriCV IngegneriaTottiFT facoltacognomecod ProfessoriOrdinari = qualifica = Ordinario (Professori) NomiOrdinari = cognome AS cognomeProf, nome AS nomeProf ( cognome, nome (ProfessoriOrdinari)) Francesco nome ordinario qualifica IngegneriaTottiFT facoltacognomecod cognomeProfnomeProf TottiFrancesco

67 67 G. Mecca - - Basi di Dati (b) Cognomi e Nomi di Prof. con Tesi Triennali Algebra Relazionale >> Concetti Fondamentali >> Forma Standard codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria CVVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti ProfessoriConTesisti = Studenti relatore = cod Professori

68 68 G. Mecca - - Basi di Dati (b) Cognomi e Nomi di Prof. con Tesi Triennali Algebra Relazionale >> Concetti Fondamentali >> Forma Standard matrS.cognomeS.nomecicloannorelatoreP.cognomeP.nomequalificafacolta 444PincoPallalaurea tr.3FTTottiFrancescoordinarioIng BrunoPasqualelaurea sp.1FTTottiFrancescoordinarioIng PincoPietrolaurea sp.1CVVieriChristianassociatoSc. ProfessoriConTesisti = Studenti relatore = cod Professori ProfessoriConTesiTriennali = ciclo = laurea tr. (ProfessoriConTesisti) NomiProfConTesiTriennali = cognome AS cognomeProf, nome AS nomeProf ( Professori.cognome, Professori.nome (ProfessoriConTesiTriennali)) cognomeProfnomeProf TottiFrancesco matrS.cognomeS.nomecicloannorelatoreP.cognomeP.nomequalificafacolta 444PincoPallalaurea tr.3FTTottiFrancescoordinarioIng.

69 69 G. Mecca - - Basi di Dati Cognomi e Nomi dei Prof. Ordinari senza Tesi Triennali Algebra Relazionale >> Concetti Fondamentali >> Forma Standard NomiOrdinari = cognome AS cognomeProf, nome AS nomeProf ( cognome, nome ( qualifica = Ordinario ( Professori)) NomiProfConTesiTriennali = cognome AS cognomeProf, nome AS nomeProf ( cognome, nome ( ciclo = laurea tr. ( Studenti relatore = cod Professori ))) cognomeProfnomeProf TottiFrancesco cognomeProfnomeProf TottiFrancesco Risultato = NomiOrdinari – NomiProfConTesiTriennali cognomeProfnomeProf

70 70 G. Mecca - - Basi di Dati Riassumendo Algebra Relazionale >> Concetti Fondamentali >> Forma Standard Risultato = cognome AS cognomeProf, nome AS nomeProf ( cognome, nome ( qualifica = Ordinario ( Professori)) – cognome AS cognomeProf, nome AS nomeProf ( cognome, nome ( ciclo = laurea tr. ( sottointerrogazione n. 1 sottointerrogazione n. 2 operatore insiemistico join selezioni proiezioni ridenominazioni Studenti relatore = cod Professori ))

71 71 G. Mecca - - Basi di Dati Forma Standard m Varie sottointerrogazioni (una o più) correlate con operatori insiemistici m Ciascuna sottointerrogazione prima: eventuali join o prodotti cartesiani poi: eventuali selezioni poi: eventuali proiezioni infine: eventuali ridenominazioni Algebra Relazionale >> Concetti Fondamentali >> Forma Standard

72 72 G. Mecca - - Basi di Dati Forma Standard m Attenzione la forma standard non è necessariamente la più efficiente esempio: anticipare la selezioni Algebra Relazionale >> Concetti Fondamentali >> Forma Standard NomiProfConTesiTriennali = cognome AS cognomeProf, nome AS nomeProf ( cognome, nome ( ciclo = laurea tr. ( Studenti relatore = cod Professori ))

73 73 G. Mecca - - Basi di Dati Forma Standard m Ordine alternativo: Algebra Relazionale >> Concetti Fondamentali >> Forma Standard NomiProfConTesiTriennali = cognome AS cognomeProf, nome AS nomeProf ( cognome, nome ( ciclo = laurea tr. (Studenti) relatore = cod Professori )) esecuzione più efficiente: si eliminano subito le ennuple irrilevanti

74 74 G. Mecca - - Basi di Dati Forma Standard m In realtà è possibile disinteressarsi dellefficienza durante la scrittura delle interrogazioni SQL lutente scrive una interrogazione specificando quali operatori applicare, ma non in quale ordine il DBMS si incarica di effettuare le interrogazioni, trovando lordine di applicazione più efficiente per gli operatori Algebra Relazionale >> Concetti Fondamentali >> Forma Standard

75 75 G. Mecca - - Basi di Dati Forma Standard m Metodo di scrittura delle interrogazioni Stabilire se è necessario utilizzare operatori insiemistici e dividere in sottointerrogazioni Per ogni sottointerrogazione, decidere da quali tabelle prelevare i dati Se le tabelle sono più di una, (strategia a) metterle in prodotto cartesiano oppure (strategia b) metterle in join con le condizioni opportune Algebra Relazionale >> Concetti Fondamentali >> Forma Standard

76 76 G. Mecca - - Basi di Dati Forma Standard m Metodo di scrittura (continua) Scrivere le eventuali selezioni (Strategia a) incluse le condizioni di Join Scrivere le eventuali proiezioni Scrivere le eventuali ridenominazioni finali Rimettere il tutto insieme applicando gli operatori insiemistici Algebra Relazionale >> Concetti Fondamentali >> Forma Standard

77 77 G. Mecca - - Basi di Dati Forma Standard m Suggerimento n.1 dare un nome a ciascun risultato parziale rimettere assieme gli operatori solo alla fine m Suggerimento n.2 tenere traccia dello schema dei risultati parziali generati da ciascun operatore elenco degli attributi (nomi e tipi) aiuta a scrivere le operazioni successive Algebra Relazionale >> Concetti Fondamentali >> Forma Standard

78 78 G. Mecca - - Basi di Dati Concetti Fondamentali m Introduzione m La Base di Dati di Esempio m Algebra Relazionale selezione, proiezione prodotto cartesiano, join unione, intersezione, differenza ridenominazioni m Forma Standard Algebra Relazionale >> Sommario

79 79 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio 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 Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); 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 Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) ); TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero));

80 80 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio TutoratoT studente INTEGERPK, FK tutor INTEGERPK, FK StudentiT matr INTEGERPK cognome VARCHAR(20) nome VARCHAR(20) ciclo CHAR(20) anno INTEGER relatore CHAR(4)FK ProfessoriT cod CHAR(4)PK cognome VARCHAR(20) nome VARCHAR(20) qualifica CHAR(15) facolta CHAR(10) EsamiT corso CHAR(3)PK, FK studente INTEGERPK, FK voto INTEGER lode BOOL CorsiT codice CHAR(3)PK titolo VARCHAR(20) ciclo CHAR(20) docente CHAR(4)FK NumeriT numero CHAR(9)PK professore CHAR(4)PK, FK

81 81 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria CVVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti codtitolociclodocente PR1Programmazione Ilaurea tr.FT ASDAlgoritmi e Str. Datilaurea tr.CV INFTInformatica Teoricalaurea sp.ADP Corsi

82 82 G. Mecca - - Basi di Dati Algebra Relazionale >> Concetti Fondamentali >> La Base di Dati di Esempio studentetutor Tutorato studentecorsovotolode 111PR127false 222ASD30true 111INFT24false 77777PR121false 77777ASD20false 88888ASD28false 88888PR130false 88888INFT30true Esami professorenumero FT FT VC ADP ADP Numeri

83 83 G. Mecca - - Basi di Dati Termini della Licenza m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. m Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare oppure inviare una lettera allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.


Scaricare ppt "G. Mecca – – Università della Basilicata Basi di Dati Algebra Relazionale Concetti Fondamentali versione 2.0 Questo lavoro è concesso in."

Presentazioni simili


Annunci Google