• Non ci sono risultati.

Basi di Dati

N/A
N/A
Protected

Academic year: 2021

Condividi "Basi di Dati"

Copied!
68
0
0

Testo completo

(1)

Basi di Dati

Algebra Relazionale

Concetti Fondamentali

(2)

Concetti Fondamentali

Introduzione

La Base di Dati di Esempio

Algebra Relazionale

 selezione, proiezione

 prodotto cartesiano, join

 unione, intersezione, differenza

 ridenominazioni 

Forma Standard

(3)

Introduzione

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

(4)

Introduzione

DDL, DCL

 concettualmente semplici

DML

 aggiornamenti: concettualmente semplice

 interrogazioni: complesso

Lavorare con oggetti inconsueti

 le tabelle

 algebra su tabelle; analogo: algebra sui reali

(5)

Introduzione

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

(6)

Base di Dati dei Corsi di Informatica

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

(7)

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),

TABLE Numeri (

   professore char(4)

(8)

Alessandro Christian Francesco

nome

null supplente

Del Piero ADP

associato ordinario

qualifica

Scienze Vieri

CV

Ingegneria Totti

FT

facolta cognome

Professori cod

Pietro Pasquale

Palla Maria Paolo Mario nome

CV 1

laurea sp.

Pinco 88888

FT 1

laurea sp.

Bruno 77777

FT 3

laurea tr.

Pinco 444

1 2 1 anno

null laurea tr.

Rossi 333

laurea tr.

laurea tr. 

ciclo

null Neri

222

null Rossi

111

relatore cognome

Studenti matr

laurea sp.

laurea tr.

laurea tr.

ciclo

ADP Informatica Teorica

INFT

CV FT docente

Algoritmi e Str. Dati ASD

Programmazione I PR1

titolo

Corsi cod

(9)

88888 444

88888 333

77777 222

77777 111

tutor studente

Tutorato

false 30

PR1 88888

false 28

ASD 88888

false 20

ASD 77777

false 21

PR1 77777

24 30 27 voto

false INFT

111

true false

lode

ASD 222

PR1 111

corso studente

Esami

338123456 ADP

0971205363 ADP

0971205227 VC

347123456 FT

0971205145 FT

numero professore

Numeri

(10)

Algebra Relazionale

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

(11)

Algebra Relazionale

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

(12)

Algebra Relazionale

Operatori principali

 selezione

 proiezione

 prodotto cartesiano e join

 unione, intersezione e differenza

 ridenominazione

(13)

Selezione

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”

(14)

“Studenti della laurea triennale”

Pietro Pasquale

Palla Maria Paolo Mario nome

CV 1

laurea sp.

Pinco 88888

FT 1

laurea sp.

Bruno 77777

FT 3

laurea tr.

Pinco 444

1 2 1 anno

null laurea tr.

Rossi 333

laurea tr.

laurea tr. 

ciclo

null Neri

222

null Rossi

111

relatore cognome

Studenti matr

StudentiTriennio matr cognome nome ciclo anno relatore

Mario laurea tr.  1 null

Rossi 111

Paolo laurea tr. 2 null

Neri 222

Maria laurea tr. 1 null

Rossi 333

Palla laurea tr. 3 FT

Pinco 444

condizione: Studenti.ciclo=‘laurea tr.’

(15)

Selezione: Sintassi

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)

(16)

Pietro Pasquale

Palla Maria Paolo Mario nome

CV 1

laurea sp.

Pinco 88888

FT 1

laurea sp.

Bruno 77777

FT 3

laurea tr.

Pinco 444

1 2 1 anno

null laurea tr.

Rossi 333

laurea tr.

laurea tr. 

ciclo

null Neri

222

null Rossi

111

relatore cognome

matr

“Studenti della laurea tr. di anni successivi al 1°”

Studenti

Risultato matr cognome nome ciclo anno relatore

Paolo laurea tr. 2 null

Neri 222

Palla laurea tr. 3 FT

Pinco 444

condizione: ciclo=‘laurea tr.’ AND anno > 1

σ (Studenti)

Risultato =

(17)

Selezione: Semantica

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

(18)

Selezione: Semantica

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));

(19)

Proiezione

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), );

(20)

Pietro Pasquale

Palla Maria Paolo Mario nome

CV 1

laurea sp.

Pinco 88888

FT 1

laurea sp.

Bruno 77777

FT 3

laurea tr.

Pinco 444

1 2 1 anno

null laurea tr.

Rossi 333

laurea tr.

laurea tr. 

ciclo

null Neri

222

null Rossi

111

relatore cognome

matr

“Cognomi e Nomi degli Studenti”

Studenti

Pietro Pinco

Pasquale Bruno

Palla Pinco

Maria Rossi

Paolo Neri

Mario Rossi

ElencoNomi cognome nome

(21)

Proiezione: Sintassi

Operatore unario

 lista di attributi della tabella

Sintassi

lista attributi

π (R)

cognome, nome

π (Studenti)

ElencoNomi =

(22)

Proiezione: Semantica

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

(23)

“Cognomi e Anni di Corso degli Studenti”

Pietro Pasquale

Palla Maria Paolo Mario nome

CV 1

laurea sp.

Pinco 88888

FT 1

laurea sp.

Bruno 77777

FT 3

laurea tr.

Pinco 444

1 2 1 anno

null laurea tr.

Rossi 333

laurea tr.

laurea tr. 

ciclo

null Neri

222

null Rossi

111

relatore cognome

Studenti matr

Pinco 3

Rossi 1

Neri 2

Rossi 1

Risultato cognome anno Risultato =

π

cognome, anno (Studenti)

ennuple identiche (duplicati)

(24)

Prodotto Cartesiano

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

(25)

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),

TABLE ProfessoriENumeri (

   Professori.cognome varchar(20),    Professori.nome varchar(20),    numero char(9));

(26)

“Professori e Numeri”

Alessandro Christian Francesco

nome

null supplente

Del Piero ADP

associato ordinario

qualifica

Scienze Vieri

CV

Ingegneria Totti

FT

facolta cognome

cod

Professori

338123456 ADP

0971205363 ADP

0971205227 VC

347123456 FT

0971205145 FT

numero professore

Numeri

347123456 FT

Scienze associato

Christian Vieri

CV

0971205145 FT

Scienze associato

Christian Vieri

CV

Ingegneria ADP 338123456

ordinario Francesco

Totti FT

Ingegneria ADP 0971205363

ordinario Francesco

Totti FT

Ingegneria VC

Francesco ordinario 0971205227

Totti FT

Ingegneria FT

Francesco ordinario 347123456

Totti FT

Ingegneria FT

Francesco ordinario 0971205145

Totti FT

facolta professore

nome qualifica numero

cognome cod

1° Passo: Prodotto Cartesiano       TabellaA = Professori X Numeri

(27)

“Professori e Numeri”

338123456 ADP

null supplente

Alessandro Del Piero

ADP

0971205145 FT

Scienze associato

Christian Vieri

CV

Ingegneria Ingegneria Ingegneria Ingegneria Ingegneria

facolta

ADP ADP VC FT FT professore

338123456 ordinario

Francesco Totti

FT

0971205363 ordinario

Francesco Totti

FT

Francesco Francesco Francesco

nome

0971205227 ordinario

Totti FT

ordinario ordinario qualifica

347123456 Totti

FT

0971205145 Totti

FT

numero cognome

cod

TabellaA

Ingegneria Ingegneria

facolta

FT FT professore

Francesco Francesco

nome

ordinario ordinario qualifica

347123456 Totti

FT

0971205145 Totti

FT

numero cognome

cod

2° Passo: Selezione    TabellaB = 

σ

cod=professore (TabellaA)

(28)

“Professori e Numeri”

null null Scienze Ingegneria Ingegneria

facolta

ADP ADP VC FT FT professore

338123456 supplente

Alessandro Del Piero

ADP

0971205363 supplente

Alessandro Del Piero

ADP

Christian Francesco Francesco

nome

0971205227 associato

Vieri CV

ordinario ordinario qualifica

347123456 Totti

FT

0971205145 Totti

FT

numero cognome

cod

3° Passo: Proiezione ProfessoriENumeri = 

π

cognome,nome,numero (TabellaB) Tabella B

338123456 Alessandro

Del Piero

0971205363 Alessandro

Del Piero

Christian Francesco Francesco

nome

0971205227 Vieri

347123456 Totti

0971205145 Totti

numero cognome

(29)

Professori e Numeri

In sintesi

Professori X Numeri TabellaA =

cod=professore

σ (TabellaA)

TabellaB =

cognome, nome, numero

π (TabellaB)

ProfessoriENumeri =

cognome, nome, numero

π (

ProfessoriENumeri =

cod=professore

σ ( 

(30)

Prodotto Cartesiano: Sintassi

Operatore binario (“diadico”)

 è il primo operatore che consente di mettere assieme dati  provenienti da tabelle diverse

Sintassi

 R X S

(31)

Prodotto Cartesiano: Semantica

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à

(32)

Join

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

(33)

“Professori e Numeri:

Alternativa”

Alessandro Christian Francesco

nome

null supplente

Del Piero ADP

associato ordinario

qualifica

Scienze Vieri

VC

Ingegneria Totti

FT

facolta cognome

cod

Professori

338123456 ADP

0971205363 ADP

0971205227 VC

347123456 FT

0971205145 FT

numero professore

Numeri

null ADP 0971205363

supplente Alessandro

Del Piero ADP

Scienze VC

Christian associato 0971205227

Vieri VC

Ingegneria FT

Francesco ordinario 347123456

Totti FT

Ingegneria FT

Francesco ordinario 0971205145

Totti FT

facolta professore

nome qualifica numero

cognome cod

 I Passo: Join       TabellaA’ = Professori       cod=professore Numeri

(34)

“Professori e Numeri”

null null Scienze Ingegneria Ingegneria

facolta

ADP ADP VC FT FT professore

338123456 supplente

Alessandro Del Piero

ADP

0971205363 supplente

Alessandro Del Piero

ADP

Christian Francesco Francesco

nome

0971205227 associato

Vieri CV

ordinario ordinario qualifica

347123456 Totti

FT

0971205145 Totti

FT

numero cognome

cod

II Passo: Proiezione ProfessoriENumeri=

π

cognome,nome,numero (TabellaA’) Tabella A’

338123456 Alessandro

Del Piero

0971205363 Alessandro

Del Piero

Christian Francesco Francesco

nome

0971205227 Vieri

347123456 Totti

0971205145 Totti

numero cognome

(35)

Professori e Numeri

In sintesi

cognome, nome, numero

π (TabellaA’)

ProfessoriENumeri =

Professori         

cod=professore

 Numeri TabellaA’ =

cognome, nome, numero

π (

ProfessoriENumeri =

Professori        

cod=professore

 Numeri )

(36)

Join: Sintassi

Operatore binario (“diadico”)

Sintassi

Condizione

 AND di condizioni semplici

 attributo di R = attributo di S

 i due attributi devono essere dello stesso tipo

R      

condizione

 S

(37)

Join: Semantica

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:

σ

Attenzione: semantica 

(38)

Join Complessi

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

(39)

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,

“Esame di Informatica Teorica”

StudentiEsami = Studenti        

matr=studente

 Esami

(40)

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),

“Esame di Informatica Teorica”

StudentiEsamiCorsi =   StudentiEsami 

      corso=cod

 

       Corsi

(41)

Inform…

Progr…

Algorit…

Algorit…

Progr…

Inform…

Algorit…

Progr…

titolo

INFT PR1 ASD ASD PR1 INFT ASD PR1

cod

INFT PR1 ASD ASD PR1 INFT ASD PR1

corso

30 30 28 20 21 24 30 27

voto

88888

Pietro Pinco

88888

88888

Pietro Pinco

88888

88888

Pietro Pinco

88888

77777

Pasquale Bruno

77777

77777

Pasquale Bruno

77777

111 222 111

studente

Mario

Rossi 111

Paolo Mario

nome

Neri

222

... 

Rossi 111

cognome

matr

StudentiEsamiCorsi

Risultato = 

π

 matr, cognome (

σ

 titolo=‘Inform. t.’ (StudentiEsamiCorsi))

cognome

Risultato matr

“Esame di Informatica Teorica”

dalla tabella Studenti dalla tabella Esami dalla tabella Corsi

(42)

Join Complessi

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

(43)

“Esame di Infomatica Teorica”

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 ))

(44)

Algebra Relazionale

Operatori fondamentali visti fin qui:

Unari

 selezione, σcondizione(R)

 proiezione, πattributi(R) 

Binari

 prodotto cartesiano, R x S

 join, R         condizione S

  

(45)

Algebra Relazionale

Altri operatori importanti

 Operatori insiemistici

unione

intersezione

differenza

 Ridenominazione

meno importante (ha solo funzioni di leggibilità)

(46)

Operatori Insiemistici

Funzione

 le tabelle sono collezioni (=insiemi) di ennuple

 è possibile applicare le operazioni consuete sulle collezioni

Operazioni di base

 unione 

 intersezione 

 differenza

(47)

Operatori Insiemistici

Esempio

 “Cognome e nome di tutte le persone”

TABLE Studenti (

   matr integer PRIMARY KEY,

   Studenti.cognome varchar(20) NOT NULL,    Studenti.nome varchar(20) NOT NULL,    ciclo char(20),

   anno integer, 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));

(48)

“Cognome e Nome delle Persone”

Pietro Pasquale

Palla Maria Paolo Mario nome

CV 1

laurea sp.

Pinco 88888

FT 1

laurea sp.

Bruno 77777

FT 3

laurea tr.

Pinco 444

1 2 1 anno

null laurea tr.

Rossi 333

laurea tr.

laurea tr. 

ciclo

null Neri

222

null Rossi

111

relatore cognome

matr

Studenti Professori

Alessandro Christian Francesco

nome

null supplente

Del Piero ADP

associato ordinario qualifica

Scienze Vieri

CV

Ingegneria Totti

FT

facolta cognome

cod

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)

(49)

“Cognome e Nome delle Persone”

Alessandro Christian Francesco

nome

Del Piero Vieri Totti cognome

NomiProfessori

Pasquale Palla Maria Paolo Mario nome

Bruno Pinco Rossi Neri Rossi cognome

NomiStudenti AlessandroChristian

Francesco nome

Del Piero Vieri Totti cognome

Pasquale Palla Maria Paolo Mario

Bruno Pinco Rossi Neri Rossi

Persone = 

     NomiProfessori  U  NomiStudenti

(50)

Operatori Insiemistici: Sintassi

Operatori binari

Sintassi

 stessi simboli delle operazioni convenzionali su insiemi

Unione:   R U S

Intersezione:   R   S

Differenza:   R – S 

(51)

Operatori Insiemistici: Semantica

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

N.B.: i nomi degli attributi possono essere anche diversi!

Schema del risultato

 eredita i nomi degli attributi dalla prima tabella

(52)

Operatori Insiemistici: Semantica

Istanza del risultato

 unione, intersezione o differenza delle ennuple

Attenzione

 semantica della differenza: “tutti gli elementi del primo membro che  non appartengono al secondo”

 esempio: {1, 3, 5} – {3, 7, 9} = {1, 5}

(53)

Operatori Insiemistici: Semantica

Attenzione

 dal risultato degli operatori insiemistici vengono eliminati eventuali  duplicati

 passo finale di eliminazione degli eventuali duplicati prodotti

Motivazioni

 semantica più naturale

 esistono implementazioni efficienti

(54)

Operatori Insiemistici: Semantica

Esempio

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

(55)

“Cognome e Nome delle Persone”

In sintesi:

NomiProfessori = 

π

 cognome, nome (Professori) NomiStudenti = 

π

 cognome, nome (Studenti)

Persone = NomiProfessori U NomiStudenti

Persone = 

π

 cognome, nome (Professori) U

π

 cognome, nome (Studenti)

(56)

“Cognome e Nome delle Persone”

Nota

 sulla base della semantica è possibile anche

StranaTabella = 

π nome, cognome (Professori)        U π cognome, nome (Studenti)

Del Piero Vieri Totti cognome

Alex Christian Francesco

nome

Pasquale Palla Maria Paolo Mario

Bruno Pinco Rossi Neri Rossi

(57)

Intersezione / differenza

Elenco degli studenti che hanno omonimi tra i professori

 Intersezione  (Studenti vs. Professori)

Elenco degli studenti che risultano iscritti a Lettere ed  anche a Informatica

 Intersezione   (Tabella iscritti a Lettere, tab. iscritti Informatica)

Elenco dei professori che non hanno omonimi tra gli  studenti

 Differenza   (Professori vs. Studenti)

(58)

Ridenominazione

Funzione

 consente di cambiare i nomi degli attributi in una tabella  temporanea 

es: cognomePersona, nomePersona

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”)

(59)

Ridenominazione

Sintassi

 ρ ridenominazioni (R)

 ridenominazioni: elenco di coppie    vecchioNome AS nuovoNome 

separate da virgole

vecchioNome deve essere un attributo di R

Semantica

 nello schema del risultato ai vecchi nomi sono sostituiti i nuovi

(60)

“Cognomi e Nomi delle Persone”

In definitiva:

   

Persone =

    

ρ

cognome AS cognomePersona, nome AS nomePersona 

(  π

 cognome, nome (Professori) )   

π

 cognome, nome (Studenti)

TABLE Persone (

   cognomePersona varchar(20),    nomePersona varchar(20));

(61)

Forma Standard

Interrogazioni in algebra relazionale

 risultato dell’applicazione di vari operatori

 è possibile applicare gli operatori in ordine vario (es: prima  selezioni o prima ridenominazioni)

Forma standard

 nel seguito viene presentata una strategia sistematica per la  scrittura di interrogazioni

 ordine standardizzato di applicazione degli operatori dell’algebra

(62)

Forma Standard

Esempio

 “Nome e Cognome dei professori ordinari che non hanno tesisti  della laurea triennale”

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)

(63)

(a) “Cognomi e Nomi dei Prof.

Ordinari”

Professori

Alessandro Christian Francesco

nome

null supplente

Del Piero ADP

associato ordinario

qualifica

Scienze Vieri

CV

Ingegneria Totti

FT

facolta cognome

cod

ProfessoriOrdinari = 

σ

 qualifica = ‘Ordinario’ (Professori)

NomiOrdinari = 

ρ

cognome AS cognomeProf, nome AS nomeProf (

π

cognome, nome (ProfessoriOrdinari))

Francesco nome

ordinario qualifica

Ingegneria Totti

FT

facolta cognome

cod

nomeProf cognomeProf

(64)

(b) “Cognomi e Nomi di Prof. con Tesi Triennali”

Alessandro Christian Francesco

nome

null supplente

Del Piero ADP

associato ordinario

qualifica

Scienze Vieri

CV

Ingegneria Totti

FT

facolta cognome

Professori cod

Pietro Pasquale

Palla Maria Paolo Mario nome

CV 1

laurea sp.

Pinco 88888

FT 1

laurea sp.

Bruno 77777

FT 3

laurea tr.

Pinco 444

1 2 1 anno

null laurea tr.

Rossi 333

laurea tr.

laurea tr. 

ciclo

null Neri

222

null Rossi

111

relatore cognome

Studenti matr

ProfessoriConTesisti =  Studenti       relatore = cod  Professori

(65)

(b) “Cognomi e Nomi di Prof. con Tesi Triennali”

associato ordinario ordinario qualifica

CV FT FT relatore

Vieri Totti Totti P.cognome

Christian Francesco Francesco P.nome

Pietro Pasquale

Palla S.nome

Sc.

1 laurea sp.

Pinco 88888

Ing.

1 laurea sp.

Bruno 77777

Ing.

3 laurea tr.

Pinco 444

anno

ciclo facolta

S.cognome matr

ProfessoriConTesisti =  Studenti       relatore = cod  Professori

ProfessoriConTesiTriennali = 

σ

 ciclo = ‘laurea tr.’ (ProfessoriConTesisti)

NomiProfConTesiTriennali = 

ρ

cognome AS cognomeProf, nome AS nomeProf (        

π

Professori.cognome, Professori.nome (ProfessoriConTesiTriennali))

ordinario qualifica FT

relatore

Totti P.cognome

Francesco P.nome Palla

S.nome

Ing.

3 laurea tr.

Pinco 444

anno

ciclo facolta

S.cognome matr

(66)

“Cognomi e Nomi dei Prof. Ordinari senza Tesi Triennali”

 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 )))

Francesco nomeProf Totti

cognomeProf

Francesco nomeProf Totti

cognomeProf

   Risultato = NomiOrdinari – NomiProfConTesiTriennali 

nomeProf cognomeProf

(67)

Riassumendo

 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

proiezioni ridenominazioni

Studenti      relatore = cod Professori ))

(68)

Forma Standard

Varie sottointerrogazioni (una o più)

 correlate con operatori insiemistici 

Ciascuna sottointerrogazione

 prima: eventuali join o prodotti cartesiani

 poi: eventuali selezioni

 poi: eventuali proiezioni

 infine: eventuali ridenominazioni

Riferimenti

Documenti correlati

III PROVA INTERMEDIA DI ANALISI MATEMATICA II A.aN. Anno di Corso Laurea

Esame di Analisi matematica II :

Pordenone, 26 novembre 2004

III PROVA INTERMEDIA DI ANALISI MATEMATICA I A.a.. Pordenone, 23

I PROVA INTERMEDIA DI ANALISI MATEMATICA I A.aN. Anno di Corso Laurea

III PROVA INTERMEDIA DI ANALISI MATEMATICA I A.a.. Pordenone, 22

I PROVA INTERMEDIA DI ANALISI MATEMATICA I A.aN. Anno di Corso Laurea

III PROVA INTERMEDIA DI ANALISI MATEMATICA I A.a.. Pordenone, 21