Your SlideShare is downloading. ×
0
09  Esercizi Generali
09  Esercizi Generali
09  Esercizi Generali
09  Esercizi Generali
09  Esercizi Generali
09  Esercizi Generali
09  Esercizi Generali
09  Esercizi Generali
09  Esercizi Generali
09  Esercizi Generali
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

09 Esercizi Generali

5,360

Published on

Published in: Business, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,360
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
281
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ESERCIZI NORMALIZZAZIONE Es 1 Si consideri lo schema di relazione R = (A,B,C,D) e il seguente insieme di dipendenze funzionali: 1. A -> B 2. BC -> D 3. A -> C Rispondere ai seguenti quesiti motivando le risposte date: a) Determinare la chiave o le chiavi dello schema di relazione R. b) Determinare se R e’ in 3NF o BCNF. c) Produrre eventuali decomposizioni e discutere la preservazione dei dati e delle dipendenze funzionali Es 2 Si consideri R(A,B,C,D); per ciascuno dei seguenti gruppi di dipendenze funzionali 1. ABC→D, D→A; 2. AB→C, AB→D, C→A, D→B; determinare: a) Tutte le chiavi di R. b) Se R è in 3NF. c) Se R è in BCNF; nel caso in cui non lo fosse, discutere l’esistenza (ed eventualmente proporre) di una decomposizione che preservi le dipendenze funzionali. Es 3 Si consideri lo schema di relazione R(A,B,C,D,E,F) e il seguente insieme di dipendenze funzionali F su tale schema: A→ B 1. ABCD → EF 2. EF → C 3. a) Mostrare una relazione su tale schema che contenga almeno due tuple e verifichi le dipendenze, ed una relazione che contenga almeno due tuple e non le verifichi. b) Determinare se l’insieme delle dipendenze è minimale. Se non lo è, generare l’insieme di dipendenze minimale equivalente a quello dato. c) Determinare le chiavi della relazione. d) Lo schema è in BCNF? È il 3NF? Giustificare le risposte. e) Mostrare una decomposizione lossless join dello schema in 3NF che preservi le dipendenze. f) Mostrare una decomposizione lossless join dello schema in BCNF che preservi le dipendenze. g) Mostrare una decomposizione lossless join dello schema in BCNF che non preservi le dipendenze. SOLUZIONE ESERCIZI NORMALIZZAZIONE Sol1 Si consideri lo schema di relazione R = (A,B,C,D) e il seguente insieme di dipendenze funzionali: 1. A -> B 2. BC -> D 3. A -> C Rispondere ai seguenti quesiti motivando le risposte date: a) Determinare la chiave o le chiavi dello schema di relazione R. Lo schema ha come chiave l’attributo A (A+=ABCD) b) Determinare se R e’ in 3NF o BCNF.
  • 2. La relazione non è in 3NF (dunque neanche in BCNF) a causa di BC -> D c) Produrre eventuali decomposizioni e discutere la preservazione dei dati e delle dipendenze funzionali Una possibile decomposizione che preserva i dati e conserva le dipendenze funzionali è R1(A,B,C) e R2(B,C,D) (applicare algoritmo scomposizione) Sol2 Si consideri R(A,B,C,D); per ciascuno dei seguenti gruppi di dipendenze funzionali 1. ABC→D, D→A; 2. AB→C, AB→D, C→A, D→B; determinare: a) Tutte le chiavi di R. 1:abc, bcd 2:ab, bc, cd, ad b) Se R è in 3NF. 1:Sì (verificare la definizione) 2:Sì c) Se R è in BCNF; nel caso in cui non lo fosse, discutere l’esistenza (ed eventualmente proporre) di una decomposizione che preservi le dipendenze funzionali. 1:No per D→A; spezzando R in AD e BCD non si preserva ABC→D quindi non esiste una decomposizione BCNF 2:No per C→A e D→B; spezzando R in AC e BCD non si preservano AB→C e AB→D, inoltre BCD non e’ in BCNF per D→B; spezzando R in AC, BD e CD dovremmo considerare anche ABC e ABD per preservare le dipendenze ma sia ABC che ABD non sono in BCNF. Quindi non esiste una scomposizione BCNF Sol3 Si consideri lo schema di relazione R(A,B,C,D,E,F) e il seguente insieme di dipendenze funzionali F su tale schema: A→ B 1. ABCD → EF 2. EF → C 3. a) Mostrare una relazione su tale schema che contenga almeno due tuple e verifichi le dipendenze, ed una relazione che contenga almeno due tuple e non le verifichi. A B C D E F a1 b1 c1 d1 e1 f1 a2 b2 c2 d2 e2 f2 verifica A B C D E F a1 b1 ... ... ... … a1 b2 ... ... ... ... viola A B b) Determinare se l’insieme delle dipendenze è minimale. Se non lo è, generare l’insieme di dipendenze minimale equivalente a quello dato. Non ci sono dipendenze ridondanti B è ridondante in ABCD EF (B ∈ACD+), quindi la sostituisco con ACD EF L’insieme minimale è {A B, ACD E, ACD F, EF C}
  • 3. c) Determinare le chiavi della relazione. AD non compare mai a dx, quindi ogni chiave contiene AD AD+= ABD (AD da solo non è chiave) ACD+= ABCDEF (ACD è chiave) ADEF+= ABCDEF (ADEF è chiave) Le uniche due chiavi sono ACD e ADEF d) Lo schema è in BCNF? È il 3NF? Giustificare le risposte. A B viola BCNF perché A non è (super) chiave A B viola anche la 3NF perché B non è un attributo primo Quindi lo schema non e’ 3NF né BCNF e) Mostrare una decomposizione lossless join dello schema in 3NF che preservi le dipendenze. Applico algoritmo per 3NF (la scomposizione risultate preserverà sempre le dipendenze – proprietà dell’algoritmo) Lo schema risultate è AB AB chiave A ACDE ACD E chiave ACD ACDF ACD F chiave ACD EFC EF C chiave EF Questo schema è BCNF f) Mostrare una decomposizione lossless join dello schema in BCNF che preservi le dipendenze. Lo schema proposto al punto e) g) Mostrare una decomposizione lossless join dello schema in BCNF che non preservi le dipendenze. Applico algoritmo per BCNF ABCDEF ACDEF AB ACD --> EF EF --> C viola A-->B EF --> C K: A K:ACD CEF ADEF EF --> C 0 K: EF K: ADEF La decomposizione non preserva le dipendenze. Perdo la dipendenza ACD EF. Infatti, se F e’ l’insieme delle dipendenze associate alle foglie dell’albero precedente, in F, ACD+ non contiene EF
  • 4. ESERCIZI SQL + RELAZIONALE Es 1 Si consideri il seguente schema relazionale, relativo agli spot pubblicitari proposti da varie emittenti televisive (pk sottolineate, Attru: attributo soggetto al vincolo unique, Attrnn: attributo soggetto al vincolo not null): EMITTENTE(CodE, NomeEu,Tipo) SPOT(CodS,NomeSnn,Prodottonn,TipoProdottonn) TRASMETTE(CodEfk->Emittente.CodE,CodSfk->Spot.CodS,duratann) Nello schema precedente, l’unità di misura del campo durata è in secondi. Rispondere ai seguenti quesiti: • Posso avere due emittenti con lo stesso nome ? • Posso avere due spot relativi allo stesso prodotto ? • Posso avere due spot relativi allo stesso tipo di prodotto ? • Posso avere due spot della stessa durata ? • Può uno stesso spot essere trasmesso da emittenti diverse ? • Può uno stesso spot essere trasmesso dalla stessa emittente ? Formulare le seguenti operazioni in SQL: a) Determinare le emittenti regionali che trasmettono almeno uno spot sulla pasta Barilla, di durata superiore a 30 secondi. b) Determinare per ogni spot il numero totale di emittenti che lo trasmettono e la durata media. c) Determinare per ogni emittente il nome dello spot trasmesso più lungo, insieme al prodotto a cui si riferisce. d) Determinare per ogni emittente i nomi degli spot relativi ad autovetture, di durata superiore alla durata media degli spot trasmessi dall’emittente. e) Si supponga che venga vietata la trasmissione di spot di telefonia cellulare di durata superiore a 40 secondi. Aggiornare la base di dati per tenere conto di questa nuova normativa. Es 2 Si consideri il seguente schema relazionale: Aereo(ACodice, Modello, Autonomia) Impiegato(ICodice, Nome, Mansione, Stipendio) Abilitazione(ICodice,ACodice) Voli(VCodice, Da, A, Distanza, OraPartenza, OraArrivo) Si formulino le seguenti interrogazioni sia in algebra relazionale che in SQL: a) trovare i nomi dei piloti abilitati a pilotare aerei il cui modello è “Boeing” b) trovare i codici degli impiegati con il salario più alto c) trovare i codici degli impiegati con il secondo salario più alto d) trovare il nome dei piloti abilitati a pilotare aeroplani con autonomia maggiore di 2000 miglia che non siano abilitati a pilotare alcun aereo il cui modello è “Boeing” Es 3 Si consideri il seguente schema relazionale: MUSEI (Nome, Cittànn, Nazionenn, GiornoChiusurann) ARTISTI (Nome, Nazionalitànn, DataNascitann, DataMorte)
  • 5. OPERE (Codice, Titolonn, Statonn, Artistann, Museonnfk->Musei.Nome) Rispondere ai seguenti quesiti utilizzando il linguaggio SQL: a) trovare il codice, il titolo e lo stato delle opere di Leonardo conservate alla “National Gallery” b) trovare il nome dell’artista ed il titolo delle opere conservate alla “Galleria degli Uffizi” o alla “National Gallery” c) trovare le città in cui son conservate opere di Leonardo d) trovare il nome dell’artista ed il titolo delle opere di artisti italiani contemporanei conservate nei musei di Londra e) trovare il numero di opere di artisti italiani conservate in ciascun museo di Londra f) trovare il nome dei musei di Londra che non conservano opere di Leonardo g) trovare il nome dei musei di Londra che conservano solo opere di Leonardo h) trovare i musei che conservano almeno 10 opere di artisti spagnoli del ventesimo secolo i) trovare per ogni museo il numero di opere divise per la nazionalità degli artisti SOLUZIONE ESERCIZI SQL + RELAZIONALE Sol 1 SOLUZIONE QUESITI • Posso avere due emittenti con lo stesso nome ? No a causa del vincolo unique su NomeE • Posso avere due spot relativi allo stesso prodotto ? Sì • Posso avere due spot relativi allo stesso tipo di prodotto ? Sì • Posso avere due spot della stessa durata ? Sì • Può uno stesso spot essere trasmesso da emittenti diverse ? Sì • Può uno stesso spot essere trasmesso dalla stessa emittente ? No in quanto dovrei inserire una seconda tupla con lo stesso valore di chiave primaria CodE,CodS nella relazione Trasmette SOLUZIONE SQL a) Determinare le emittenti regionali che trasmettono almeno uno spot sulla pasta Barilla, di durata superiore a 30 secondi. SELECT DISTINCT NomeE FROM Emittente NATURAL JOIN Spot NATURAL JOIN Trasmette WHERE Prodotto=’Pasta Barilla’ AND Durata > 30 AND Tipo = ‘Regionale’; b) Determinare per ogni spot il numero totale di emittenti che lo trasmettono e la durata media. SELECT CodS, COUNT(*), AVG(Durata) FROM Trasmette GROUP BY CodS; c) Determinare per ogni emittente il nome dello spot trasmesso più lungo, insieme al prodotto a cui si riferisce. SELECT NomeE, NomeS, Prodotto FROM Trasmette NATURAL JOIN Spot NATURAL JOIN Emittente E WHERE Durata > = (SELECT MAX(Durata) FROM Trasmette WHERE CodE=E.CodE);
  • 6. d) Determinare per ogni emittente i nomi degli spot relativi ad autovetture, di durata superiore alla durata media degli spot trasmessi dall’emittente. SELECT NomeE, NomeS FROM Trasmette NATURAL JOIN Spot NATURAL JOIN Emittente E WHERE TipoProdotto = ‘auto’ AND Durata > = (SELECT AVG(Durata) FROM Trasmette WHERE CodE=E.CodE); e) Si supponga che venga vietata la trasmissione di spot di telefonia cellulare di durata superiore a 40 secondi. Aggiornare la base di dati per tenere conto di questa nuova normativa. DELETE TRASMETTE WHERE durata >= 40 AND CodS IN (SELECT CodS FROM Spot WHERE TipoProdotto=’Telefonia Cellulare’); Sol 2 Si consideri il seguente schema relazionale: Aereo(ACodice, Modello, Autonomia) Impiegato(ICodice, Nome, Mansione, Stipendio) Abilitazione(ICodice,ACodice) Voli(VCodice, Da, A, Distanza, OraPartenza, OraArrivo) Si formulino le seguenti interrogazioni sia in algebra relazionale (P=proiezione, S=selezione) che in SQL: a) trovare i nomi dei piloti abilitati a pilotare aerei il cui modello è “Boeing” R1:Picodice(Smodello=’boeing’(Aereo|><|Abilitazione)) R2:Pnome(R1|><|Impiegato) select i.nome from impiegato i, aereo a, abilitazione b where a.acodice=b.acodice and i.icodice=b.icodice and a.modello=’boeing’ b) trovare i codici degli impiegati con il salario più alto I1:Impiegato I2:Impiegato R1:PI2.icodice(I1|><|I1.stipendio>I2.stipendioI2) Picodice(Impiegato)-R1 select i.icodice from impiegato i where i.stipendio=(select max(j.stipendio) from impiegato j) c) trovare i codici degli impiegati con il secondo salario più alto I1:Impiegato I2:Impiegato R1:PI2.icodice(I1|><|I1.stipendio>I2.stipendioI2) I3:Impiegato|><|R1
  • 7. I4:Impiegato|><|R1 R2:PI4.icodice(I3|><|I3.stipendio>I4.stipendioI4) R1-R2 select i.icodice from impiegato i where i.stipendio=(select max(j.stipendio) from impiegato j where j.stipendio<>(select max(k.stipendio) from impiegato k)) d) trovare il nome dei piloti abilitati a pilotare aeroplani con autonomia maggiore di 2000 miglia che non siano abilitati a pilotare alcun aereo il cui modello è “Boeing” R1:Picodice(Sautonomia>2000(Aereo|><|Abilitazione)) Pnome(Impiegato|><|(R1-(Picodice(Smodello=’boeing’(Aereo|><|Abilitazione))))) select i.icodice, i.nome from impiegato i, aereo a, abilitazione b where a.acodice=b.acodice and i.icodice=b.icodice and a.autonomia>2000 and i.icodice not in (select k.icodice from aereo j, abilitazione k where j.acodice=k.acodice and j.modello=’boeing’) Sol3 Si consideri il seguente schema relazionale: MUSEI (Nome, Cittànn, Nazionenn, GiornoChiusurann) ARTISTI (Nome, Nazionalitànn, DataNascitann, DataMorte) OPERE (Codice, Titolonn, Statonn, Artistannfk->Artisti.Nome, Museonnfk->Musei.Nome) Rispondere ai seguenti quesiti utilizzando il linguaggio SQL: a) trovare il codice, il titolo e lo stato delle opere di Leonardo conservate alla “National Gallery” select o.codice, o.titolo, o.stato from opere o where o.artista=’leonardo’ and o.museo=’national gallery’; b) trovare il nome dell’artista ed il titolo delle opere conservate alla “Galleria degli Uffizi” o alla “National Gallery” select o.artista, o.titolo from opere o where o.museo=’galleria degli uffizi’ or o.museo=’national gallery’; c) trovare le città in cui son conservate opere di Leonardo select distinct m.città from opere o, musei m where o.artista=’leonardo’ and o.museo=m.nome d) trovare il nome dell’artista ed il titolo delle opere di artisti italiani contemporanei conservate nei musei di Londra
  • 8. select a.nome, o.titolo from artisti a, opere o, musei m where a.nome=o.artista and o.museo=m.nome and a.nazionalità=’italia’ and m.città=’londra’ and a.datamorte is null; e) trovare il numero di opere di artisti italiani conservate in ciascun museo di Londra select m.nome, count(*) as numopere from artisti a, opere o, musei m where a.nome=o.artista and o.museo=m.nome and a.nazionalità=’italia’ and m.città=’londra’ group by m.nome; f) trovare il nome dei musei di Londra che non conservano opere di Leonardo select m.nome from musei m where m.città=’londra’ and not exist (select * from opere o where o.nome=’leonardo’ and m.nome=o.museo); g) trovare il nome dei musei di Londra che conservano solo opere di Leonardo select m.nome from musei m where m.città=’londra’ and not exist (select * from opere o where o.nome<>’leonardo’ and m.nome=o.museo); h) trovare i musei che conservano almeno 10 opere di artisti spagnoli del ventesimo secolo select o.museo from artisti a, opere o where a.nome=o.artista and a.nazionalità=’spagna’ and a.datanascita>=’1/1/1900’ group by o.museo having count(*)>9; i) trovare per ogni museo il numero di opere divise per la nazionalità degli artisti select o.museo, a.nazionalità, count(*) as numopere from artisti a, opere o where a.nome=o.artista group by o.museo, a.nazionalità;
  • 9. ESERCIZI PROGETTAZIONE Si vuole sviluppare una base di dati per gestire la vendita di biglietti per concerti e spettacoli teatrali. Ogni concerto è caratterizzato da un identificatore, il nome del cantante e alcune informazioni generali. Ogni spettacolo teatrale è caratterizzato da un identificatore, il titolo dello spettacolo, la durata, il nome del regista e il nome del protagonista. Concerti e spettacoli teatrali sono tenuti in luoghi che possono essere teatri o stadio. Ogni teatro o stadio è caratterizzato da un identificatore, un nome, un indirizzo, un numero di telefono e il numero complessivo di posti disponibili. Per i teatri, si vuole inoltre mantenere informazioni circa l’orario di apertura del botteghino. Mentre i concerti possono essere tenuti in stadi e teatri, gli spettacoli teatrali si svolgono esclusivamente nei teatri. Le performance (concerto o spettacolo teatrale) si svolgono in un certo luogo (teatro o stadio) in una certa data, con una certa ora di inizio. La stessa performance può essere svolta nello stesso luogo o luoghi diversi, in date e/o orari diversi. Per ogni performance tenuta in un certo luogo in una certa data, ad una certa ora, si mantengono informazioni circa i posti disponibili. In particolare, per ogni luogo (teatro o stadio), un posto è caratterizzato da un numero di fila e un numero di posto. Per ogni posto si vuole inoltre sapere se il posto è libero o occupato. Motivando adeguatamente le scelte: a) Effettuare la progettazione concettuale dello scenario descritto producendo il relativo schema ER. b) Precisare eventuali vincoli di integrità non rappresentabili nello schema ER proposto e la tipologia delle eventuali generalizzazioni. c) Generare lo schema ristrutturato corrispondente allo schema ER definito al punto a). d) Tradurre lo schema concettuale in uno schema logico del modello relazionale evidenziando esplicitamente ogni tipo di vincolo utile a rappresentare lo scenario in esame. SOLUZIONE ESERCIZI PROGETTAZIONE NumFila NumPosto Data OraI Libero/occupato (1,1) POSTI PER PERFORMANCE IN (1,1) (0,N) (0,N) (1,1) TotPosti ID Info (1,n) SI FA Nome Indirizzo LUOGHI CONCERTO (1,N) Telefono (t,e) (t,e) SPETTACOLO S. TEATRALE TEATRO STADIO ID Protagonista OraABott Titolo Regista Durata
  • 10. Vincoli: • se uno spettacolo è teatrale allora il luogo in cui si svolge è un teatro • i posti assegnati per una performance devono essere minore o uguale del totale dei posti del luogo in cui la performance si deve tenere La ristrutturazione considerata consiste nell’eliminazione delle entità figlie delle gerarchie di generalizzazione totale ed esclusive presenti nello schema e nell’eliminazione dell’attributo multivalore Info dell’entità concerto. NumFila NumPosto Data OraI Libero/occupato (1,1) POSTI PER PERFORMANCE IN (1,1) (0,N) (0,N) (1,1) SI FA ID (1,N) TotPosti Nome Indirizzo LUOGHI Tipo Telefono OraABott (0,1) Titolo (0,1) (0,N) (1,N) SPETTACOLO PER INFO Durata (0,1) Nota Regista (0,1) ID Protagonista Tipo Vincoli aggiuntivi su schema ristrutturato • Spettacolo.Tipo ∈ {‘concerto’,’teatrale’} • Spettacolo.Titolo ≠ NULL sse Spettacolo.Tipo = ‘teatrale’. Stessa cosa per Durata e Regista • Luoghi.Tipo Tipo ∈ {‘teatro,stadio} • Luoghi.OraABott ≠ NULL sse Luoghi.Tipo = ‘teatro’ Luoghi(ID,Tiponn,TotPostinn,Nomenn,Indirizzonn,Telefononn,OraABott) Performance(Luogofk->Luoghi.ID,Data,OraI,Spettacolonnfk->Spettacolo.ID) Posti(Datafk->Performance.Data,Luogofk->Performance.Luogo,OraIfk->Performance.OraI,NumPosto,NumFila,Libero/Occupatonn) Spettacolo(ID,Tiponn,Titolo,Durata,Regista,Protagonistann) InfoPer(Spettacolofk->Spettacolo.ID,Notafk->Info.Nota) Info(Nota) Vincoli aggiuntivi su schema relazionale ∀i ∈ INFO, ∃p ∈ INFOPER | i.nota = p.nota • ∀s ∈ SPETTACOLO, ∃p ∈ PERFORMANCE | s.ID = p.Spettacolo •

×