vuoi
o PayPal
tutte le volte che vuoi
Simulazione esecuzione sequenziale delle istruzioni SQL
Si simuli l'esecuzione sequenziale delle seguenti istruzioni SQL su un ipotetico DBMS (che memorizza esclusivamente istanze legali di una Base di Dati), supponendo che tutte le tabelle coinvolte (PuntoVendita, Offerta, Prodotto) nelle istruzioni siano vuote (N.B. le specifiche di tali tabelle sono riportate in Esercizio 1). Si commenti ciascuna istruzione, evidenziando eventuali errori di violazione dei vincoli di integrità. Infine, si riporti il contenuto delle tabelle al termine della simulazione dell'esecuzione di tutte le istruzioni:
a. INSERT INTO PuntoVendita(PVID, Nome) VALUES (75, 'PV 75')
b. INSERT INTO PuntoVendita(PVID, Nome) VALUES (80, 'PV 80')
c. INSERT INTO Prodotto(PID, Descrizione, PrezzoListino) VALUES (128, 'P128', 99.99)
d. INSERT INTO Prodotto(PID, PrezzoListino) VALUES (129, 129.99)
e. INSERT INTO Prodotto(PID, Descrizione, PrezzoListino) VALUES (128, 'P130', 79.99)
f. INSERT INTO Offerta(ProdID, PVendID) VALUES (128,
- g.
INSERT INTO Offerta(ProdID, PVendID) VALUES (128, 80)
- h.
INSERT INTO Offerta(ProdID, PVendID) VALUES (129, 80)
- i.
INSERT INTO Offerta(ProdID, PVendID, PercSconto) VALUES (128, 76, 24)
- j.
DELETE FROM Prodotto WHERE PID = 128
- k.
INSERT INTO Prodotto(PID, Descrizione, PrezzoListino) VALUES (130, 'P130', 79.99)
- l.
INSERT INTO Offerta(ProdID, PVendID) VALUES (130, 80)
- m.
INSERT INTO PuntoVendita(PVID, Nome) VALUES (85, NULL)
Prodotto | PuntoVendita | Offerta | ||||||
---|---|---|---|---|---|---|---|---|
PID | Descrizione | PrezzoListino | PVID | Nome | ProdID | PVendID | PercSconto | |
75 | PV | 75 | 129 | MiaDescr | 129.99 | 129 | 80 | 15 |
80 | PV | 80 | 130 | P130 | 79.99 | 130 | 80 | 15 |
Vincoli di integrità violati nelle seguenti istruzioni: Prodotto, PuntoVendita Offerta
Per gli Esercizi 3, 4, 5, 6 e 7, si consideri il contenuto delle tabelle e(le cui specifiche sono descritte in Esercizio 1), riportato rispettivamente nelle Figure 1, 2 e 3:
Prodotto | PuntoVendita | Offerta | |||||
---|---|---|---|---|---|---|---|
PID | Descrizione | PrezzoListino | PVID | Nome | ProdID | PVendID | PercSconto |
15 | Aatb215 | 119.99 | 1001 | Salerno | 1 | 16 |
<p>1002</p>
<p>1016</p>
<p>116</p>
<p>180.99</p>
<p>1002</p>
<p>Salerno</p>
<p>2</p>
<p>16</p>
<p>1005</p>
<p>1217</p>
<p>B17vk</p>
<p>215.99</p>
<p>1003</p>
<p>Fisciano</p>
<p>3</p>
<p>16</p>
<p>1006</p>
<p>1518</p>
<p>P1Tmo418</p>
<p>219.00</p>
<p>1004</p>
<p>Baronissi</p>
<p>4</p>
<p>18</p>
<p>1001</p>
<p>2219</p>
<p>QK719a</p>
<p>88.99</p>
<p>1005</p>
<p>Fisciano</p>
<p>5</p>
<p>18</p>
<p>1002</p>
<p>2020</p>
<p>JP2020n</p>
<p>24.99</p>
<p>1006</p>
<p>Baronissi</p>
<p>6</p>
<p>19</p>
<p>1002</p>
<p>1919</p>
<p>1003</p>
<p>2119</p>
<p>1006</p>
<p>2020</p>
<p>1001</p>
<p>8Figura 1 Figura 2 Figura 3l’esecuzione per ciascuna di esseSi formulino le seguenti interrogazioni in linguaggio SQL, simulando eriportando il relativo risultato. N.B. Si utilizzi il contenuto delle tabelle riportato nelle Figure 1, 2 e 3:l’identificativo dei punti vendita per i quali3. Estrarre non vi sono prodotti in offerta.Possibile SoluzioneSELECT PVIDFROM PuntoVenditaWHERE PVID NOT IN (SELECT PVendID FROM Offerta)–Basi di Dati e Sistemi Informativi C.L. in Ingegneria Gestionale– –Appello 16/01/2019 Possibili Soluzioni Pagina 2 di 5dell’InterrogazioneRisultatoPVID10044. Estrarre esclusivamente il nome dei punti vendita per i quali è in offerta il prodotto con identificativopari a</p>
18. Possibile Soluzione
```html
SELECT DISTINCT Nome
FROM PuntoVendita
WHERE PVID IN (SELECT PvendID FROM Offerta WHERE ProdID = 18)
Risultato dell'Interrogazione
Nome
Salerno 1
Salerno 2 la lettera 'a'
5. Estrarre il numero di prodotti ove la descrizione non contiene 'ed' e il prezzo di listino è minore di 120.
Possibile Soluzione
SELECT count(*)
FROM Prodotto
WHERE Descrizione NOT LIKE '%a%' AND PrezzoListino < 120
Risultato dell'Interrogazione
1
6. Estrarre la media dei prezzi di listino relativi ai prodotti che sono in offerta con la percentuale di sconto pari a 20.
Possibile Soluzione
SELECT avg(PrezzoListino)
FROM Prodotto
WHERE PID IN (SELECT ProdID FROM Offerta WHERE PercSconto = 20)
Risultato dell'Interrogazione
153.99
7. Estrarre esclusivamente la descrizione dei prodotti che sono in offerta alla massima percentuale
``` La soluzione proposta per l'interrogazione è la seguente: ```htmlSELECT DISTINCT Descrizione
FROM Prodotto
WHERE PID IN (SELECT ProdID
FROM Offerta
WHERE PercSconto = (SELECT max(PercSconto)
FROM Offerta))
``` Il risultato dell'interrogazione è il seguente: ```htmlDescrizione
P1Tmo418
``` Questa soluzione è molto simile a quella proposta per l'Esempio 4 [Argomento 6]. NOTA: -Basi di Dati e Sistemi Informativi C.L. in Ingegneria Gestionale- -Appello 16/01/2019 Possibili Soluzioni Pagina 4 di 5