Esercizi sul modello relazionale (superiori)

I seguenti esercizi riguardano Modello Relazionale studiati nella Lezione 5 della Parte Seconda. Essi sono divisi per paragrafi in modo tale da favorire la scelta degli esercizi specifici.

quiz
quiz
Esercizi sul modello relazionale (superiori)
Tipo di risorsa Tipo: quiz
Materia di appartenenza Materia: Informatica (istituti tecnici) per le superiori
Avanzamento Avanzamento: quiz completo al 00%

Es Concessionaria Moto

modifica

Si vuole costruire un database per aiutare un concessionario di moto nella sua attività . Nel database si vogliono registrare i dati anagrafici dei clienti e i contratti dei clienti che acquistano le moto. Le moto presenti nella concessionaria appartengono a una o più categorie (125, 250, 500, cross, motard,custom, etc) e sono state acquistate dalle principali case motociclistiche (Honda, Kawasaki,Aprilia, Ducati) tramite un distributore di zona.

MODELLO E/R
 
Modelloer
MODELLO RELAZIONALE


Vediamo ora le tabelle (relazioni) che si devono implementare nel database

Clienti
NomeCampo Tipo Informazioni
IDCliente intero chiave primaria
Nome testo
Cognome testo
Codicefiscale testo
Moto
NomeCampo Tipo Informazioni
IDMoto intero chiave primaria
Colore testo
Prezzo valuta
IDCliente intero chiave esterna
IDAziende intero chiave esterna
Azienda Motociclistica
NomeCampo Tipo Informazioni
IDAziende intero chiave primaria
Nome testo
Responsabile testo
Categorie
NomeCampo Tipo Informazioni
IDCategorie intero chiave primaria
Descrizione testo
SelezioneCategoria
NomeCampo Tipo Informazioni
IDMoto intero chiave esterna
IDCategorie intero chiave esterna

Es Agenzia Immobiliare

modifica

Agenzia Immobiliare: Un'agenzia immobiliare vuole gestire le sue attività aiutandosi con un database. L'agenzia vuole registrare i dati anagrafici dei suoi clienti e i dati delle unità immobiliari che tratta . Un cliente può comprare tutto un immobile o una quota di esso. Le unità immobiliari appartengono a una specifica tipologia (terreni, case, ville e appartamenti, etc). Le persone che hanno messo in vendita (venditori) l'immobile tramite l'agenzia ne possiedono sempre l'intera proprietà.

MODELLO E/R

Per costruire il modello E/R è necessario individuare le entità con i rispettivi attributi, le associazioni e le proprietà delle associazioni (grado e opzionalità).

 

MODELLO RELAZIONALE

Nell'immagine sono rappresentate alcune tabelle, ciascuna di esse rappresenta un'entità. Nel secondo campo è inserito il tipo di dato e nel terzo campo alcune informazioni aggiuntive come PK (primary key / chiave primaria)e FK (foreign key/ chiave esterna).

 

Si ricorda che le associazioni 1:N o N:1 portano alla creazione di un campo nella tabella lato "a molti" che contiene una chiave esterna che si collega con una chiave primaria nella tabella lato "a uno". Le associazioni N:N portano invece alla creazione di una tabella che contiene due chiavi esterne di cui una collegata alla chiave primaria della prima tabella e una alla chiave primaria della seconda tabella, più eventuali attributi che riguardano delle associazioni.

Es Mercato del Pesce

modifica

Es1 PrenotazioneVaporetto

modifica

Agenzia NaveBlu

modifica

L'agenzia NaveBlu di Portotolle cura la vendita ai turisti di viaggi lungo il Po a bordo delle barche dei Pescatori del luogo. Ciascun viaggio dura un sol giorno. Ogni Pescatore ha una sola barca con un certo numero di posti disponibili e il viaggio si snoda lungo un itinerario prefissato che tocca caratteristiche località del Delta Polesano .Ogni Itinerario ha una sequenza di località decisa dal Capitano della Nave , che può essere riproposta anche in giorni diversi. Ogni capitano può offrire più itinerari (in giorni diversi). Di ciascuna località visitata lungo un particolare itinerario vengono registrate diverse informazioni: una descrizione , due foto , 3 consigli su cosa visitare e un luogo dove poter mangiare del buon pesce.

 
Delta Po Boccasette

L'agenzia che vende i biglietti per potersi imbarcare, deve poter visualizzare per una certo giorno l'elenco dei possibili itinerari con il numero di posti ancora disponibili. Ogni pescatore deve poter conoscere i nominativi delle persone che in una certa data si dovranno imbarcare. L'agenzia per un particolare itinerario relativo a un certo giorno deve poter visualizzare il numero di posti ancora disponibili. L'agenzia fissata una certa località e una certa data deve poter visualizzare i viaggi che la comprendono nel proprio itinerario. L'agenzia inoltre può stampare le informazioni di un particolare itinerario e il suo costo.

Definisci un database per gestire il servizio.

Soluzione:

 
modello relazionale Pescatori

1) creare un elenco di tutti i pescatori ordinati (senso crescente) per nominativo

select *
from pescatori
order by nominativo

2) creare un elenco dei pescatori ordinato (senso decrescente) per idpescatore che visualizzi idpescatore, nominativo e il nome

della barca

select idpescatore,nominativo,nomebarca
from pescatori
order by idpescadore DESC

3) visualizzare un elenco delle località che abbiano 2 foto, si vuole evidenziare idlocalità descrizione foto1 foto2 e

ristorante

select idlocalita , descrizione,foto1,foto2,ristorante 
from localita
where foto1 is not null && foto2 is not null

4) trovare tutti i clienti (visualizzarli ordinati per cognome e nome) che hanno il cognome che inizia per R

select cognome,nome,idcliente,telefono,indirizzo
from clienti
where cognome like 'R%'
order by cognome,nome

5) visualizzare tutte le località ( idlocalita,descrizione e ristorante) di un itinerario di cui si conosce l'id è 5

select dlocalita,descrizione,ristorante
from localita join localitaitinerario on localita.idlocalita = localitaitinerario.idlocalita
where localitaitinerario.iditinerario= 5

oppure

select dlocalita,descrizione,ristorante
from localita , localitaitinerario 
where localitaitinerario.iditinerario= 5 AND  localita.idlocalita = localitaitinerario.idlocalita

6) trovare tutti i viaggi che si svolgono fra il 12/1/2016 e il 14/1/2016 ordinati per prezzo il cui capitano sia il signor

marco rossi (nominativo)

select idviaggio,iditinerario,data,prezzo
from viaggi join pescatori on viaggi.idpescatore=pescatori.idpescatore
where nominativo='marco rossi' and  dataviaggio between '12/1/2016' and '14/1/2016'
order by prezzo

7) calcolare del viaggio con id=234 quanti posti sono stati prenotati ( calcolarlo mediante le prenotazioni effettuate)

select sum(persone)
from prenotazioni
where idviaggio=234

commenta la presenza della voce posti prenotati nella tabella viaggi

8) calcolare quante prenotazioni ha fatto il signor marco rossi (pensiamo sia l'unico cliente con questo nome)

select count(*)
from prenotazioni join clienti on prenotazioni.idcliente = clienti.idcliente
where cognome='rossi' and nome='marco'

9) per ogni pescatore calcolare quanti sono stati i viaggi svolti nel mese di gennaio 2013

select idpescatore, count(*)
from viaggi
where dataviaggio between '1/1/2013' and '31/1/2013'
group by idpescatore

10) visualizza il viaggio ( con tutte le informazioni) più costoso di oggi

select top 1 *
from viaggi
where dataviaggio= now()
order by costo

11) visualizza tutti i viaggi che si svolgono il 2/3/2016 e che hanno fra le località del loro itinerario "boccasette" (

boccasette è una parola presente nella descrizione della località

select idviaggio, iditinerario
from viaggi,itinerario,localitaitinerario,localita
where viaggi.iditinerario=itinerario.iditinerario and itinerario.iditinerario=localitaitinerario.iditinerario and
      localitaitinerario.idlocalita = localita.idlocalita and localita.descrizione like '%boccasette%
      and viaggi.dataviaggio='2/3/2016'

12) trova il nominativo del pescatore più anziano

select nominativo
from pescatori
where datanascita = ( select min(datanascita)
                     from pescatori
                    )

13) visualizza tutti i clienti con i posti prenotati da ciascuno per il viaggio 345 (evidenzia lo stato del pagamento)

select idcliente,cognome,nome, persone,pagato
from clienti,prenotazioni
where clienti.idcliente=prenotazioni.idcliente AND idviaggio=345

14) si vuole stampare il percorso (localita dopo localita) di un particolare itinerario discuti del problema che sorge nel

ottenere questa informazione e indica il rimedio

15) visualizza ogni pescatore che ha visto salire a bordo il cliente 1234 un numero di volte maggiore di 3

select idpescatore
from prenotazioni,viaggi
where prenotazioni.idviaggio = viaggi.idviaggio and idcliente= 1234
group by idpescatore
having count(*)> 3

16) visualizza tutti i dati di un cliente il cui id viene scelto al momento dell'interrogazione

select *
from clienti
where idcliente=[inserisci id cliente]

Es2 InterrogazioniPianificate

modifica

Interrogazioni Pianificate

modifica

Antonio detto Pisolo è stanco di dover fare più compiti o interrogazioni nello stesso giorno e ha deciso di scrivere un database per aiutare gli insegnanti a pianificare le interrogazioni e i compiti scritti. Ogni insegnante della sua classe può vedere gli studenti che possono essere interrogati in un certo giorno , visualizzando per primi quelli con meno interrogazioni .

 
Studenti ULBS

Uno studente nel giorno in cui è fissata una prova scritta o una interrogazione non può essere sottoposto ad altre prove.Nel database vengono registrate le valutazioni delle prove sostenute. Ogni insegnante insegna una sola materia.

Il database permette ad ogni studente di visualizzare in un certo intervallo di tempo quali sono le verifiche da sostenere.

Definisci un database per gestire il servizio. Soluzione:

 
modello relazionale studenti

Es2 TaglioFashion

modifica

TaglioFashion

modifica

Antonella ha un negozio di parucchiera il suo negozio TaglioFashion è molto di moda e i clienti non mancano, per evitare attese troppo lunghe ha deciso di offrire il servizio solo su appuntamento.Vuole che i clienti fissino gli appuntamenti specificando i possibili servizi che sono: taglio, casco e trucco. Ha prestabilito che per un taglio impiega 20 minuti, per il casco 30 e per il trucco 40 minuti, ad ogni registrazione il computer indica l'orario in cui presentarsi. Il negozio apre alle ore 9:00 e lei lavora senza pause per 8 ore. I clienti possono scegliere il giorno dell'appuntamento ma non l'orario.

 
Barber rejoins service

Antonella può per ciascun giorno visualizzare i nomi dei clienti, l'orario e i servizi richiesti. Può anche vedere i clienti che nel mese hanno utilizzato per più tempo i suoi servizi e il guadagno fatto a fine di ciascuna giornata, decidi tu il costo dei 3 servizi

Definisci un database per gestire il servizio.

Soluzione

 
modello relazionale EsercizioFashion