M070-2008-Olimpiadi Internaziona Olimpiadi Internazionali di

M070-2008-Olimpiadi
Olimpiadi Internazionali di Informatica
Analisi
… da sviluppare
Modello c concettuale
Alcune osservazioni:
Entità Gara, attributo record: è stato previsto solo perché richiesto nella query “aggiornare, per ciascuna
fase (scolastica, regionale, nazionale, internazionale) gli eventuali punteggi record”. L’uso del termine
“aggiornare” fa pensare al fatto che questo valore debba essere memorizzato nel database e modificato
quando necessario. Daa notare comunque che in generale è sconsigliato l’inserimento di attributi derivati,
ed in questo caso in effetti il valore del record potrebbe essere calcolato a partire dai punteggi.
Entità Gara, attributo Fase:: deve assumere uno dei seguenti valori: scolastica,
scolastica, regionale, nazionale,
internazionale
Entità Squadra, attributo CodSquadra: Il nome della squadra può essere considerato univoco e quindi si
può sceglierlo come chiave primaria. Si preferisce però, inserire un codice numerico come chiave primaria,
primari
perché risulta più efficiente la gestione delle chiavi esterne.
1
Schema logico della base di dati
Squadra(CodSquadra, NomeSquadra)
Nazione(CodNazione, Nome)
Atleta (CodAtleta, Cognome, Nome, DataNascita, fkSquadra, fkNazione)
Gara(CodGara, Data, Fase, Record)
Sede(CodSede, Denominazione, Indirizzo, Citta, Regione, fkNazione)
PunteggioAtleta(fkAtleta, fkGara, punteggio)
PunteggioSquadra(fkSquadra, fkGara punteggio)
GaraSede(fkGara, fkSede)
Sono stati sottolineati i campi chiave principale, mentre le chiavi straniere sono scritte in corsivo.
Non si discutono qui i vincoli di integrità che saranno comunque esplicitati in fase di definizione delle
relazioni in SQL.
Si osserva che lo schema logico proposto rispetta le prime tre forme normali.
2
Definizione delle relazioni della base di dati in linguaggio SQL
DBMS di riferimento : MySQL 5.6, utilizzato su Altervista nelle esercitazioni durante l’anno scolastico con
motore INNODB.
Database: my_mirprof
Tabella: Squadra
Tabella: Nazione
Nell’esempio sono utilizzati alcuni codici ISTAT degli Stati esteri
3
Tabella: Atleta
4
Tabella: Gara
Tabella: PunteggioAtleta
5
Tabella: PunteggioSquadra
6
Interrogazioni espresse in linguaggio SQL
1. stampare l’elenco degli atleti raggruppati per squadre per ogni singola fase
2. dato il nome di un atleta stampare i risultati ottenuti nelle diverse gare alle quali ha partecipato
Il testo viene interpretato nel seguente modo: elencare i risultati delle gare a cui l’atleta ha partecipato
come singolo, in quanto nell’altro caso i risultati sono della squadra, non dell’atleta.
3. stampare il calendario delle gare
SELECT CodGara, Data, Fase
FROM Gara ;
7
Si può migliorare questa query in due modi.
• Aggiungere un campo alla tabella gara per indicare se si tratti di una individuale o una a squadre
• Aggiungere i dati delle sedi dove si svolgono le gare
---
4. stampare una scheda informativa (cognome, nome, istituto scolastico di provenienza, nazionalità) del
vincitore e della squadra vincitrice •
5.
stampare la classifica per ciascuna gara (a parità di punteggio vengono privilegiati gli atleti più
giovani)
6.
aggiornare, per ciascuna fase (scolastica, regionale, nazionale o internazionale) gli eventuali punteggi
record
Si può migliorare questa query andando a calcolare il massimo dei punteggi ottenuti nella gara
7. calcolare il punteggio medio ottenuto durante la prima selezione, per ciascun istituto scolastico
8. stampare per ciascuna squadra il numero di “atleti” partecipanti e l’età media
8
Nota: i dati si riferiscono alle olimpiadi 2016 (invece che a quelle 2008).
9