Esercitazione: Film - Cinema con soluzione passo passo

Traccia

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:

  • 1. Tutti i film del regista ‘George Lucas’
  • 2. Tutti i film in cui recita ‘Natalie Portman’
  • 3. Il cinema con maggior numero di sale nella città di ROMA
  • 4. L’elenco dei film e il totale degli spettatori che lo hanno visto il giorno 03/03/2014.


Soluzione seconda parte - Le Query


Presupposto

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.


Prova la tua query SQL:

SELECT titolo, anno FROM ES1_FILM;





Soluzione

Prima Query

Tutti i film del regista ‘George Lucas’


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.


Seconda Query

Tutti i film in cui recita ‘Natalie Portman’

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.

Soluzione



Soluzione

Terza Query

Il cinema con maggior numero di sale nella città di ROMA


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.


Quarta Query

L’elenco dei film e il totale degli spettatori che lo hanno visto il giorno 03/03/2014

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.

Soluzione