Progettare una base dati per gestire Attori, Registi, Film, Sale, Cinema e Proiezioni.
Attori e Registi sono identificati da un codice e di essi interessano anche il nome, nazionalità e l’anno di nascita.
I Film sono identificati da un codice e di essi interessano anche il titolo, l’anno di produzione, il regista, gli attori che vi recitano e, per ogni attore,
se è protagonista o non protagonista.
Il Cinema è identificato da un codice e di essi interessano anche un nome, dalla città e dal numero di sale. La Sala è identificata dal cinema di appartenenza,
un numero univoco e deve essere indicato se è 3D o meno.
La Proiezione è il Film trasmesso in una determinata Sala e viene caratterizzata dalla data, l’ora e il numero di spettatori.
Scrivere le interrogazioni SQL che permettono di ottenere:
Per testare le Query, è stato creato e popolato un database. Lo script per importarlo è
al seguente
link.
A differenza del
disegno fisico, le tabelle hanno preso un nome che riporta il suffisso "ES1", per indicare che si tratta della base dati dedicata alla prima
esercitazione.
La query che produrrà come risultato Tutti i FILM del REGISTA 'George Lucas', sarà una interrogazione
tra due tabelle: FILM e REGISTA. Dopo la clausola SELECT si specificano gli attributi del film che interessano
(titolo, anno).
Dopo il FROM si indicano le tabella da cui ricavare i dati (ES1_FILM, ES1_REGISTA).
Dopo il WHERE, per prima cosa leghiamo le tabelle. Dal disegno del database vedere come sono collegate quindi inserire
la clausola per legarle (relazione fucsia - codice_regista in FILM con il codice in REGISTA).
Un'ulteriore condizione è che il REGISTA abbia il nome 'George Lucas'.
Provare a scrivere la query prima di verificare la soluzione.
In questa query vengono chiesti sempre come risultato i FILM ma la selezione riguarda ATTORE e quindi la tabella che
lega ATTORE_FILM.
Dopo la clausola SELECT si specificano gli attributi del film che interessano
(titolo, anno).
Dopo il FROM si indicano le tabella da cui ricavare i dati (ES1_FILM, ES1_ATTORE, ES1_ATTORE_FILM).
Dopo il WHERE, per prima cosa leghiamo le tabelle. Dal disegno del database vedere come sono collegate quindi inserire
la clausola per legarle.
Un'ulteriore condizione è che sul nome nome dell'Attrice 'Natalie Portman'.
Provare a scrivere la query prima di verificare la soluzione.
La query che produrrà come risultato Il cinema con maggior numero di sale nella città di ROMA, sarà una interrogazione
su una sola tabella: CINEMA. Dopo la clausola SELECT si specifica il nome del CINEMA di interesse.
Dopo il FROM si indica l'unica tabella da cui ricavare i dati (ES1_CINEMA).
Dopo il WHERE indichiamo che la città deve essere ROMA.
Un ulteriore condizione è che il numero di sale deve essere il numero MASSIMO in tutta la città di ROMA. Questo si traduce con
una ulteriore interrogazione perché il cinema che cerchiamo è proprio quello che ha il numero massimo di sale nella città di ROMA.
Provare a scrivere la query prima di verificare la soluzione.
In questa query viene richiesto un elenco di FILM ma selezionati tramite le proiezioni e la data in cui sono
stati proiettati.
Dopo la clausola SELECT si specificano gli attributi del film che interessa (titolo) e il numero degli spettatori, attributo contenuto
nella tabella PROIEZIONI.
Il fatto che venga chiesto il TOTALE degli spettatori in una certa data, fa capire che
dovrà essere usata una funzione di aggregazione (GROUP BY per film e anche per data) e la somma dell'attributo 'numero_spettatori'.
Provare a scrivere la query prima di verificare la soluzione.