Progetto per il corso di basi di dati (CRIAI)
Campionato di calcio
Luca Marchesano
Descrizione e specifiche
Specifiche sui dati
Si vuole costruire una base di dati per le informazioni relative a un campionato di calcio. Una partita è caratterizzata dal girone e dalla giornata in cui si è svolta, dal numero progressivo nella giornata, dalla data, dalle squadre fra cui la partita è stata disputata. Ogni squadra è caratterizzata dal nome, dalla città e dal nome dell'allenatore. Inoltre, per ogni partita si vuole registrare se la squadra ha giocato o meno la partita in casa. Di ogni squadra sono noti i giocatori, ognuno dei quali caratterizzato da nome, data e città di nascita e ruolo principale. Per ogni giornata del campionato si vogliono sapere i punti relativi a ogni squadra, i giocatori di ogni squadra che hanno effettivamente giocato ed in che ruolo. Per ogni partita, si vuole tenere traccia dell'arbitro, caratterizzato dal nome e dalla città di nascita. Si vuole inoltre tenere conto del fatto che una partita possa essere rinviata, nonché giocata da una squadra in una sede diversa dalla propria città. In ambedue i casi, si vuole tenere traccia anche della motivazione.
Per semplificare il problema, si considereranno solo i gironi A e B del campionato di calcio italiano (serie A a 18 squadre e serie B a 20 squadre). Inoltre si assumerà che non esistano giocatori con stesso nome, cognome e data di nascita e arbitri con stesso nome e città di nascita.
Specifiche sulle operazioni
Per la gestione di un campionato di calcio, sono necessarie alcune operazioni, brevemente descritte di seguito:
- O1 Per ogni giornata, si devono inserire i dati relativi a tutte le partite giocate nella giornata (partita, arbitro, punteggi, giocatori presenti).
- O2 Per ogni giornata, si vogliono determinare i giocatori che hanno effettivamente giocato, e in che ruolo.
- O3 Per ogni partita, si vuole tenere traccia dell'arbitro.
- O4 Per ogni partita, si vuole verificare se la data e/o la sede sono variate per motivazioni esterne.
- O5 Per ogni giornata, si vuole stampare la classifica.
Analisi dei requisiti
Glossario dei termini
| Termine | Descrizione | Sinonimi | Termini collegati |
|---|---|---|---|
| Arbitro | È il direttore dell'incontro | - | Squadra, Incontro |
| Calciatore | È uno dei componenti della squadra | Giocatore | Squadra |
| Giornata | È l'insieme degli incontri dei vari gironi del campionato | - | Squadra, Incontro |
| Partita | È l'evento sportivo che coinvolge due squadre | Incontro | Giocatore, Squadra, Arbitro |
| Squadra | È l'insieme dei giocatori tesserati da una società che partecipa al torneo | - | Giocatore, Partita |
Dati sulla partita
Una partita è caratterizzata da un indicativo della giornata in cui è disputata, da un numero di progressivo di collocazione all'interno della giornata, dal girone di appartenenza, dalla data di disputa, dalle squadre che hanno preso parte all'incontro e da un'indicazione sulla squadra che ha giocato in casa. Inoltre, per ogni partita, è necessario identificare l'arbitro, la data e la sede alternative con una motivazione sulle eventuali cause dello spostamento.
Dati sulla squadra
Una squadra è caratterizzata dal nome, dalla città di appartenenza e dal nome dell'allenatore. Inoltre, per ogni squadra, sono noti tutti i giocatori tesserati.
Dati sul giocatore
Un giocatore è identificato mediante il nome, la data di nascita, la città di nascita e il ruolo principale.
Dati sulla giornata
Una giornata è contraddistinta mediante un identificativo e una classifica relativa ai gironi del campionato.
Progettazione concettuale
Lo schema scheletro identificato per la gestione minimale del campionato di calcio è il seguente: Partita, Squadra, Statistiche.
Procedendo a macchia d'olio, si arriva allo schema intermedio riportato di seguito:
Data, Città, Motivazione, Rinvio (1,1) Nome, Posticipo Città, Allenatore (0,n)(0,n) (1,1) (1,n), Arbitro, Partita, Squadra, Direzione, Statistiche (1,n) (1,n), Giornata, Nome, Punti, In casa, Città di nascita, Progressivo, Girone, Contratto, Data (0,1)(0,n), Giocatore, Presenza, Ruolo, Nome, Data di nascita, Città di nascita, Ruolo principale.
Si assume implicitamente che, nell'entità PARTITA, Squadra 1 sia la squadra che ha giocato in casa e Squadra 2 sia la squadra che ha giocato fuori casa. L'unica ristrutturazione sembrata necessaria, al fine di separare eventi di natura diversa, ha portato alla suddivisione dell'entità RINVIO in due relazioni distinte, RINVIO (recante informazioni sugli slittamenti temporali degli incontri) e SEDE (recante informazioni sugli slittamenti logistici degli incontri).
Lo schema ristrutturato è il seguente:
Motivazione, Data, Città, Rinvio, Sede, Posticipo, Spostamento (1,1) (1,1) Nome, Città, Allenatore (0,n) (0,n)(0,n) (1,1) (1,n) (1,n), Partita, Squadra, Arbitro, Direzione, Statistiche (1,n) (1,n), Nome, Giornata, Punti, In casa, Città di nascita, Progressivo, Girone, Contratto, Data (0,1)(0,n), Giocatore, Presenza, Ruolo, Nome, Data di nascita, Città di nascita, Ruolo principale.
Lo split di questa entità, però, annulla la possibilità di identificare univocamente le occorrenze delle due nuove entità (è possibile avere più rinvii temporali nella stessa data, così come è possibile avere più rinvii logistici nella stessa città).
Analisi delle funzioni
Dizionario dei dati - Entità
| Entità | Descrizione | Attributi | Identificatore |
|---|---|---|---|
| Arbitro | È il direttore dell'incontro | Nome, Città di nascita | Nome, Città di nascita |
| Giocatore | È uno dei componenti della squadra | Nome, Città di nascita, Data di nascita, Ruolo principale | Nome, Data di nascita |
| Partita | È l'incontro di calcio disputato | Giornata, Progressivo, Girone, Data | Giornata, Progressivo |
| Sede | Reca informazioni sullo slittamento logistico di una partita | Città, Motivazione | - |
| Squadra | Rappresenta le informazioni identificanti la singola squadra iscritta al campionato | Nome, Città, Allenatore | Nome |
| Rinvio | Reca informazioni | - | - |