VINI(Codice, Descrizione, Fornitore, Prezzo) VENDITE(Vino, Anno, Quantità) FORNITORE(Codice, Nome, Indirizzo, Telefono)

  1. Identificare le chiavi esterne presenti nello schema, indicando, per ognuna di esse, la tabella referente e quella riferita

    Untitled

  2. Per come sono definite le chiavi primarie ed esterne:

    1. Un fornitore può fornire più di un vino?

      Sì, essendo la chiave esterna in VINI si tratta di una relazione uno a molti, nel senso che un vino è prodotto da un fornitore, e un fornitore produce più vini

    2. Un vino può essere fornito da più fornitori?

      No perchè in VINI non possono esistere due tuple con Codice uguale e Fornitore diverso

    3. Un vino può essere venduto in quantità diverse?

      A patto che la vendita venga fatta in due anni diversi, sì

    4. Possono esistere vini con la stessa descrizione?

      Sì, la descrizione non è una chiave primaria e quindi non deve essere unica

  3. Aggiungere la colonna annata alla tabella VINI

    ALTER TABLE VINI ADD COLUMN Annata DECIMAL(4);
    
  4. Aumentare del 15% il prezzo dei vini forniti dal fornitore con nome “Le Fracce”

    UPDATE VINI SET Prezzo = Prezzo * 1.15
    WHERE Fornitore IN(
    	SELECT Codice FROM FORNITORE WHERE Nome = 'Le Fracce'
    );
    
  5. Cancellare le vendite effettuate prima del 2001

    DELETE FROM VENDITE WHERE Anno < 2001;
    

Esercizio 2

  1. Trovare codice e descrizione dei vini che abbiano almeno una vendita nel 2014 o nel 2015

    SELECT Codice, Descrizione 
    FROM VENDITE JOIN VINI ON (Vino = Codice)
    WHERE Anno = 2014 OR Anno = 2015;
    
  2. Per ogni vino che abbia almeno una vendita in due anni diversi, mostrare il codice e la somma delle quantità vendute in tutti gli anni

    SELECT Codice, SUM(Quantità) FROM VENDITE
    WHERE Vino IN (
    	SELECT Vino FROM VENDITE
    	GROUP BY Vino
    	HAVING COUNT(Anno) >= 2
    )
    GROUP BY Vino
    
  3. Trovare il codice dei fornitori che non offrono vini di costo inferiore ai cinque euro

    SELECT Codice FROM FORNITORE
    MINUS
    SELECT Codice FROM FORNITORE JOIN VINI ON (Codice = Fornitore)
    WHERE Prezzo < 5;
    
  4. Trovare i vini che sono stati venduti nel 2015 ma non nel 2016

    SELECT Vino FROM Vendite WHERE Anno = 2015
    MINUS
    SELECT Vino FROM Vendite WHERE Anno = 2016