• Non ci sono risultati.

I dipendenti Progettare lo schema relazionale che memorizzi lo i dipendenti di un azienda, memorizzando: I dipendenti

N/A
N/A
Protected

Academic year: 2021

Condividi "I dipendenti Progettare lo schema relazionale che memorizzi lo i dipendenti di un azienda, memorizzando: I dipendenti"

Copied!
10
0
0

Testo completo

(1)

1

I dipendenti

 Progettare lo schema relazionale che memorizzi lo i dipendenti di un azienda, memorizzando:



per ogni dipendente, nome, ruolo, stipendio, sede e città di residenza;



per ogni sede, il nome della sede e la città dove si trova



per ogni città, il nome e il numero di abitanti

I dipendenti

DIPENDENTI(CodiceDip, NomeDip,Ruolo,Sede, CittaResidenza,stipendio) SEDI(CodiceSede,NomeSede,Citta)

CITTA(CodiceCitta,NomeCitta,NAbitanti)

CodiceDip NomeDip Ruolo Sede CittaResidenza Stipendio

CodiceCitta NomeCitta NAbitanti CodiceSede NomeSede Citta

DIPENDENTI

SEDI

CITTA

(2)

3

I dipendenti

Scrivere in algebra relazionale con join naturale, algebra relazionale con theta-join, calcolo sui domini, calcolo sulle tuple, le seguenti interrogazioni:

1. cercare le città in cui lavorano e il nome di tutti i dipendenti che guadagno più di 1700

2. cercare il nome dei dipendenti che non sono residenti a Siena

3. cercare il nome delle sedi che non hanno dipendenti residenti a Siena 4. cercare il nome delle sedi che hanno almeno due dipendenti

5. cercare il nome delle sedi che hanno esattamente un dipendente

Interrogazione 1: algebra relazionale

cercare le città in cui lavorano e il nome di tutti i dipendenti che guadagno più di 1700

π,NomeDip,NomeCitta(σStipendio>1700(DIPENDENTI)

ρSede CodiceSede(SEDI) ρCittaCodiceCitta(CITTA))

Algebra relazionale con join naturale Algebra relazionale con join naturale

Algebra relazionale con

Algebra relazionale con thetatheta-- joinjoin

(3)

5

Interrogazione 1: calcolo su domini

{Citta:c, Nome: n | DIPENDENTI(CodiceDip: cod, NomeDip: n,Ruolo: r,Sede:s, c, Nome: n CittaResidenza:cr, Stipendio:st)

(st>1700)

SEDI(CodiceSede: s,NomeSede: ns, Citta: cc)

CITTA(CodiceCitta: cc,NomeCitta: c,NAbitanti: na)}

cercare le città in cui lavorano e il nome di tutti i dipendenti che guadagno più di 1700

Interrogazione 1: calcolo su tuple

cercare le città in cui lavorano e il nome di tutti i dipendenti che guadagno più di 1700

{Citta: c.(NomeCitta), Nome: d.(NomeDip) | d(DIPENDENTI),s(SEDI), c(CITTA)|

d.Sede=s.CodiceSede s.Citta=c.CodiceCitta d.Stipendio>1700 }

(4)

7

Interrogazione 2: algebra relazionale

cercare il nome dei dipendenti che non sono residenti a siena DIPENDENTI_DI_SIENA=πNomeDip( DIPENDENTI

ρCittaResidenzaCodiceCitta(σNomeCitta=‘Siena’(CITTA))) interrogazione πNomeDip( DIPENDENTI) - DIPENDENTI_DI_SIENA

Algebra relazionale con join naturale Algebra relazionale con join naturale

Algebra relazionale con

Algebra relazionale con thetatheta-- joinjoin

DIPENDENTI_DI_SIENA=πNomeDip( DIPENDENTI

CittaResidenza=CodiceCitta (σNomeCitta=‘Siena’(CITTA))) interrogazione πNomeDip( DIPENDENTI) - DIPENDENTI_DI_SIENA

Interrogazione 2: calcolo su domini

{Nome: nNome: n | DIPENDENTI(CodiceDip: cod, NomeDip: n,Ruolo: r,Sede:s, CittaResidenza:cr, Stipendio: st)

CITTA(CodiceCitta: cr,NomeCitta: c,NAbitanti: na)

c‘Siena’}

cercare il nome dei dipendenti che non sono residenti a siena

(5)

9

Interrogazione 2: calcolo su tuple

{Nome: d.(NomeDip) | d(DIPENDENTI), c(CITTA) | d.CittaResidenza=c.CodiceCitta c.NomeCitta‘Siena’ )}

cercare il nome dei dipendenti che non sono residenti a siena

Interrogazione 3: algebra relazionale

cercare il nome delle sedi che non hanno dipendenti residenti a Siena

SEDI_CON_DIP_SIENA= πCodiceSede,NomeSede (SEDI ρCodiceSedeSede (DIPENDENTI

ρCittaResidenzaCodiceCitta(σNomeCitta=‘Siena’(CITTA)))) Interrogazione: πNomeSede (πCodiceSede,NomeSede(SEDI) -SEDI_CON_DIP_SIENA)

Algebra relazionale con join naturale Algebra relazionale con join naturale

Algebra relazionale con

Algebra relazionale con thetatheta-- joinjoin

SEDI_CON_DIP_SIENA= πCodiceSede,NomeSede(SEDI CodiceSede=Sede (DIPENDENTI CittaResidenza=CodiceCittaNomeCitta=‘Siena’(CITTA))))

Interrogazione: πNomeSede CodiceSede,NomeSede(SEDI) -SEDI_CON_DIP_SIENA)

(6)

11

Interrogazione 3: calcolo su domini

{Nome: Nome: nsns | SEDI(CodiceSede: s,NomeSede: ns, Citta: cc)

∧ ¬ (cod(n(r(cr(st(c(na

DIPENDENTI(CodiceDip: cod, NomeDip: n,Ruolo: r,Sede:s, CittaResidenza:cr, Stipendio: st)

CITTA(CodiceCitta: cr,NomeCitta: c,NAbitanti: na)

c=‘Siena’)))))))}

cercare il nome delle sedi che non hanno dipendenti residenti a Siena

Interrogazione 3: calcolo su tuple

{Nome: s.(NomeSede) | s(SEDI)|

¬∃c(CITTA) (d(DIPENDENTI) d.Sede=s.CodiceSede

d.CittaResidenza=c.CodiceCitta

cercare il nome delle sedi che non hanno dipendenti residenti a Siena

(7)

13

DIPENDENTI1=ρCodiceDip1 CodiceDip, NomeDip1 NomeDip,Ruolo1 Ruolo,

CittaResidenza1 CittaResidenza,Stipendio1 Stipendio(DIPENDENTI) DIPENDENTI2=ρCodiceDip2 CodiceDip, NomeDip2 NomeDip,Ruolo2 Ruolo,

CittaResidenza2 CittaResidenza,Stipendio2 Stipendio(DIPENDENTI) Interrogazione: πNomeSede(SEDI

ρCodiceSedeSede( σCodiceDip1CodiceDip2( DIPENDENTI1 DIPENDENTI2)))

Interrogazione 4: algebra relazionale

cercare il nome delle sedi che hanno almeno due dipendenti

Algebra relazionale con join naturale Algebra relazionale con join naturale

Interrogazione 4: algebra relazionale

cercare il nome delle sedi che hanno almeno due dipendenti DIPENDENTI1=ρCodiceDip1 CodiceDip, NomeDip1 NomeDip,Ruolo1 Ruolo,

CittaResidenza1 CittaResidenza,Stipendio1 Stipendio(DIPENDENTI) DIPENDENTI2=ρCodiceDip2 CodiceDip, NomeDip2 NomeDip,Ruolo2 Ruolo,

CittaResidenza2 CittaResidenza,Stipendio2 Stipendio(DIPENDENTI) Interrogazione: πNomeSede(SEDI

ρCodiceSedeSede( DIPENDENTI1 CodiceDip1CodiceDip2 DIPENDENTI2))

Algebra relazionale con

Algebra relazionale con thetatheta--joinjoin

(8)

15

Interrogazione 4: calcolo su domini

{Nome: Nome: nsns | SEDI(CodiceSede: s,NomeSede: ns, Citta: cc)

DIPENDENTI(CodiceDip: cod1, NomeDip: n1, Ruolo: r1, Sede:s, CittaResidenza:cr1, Stipendio: st1)

DIPENDENTI(CodiceDip: cod2, NomeDip: n2, Ruolo: r2, Sede:s, CittaResidenza:cr2, Stipendio: st2)

¬ (cod1=cod2) }

cercare il nome delle sedi che hanno almeno due dipendenti

Interrogazione 3: calcolo su tuple

{Nome: s.(NomeSede) | s(SEDI),d1(DIPENDENTI),d2(DIPENDENTI)) | d1.Sede=s.CodiceSede

d2.Sede=s.CodiceSede

¬ (d1.cod=d2.cod)

cercare il nome delle sedi che hanno almeno due dipendenti

(9)

17

Interrogazione 5: algebra relazionale

cercare il nome delle sedi che hanno esattamente un dipendente

SEDI_SENZA_DIPENDENTI=πCodiceSedi (SEDI) - ρCodiceSedeSede( πSede (DIPENDENTI)) SEDI_CON_ALMENO_DUE_DIP = … vedi esercizio precedente

Interrogazione: πNomeSede(SEDI

((SEDI - SEDI_SENZA_DIPENDENTI)- SEDI_CON_ALMENO_DUE_DIP ))

Algebra relazionale con join naturale Algebra relazionale con join naturale

Algebra relazionale con

Algebra relazionale con thetatheta--joinjoin

Interrogazione: πNomeSede(SEDI Sede=Sede

((SEDI - SEDI_SENZA_DIPENDENTI)- SEDI_CON_ALMENO_DUE_DIP ))

Interrogazione 5: calcolo su domini

{Nome: Nome: nsns | SEDI(CodiceSede: s,NomeSede: ns, Citta: cc)

DIPENDENTI(CodiceDip: cod1, NomeDip: n1, Ruolo: r1, Sede:s, CittaResidenza:cr1, Stipendio: st1)

¬ (cod2(n2(r2(cr2(st2

DIPENDENTI(CodiceDip: cod2, NomeDip: n2, Ruolo: r2, Sede:s, CittaResidenza:cr2, Stipendio: st2)

¬ (cod1=cod2))))))) }

cercare il nome delle sedi che hanno esattamente un dipendente

(10)

19

Interrogazione 5: calcolo su tuple

{Nome: s.(NomeSede) | s(SEDI),d1(DIPENDENTI),d2(DIPENDENTI)) | d1.Sede=s.CodiceSede

¬ (d2(DIPENDENTI)

d2.Sede=s.CodiceSede

¬ (d1.cod=d2.cod)) }

cercare il nome delle sedi che hanno esattamente un dipendente

Riferimenti

Documenti correlati

ALTER TABLE Prestazione ADD CONSTRAINT Categoria-Prestazione FOREIGN KEY (FKCategoria) REFERENCES Categoria (ID). ALTER TABLE Servizio ADD CONSTRAINT Prestazione-Servizio FOREIGN KEY

Il risultato che otterremo sarà una tabella (priva di nome), avente come schema lo stesso schema di STUDENTE e come istanza le tuple di STUDENTE che soddisfano il

Algebra Relazionale e SQL.. a) Elencare i medici che appartengono a reparti in cui è ricoverata almeno una donna b) Elencare i primari di ciascun reparto, ciascuno con la

Genitore Figlio Luca Anna Maria Anna Giorgio Luca Silvia Maria Enzo Maria. Genitori Per trovare nonni

l’attributo MatrDocente nella relazione Corsi fa riferimento a Matricola nella relazione Docenti I valori assunti da un attributo nella relazione referenziante devono

Come confrontare tuple di una stessa tabella? Generazione di una o più copie della tabella e join. un esempio: come determinare il valore massimo o minimo associato ad dato

E’ immediato vedere che il calcolo relazionale su domini non è indipendente dal dominio, mentre l’algebra relazionale lo è (essa costruisce i risultati a partire dalle

Padre Figlio Adamo Caino Adamo Abele Abramo Isacco Abramo