leggi

Transcript

leggi
Esercizio 1
Definire uno schema E-R adatto alla realizzazione di una base di dati per il campionato italiano di
calcio stagione 2013/14. Tra le informazioni da memorizzare abbiamo quelle relative a giocatori ed
allenatori, entrambi caratterizzati da codice fiscale, nome e cognome. Inoltre, per i calciatori si vuole
memorizzare il ruolo in cui giocano, mentre per ciascun allenatore si vuole conoscere quante squadre
di calcio differenti ha allenato nelle precedenti stagioni. Ogni allenatore avrà una quadra da allenare;
tuttavia, per ragioni di calcio-mercato, qualche giocatore potrebbe non giocare in nessuna squadra.
Chiaramente, ogni squadra ha un solo allenatore ed almeno 11 giocatori. Una squadra è
caratterizzata dal suo nome e dalla serie di appartenenza (‘A’, ‘B’ o ‘C’). Ad inizio campionato, si vuole
memorizzare l’intero calendario delle partite, tenendo presente che esse sono caratterizzate da:
numero giornata, data, squadra che gioca in casa e squadra che gioca fuori casa. Man mano che si
svolgono le partite, si vuole memorizzare l’esito delle stesse mediante i goal fatti dalle varie squadre.
Esercizio 2 nonché Soluzione Esercizio 1
Dato il seguente schema E-R, definire un modello relazionale equivalente.
La generalizzazione è Totale/Esclusiva.
Esercizio 3 nonché Soluzione Esercizio 2
Si consideri il seguente schema relazionale:
Partita(nGiornata, Squadra-inCasa, goalSquadraInCasa*, Squadra-ospite, goalSquadraOspite*, data)
Squadra(Nome, Serie)
Giocatore(CF, Nome, Cognome, Ruolo, Squadra-diGioco*)
Allenatore(Squadra-allenata, CF, Nome, Cognome, nSquadreAllenate)
Formulare in SQL le seguenti interrogazioni:
1. L’elenco delle squadre che giocano in serie ‘A’ e che hanno fatto almeno 5 goal in qualche
partita giocata fuori casa.
2. Nome e cognome dei giocatori che giocano in squadre di serie ‘B’, le quali sono allentate da
allenatori che hanno già allentato esattamente alte 4 squadre.
3. Il numero totale di goal fatti in casa dalla ‘Fiorentina’.
Soluzione Esercizio 3
Query 1:
SELECT Nome as NomeSquadra
FROM Squadra, Partita
WHERE Serie = ‘A’
Squadra-ospite = Nome AND
goalSquadraOspite >= 5;
Query 2:
SELECT G.Nome, G.Cognome
FROM Giocatore G, Squadra S, Allenatore A
WHERE G.Squadra-diGioco = S.Nome AND
S.Serie = ‘B’ AND
S.Nome = A.Squadra-Allenata AND
A.nSquadreAllenate = 4;
Query 3:
SELECT sum(goalSuadraInCasa) as GoalFattiInCasadallaFiorentina
FROM Partita
WHERE Squadra-inCasa = ‘Fiorentina’;