Progettazione: attributi con dominio - attributi di tipo data
Interrogazione: and - or - operatori di confronto

Lezione 2

Problema

Si vuole tenere traccia di tutti i capi di abbigliamento in possesso di una certa persona e per ciascun capo si vuole accedere ai seguenti dati: descrizione, foto, tipologia, data di acquisto e prezzo. La tipologia del capo di abbigliamento deve essere una delle seguenti voci: maglia, pantaloni, pantaloncini, camicia, giacca, scarpe, felpa, maglione, gonna, ciabatte. Il database sarà utilizzato da un’applicazione che avrà lo scopo di tenere traccia della quantità di giorni durante i quali l’utente ha già indossato un certo capo d’abbigliamento al fine di stabilire quando lo stesso dovrà essere messo a lavare.

Schema Concettuale: ER

Layer 1 CAPI DI ABBIGLIAMENTO descrizione foto tipologia(...) data prezzo totGiorni

Nota.

Indichiamo che un attributo può assumere valori da un dominio specifico con i puntini sospensivi in parentesi. Nel nostro esempio l'insieme di riferimento potrebbe essere: (maglia, pantaloni, pantaloncini, camicia, giacca, scarpe, felpa, maglione, gonna, ciabatte).

Nota.

Nei database esiste anche il tipo data.

Schema logico: relazionale

capiDiAbbigliamento (id, descrizione, foto, tipologia, data, prezzo, totGiorni)

Esempio di istanza

id descrizione foto tipologia data prezzo totGiorni
1 raduno vasco \img\mr.png maglia '2014-8-15' 0 2
2 tasconi nero \img\tn.png pantaloncini '2013-7-11' 35 0
3 converse all star \img\cas.png scarpe '2014-6-5' 70 50
4 zip grigia cappuccio \img\zgc.png felpa '2013-7-5' 45 12
5 breaking bad \img\bb.png maglia '2014-6-8' 30 0
6 quadroni \img\q.png camicia '2008-10-10' 10 0

Interrogazione - 1

Mostrare la descrizione di tutti i capi puliti.

select descrizione
from capiDiAbbigliamento
where totGiorni=0
descrzione
tasconi nero
breaking bad
quadroni

Interrogazione - 2

Mostrare descrizione e tipologia di tutti i capi con un prezzo compreso tra i 20 e i 50 euro

select descrizione, tipologia
from capiDiAbbigliamento
where (prezzo>=20)and(prezzo<=50)
descrizione tipologia
tasconi nero pantalancini
zip grigia cappuccio felpa
breaking bad maglia

Interrogazione - 3

Selezionare l’id di tutti i capi usati almeno una volta ma meno di venti.

select id
from capiDiAbbigliamento
where (totGiorni>0) and (totGiorni<20)
id
1
4

Interrogazione - 4

Selezionare le descrizioni di tutte le tuple con id pari a 4, 5 o 6.

select descrizione
from capiDiAbbigliamento
where (id=4) or (id=5) or (id=6)
descrizione
zip grigia con cappuccio
breaking bad
quadroni

Nota.

Il termine riga può essere sostituito con tupla o ennupla.

Interrogazione - 5

Mostrare la descrizione e la tipologia di tutte le maglie e le camicie indossate da almeno 2 giorni.

select descrizione, tipologia
from capiDiAbbigliamento
where ( (totGiorni>=2) and ( (tipologia='maglia') or (tipologia='camicia') ) )
descrizione tipologia
raduno vasco maglia

Interrogazione - 6

Mostrare tipologia e descrizione di tutte le ennuple relative ai capi che non ci sono stati regalati.

select tipologia, descrizione
from capiDiAbbigliamento
where (prezzo != 0)
tipologia descrizione
pantaloncini tasconi nero
scarpe converse all star
felpa zip grigia cappuccio
maglia breaking bad
camicia quadroni

Nota.

Il simbolo di diverso è != oppure <>

Interrogazione - 7

Mostrare la descrizione di tutti gli oggetti comprati nel 2014.

select descrizione
from capiDiAbbigliamento
where (data >= '2014-01-01') and
      (data <= '2014-12-31') and
      (prezzo > 0)
descrizione
converse all star
breaking bad

Nota.

Le costanti di tipo data si indicano tra apici descrivendo prima l'anno, poi il mese e poi il giorno separando gli elementi con un trattino.

Challenge

Challenge - 1

Aggiungere all’istanza di database mostrata altre sei tuple.

Challenge - 2

Qual è il risultato di questa interrogazione applicata all'istanza di database appena costruita?

select tipologia
from capiDiAbbigliamento
where id < 7

Challenge - 3

Qual è il risultato di questa interrogazione applicata all'istanza di database appena costruita?

select foto
from capiDiAbbigliamento
where (tipologia != 'scarpe') and (prezzo>30)

Challenge - 4

Scrivere l’interrogazione che presenti l’elenco delle immagini delle maglie che costano almeno 20 euro.

Challenge - 5

Scrivere l’interrogazione che presenti tutti i dati della tupla relativa alla maglia di breaking bad.

Challenge - 6

Scrivere l’interrogazione che presenti l’elenco dei capi di abbigliamento (descrizione, tipologia e data di acquisto) comprati prima del 2010.

Challenge - 7

Scrivere l’interrogazione che presenti foto e prezzo di tutte le maglie, di tutte le camicie e di tutte le giacche presenti nel database.