PDA

View Full Version : [Esami di Basi di Dati] progetto Fantacalcio


TorpedoBlu
07-01-2005, 18:36
Dunque, per l'esame di basi di Dati devo scegliere tra 2 progetti:
http://islab.dico.unimi.it/basi/progetto.php

1 Introduzione

Una societ`a specializzata nello sviluppo di giochi on-line intende offrire alla propria clientela
un’applicazione che permetta ad ogni utente registrato di creare e gestire la propria squadra di
fantacalcio per partecipare ad un ipotetico campionato virtuale.
2 Descrizione del dominio

Il gioco del fantacalcio consiste in un insieme di concorrenti che si improvvisano manager e
allenatori di una squadra di calcio costruendo una rosa di giocatori con la quale partecipare ad
un campionato virtuale. Il gioco prevede che ogni concorrente abbia a disposizione un budget
iniziale con il quale costruire la rosa di giocatori (squadra) con cui parteciper`a al gioco. La rosa
`e composta da un numero prefissato di portieri, difensori, centrocampisti e attaccanti selezionati
da un elenco predefinito. Ogni giocatore `e caratterizzato da un ruolo (i.e., portiere, difensore,
centrocampista, attaccante) e da una quotazione. L’acquisto di un giocatore comporta la spesa
della quotazione a lui associata; la spesa per l’acquisto dell’intera rosa non deve superare il
budget a disposizione del concorrente.
2.1 Campionato
Una volta composta la rosa di giocatori, ogni concorrente partecipa al campionato virtuale.
Sono previste un numero fissato di giornate di gioco, per ognuna delle quali il concorrente dovr`a
schierare una formazione di giocatori selezionati dalla propria rosa . Al termine di ogni giornata
i giocatori ricevono una valutazione; la somma delle valutazioni dei giocatori titolari schierati
in formazione costituisce il punteggio di ogni concorrente. I concorrenti vengono classificati
sulla base del punteggio che hanno realizzato; dopo ogni giornata di gioco la classifica viene
aggiornata sommando i punteggi realizzati da ogni concorrente. Il concorrente che alla fine di
tutte le giornate di gioco ha realizzato il punteggio pi`u alto vince il campionato.
2.2 Formazione
Ogni formazione deve rispettare un modulo di gioco. Prima di ogni giornata di gioco, tale modulo
viene selezionato da ciascun concorrente da un insieme di moduli di gioco ammissibili.
E’ possibile che al termine di una giornata di gioco non tutti i giocatori abbiamo ricevuto una
valutazione. Nel caso in cui un giocatore titolare non abbia ricevuto la valutazione, questo
verr`a automaticamente sostituito dal primo giocatore di pari ruolo disponibile in panchina. Nel
caso in cui nessun giocatore di pari ruolo in panchina abbia ricevuto valutazione, oppure non
ci siano abbastanza giocatori in panchina per sostituire tutti i giocatori titolari privi di valutazione,
ciascun giocatore titolare privo di valutazione viene escluso dal conteggio del punteggio
finale del concorrente. In questo caso per ogni giocatore titolare privo di valutazione che non `e
stato possibile sostituire, la formazione beneficia di un bonus pari al voto del giocatore con la
valutazione pi`u bassa decrementata di 1.
I giocatori titolari che hanno ricevuto una valutazione non possono essere sostituiti.
2.3 Vincoli
La societ`a di giochi on-line prevede inoltre che i seguenti vincoli vengano rispettati:
• Non `e prevista nessuna forma di contrattazione e di asta fra concorrenti per la creazione
della rosa di giocatori.
• Un giocatore pu`o appartenere a diverse squadre: il fatto che un concorrente selezioni un
giocatore per la sua rosa non impedisce che altri concorrenti possano includere lo stesso
giocatore nella propria rosa.
• La rosa di giocatori di ogni concorrente deve essere cos`ı composta: 3 portieri, 8 difensori,
8 centrocampisti, 6 attaccanti per un totale di 25 giocatori.
• La formazione schierata da ogni concorrente prevede 11 giocatori titolari e 7 giocatori in
panchina. La composizione dei titolari dipende dal modulo di gioco adottato dal concorrente,
mentre la panchina `e composta da 1 portiere, 2 difensori, 2 centrocampisti, 2
attaccanti.
• Non esiste un numero massimo di sostituzioni: se necessario, tutti i giocatori in panchina
possono sostituire dei titolari che non hanno ricevuto valutazione a condizione che la
sostituzione avvenga fra giocatori di pari ruolo.
• Il budget iniziale di ogni concorrente `e fissato in 300 fantamiliardi.
2.4 Categorie di utenza
Sono previste due categorie di utenza:
• Concorrente. Registrandosi all’applicazione partecipa al gioco del fantacalcio. In particolare,
ogni concorrente compone la propria rosa di giocatori a cui assegna un nome e, per
ogni giornata di gioco, seleziona un modulo di gioco fra quelli possibili e schiera la propria
formazione.
• Amministratore. Amministra le parti organizzative del gioco. In particolare le seguenti
attivit`a sono di sua esclusiva competenza:
– Gestione dell’elenco predefinito di giocatori. L’amministratore mantiene la
lista completa dei giocatori con i rispettivi ruoli e quotazioni. La cancellazione di un
giocatore o la modifica del ruolo e della quotazione di un giocatore `e possibile solo
se il giocatore non `e incluso nella rosa di nessun concorrente. L’amministratore pu`o
inoltre aggiungere nuovi giocatori in qualsiasi momento.
– Definizione di periodi di aggiornamento. L’amministratore fissa dei periodi nei
quali ogni concorrente pu`o intervenire sulla propria rosa e modificarla eliminando
dei giocatori e sostituendoli con altri. In caso di eliminazione di un giocatore dalla
rosa, la corrispondente quotazione viene reintegrata nel budget a disposizione. In
ogni caso la rosa deve essere sempre composta da 25 giocatori (3 portieri, 8 difensori,
8 centrocampisti, 6 attaccanti) e non possono essere selezionati giocatori con una
quotazione superiore al budget a disposizione.
– Assegnazione di premi e penalit`a. A suo insindacabile giudizio, l’amministratore
pu`o penalizzare o premiare un concorrente. Premi e penalit`a vanno ad incidere sul
budget a disposizione del concorrente. Se a seguito di una penalizzazione, un concorrente
si trova con un budget negativo, l’amministratore ne modifica la rosa sostituendo
uno o pi`u giocatori con altrettanti elementi di pari ruolo ma con quotazione inferiore,
fino a colmare il deficit.

– Definizione del calendario. L’amministratore definisce il numero e la data delle
giornate di gioco, nonch´e, per ogni giornata, il termine entro il quale la formazione
deve essere presentata. Se un concorrente non inserisce la formazione entro i termini
previsti dalla giornata di gioco, si considera automaticamente confermata la
formazione della giornata precedente.
– Gestione delle valutazioni. A seguito di ogni giornata di gioco, l’amministratore
inserisce le valutazioni dei giocatori, calcola i punteggi di ogni concorrente e aggiorna
la classifica.
– Definizione dei moduli di gioco ammissibili. L’amministratore definisce l’insieme
dei moduli di gioco ammissibili sulla base dei quali i concorrenti compongono
le formazioni.

3 Requisiti dell’applicazione

Obiettivo del progetto `e realizzare un’applicazione di basi di dati con interfaccia WEB
che gestisca le problematiche legate al dominio applicativo esposto in Sezione 2. La presenza
di diverse categorie di utenza impone che il progettista preveda un meccanismo di account
management in grado di offrire ai diversi utenti le funzionalit`a specifiche di cui necessitano.
In particolare vediamo, per ogni categoria di utenza, quali funzionalit`a dovranno essere rese
disponibili.

3.1 Concorrente
Ogni concorrente `e caratterizzato da generiche informazioni anagrafiche (e.g., nome, cognome,
indirizzo) e tecniche (e.g., codice identificativo, username, password). Egli dovr`a essere in grado
di autenticarsi presso il sito WEB ed usufruire delle seguenti funzionalit`a minime:
• Creare la propria rosa di giocatori a partire da un elenco predefinito. Tale selezione deve
rispettare i vincoli di composizione della rosa definiti in Sezione 2.
• Modificare la propria rosa di giocatori. Tale funzionalit`a `e accessibile solo nei periodi di
aggiornamento previsti dall’amministratore.
• Inserire la formazione in corrispondenza di ogni giornata di gioco. La formazione dovr`a
essere conforme al modulo di gioco scelto; l’applicazione dovr`a verificare questa condizione.
• Visualizzare informazioni generali sul gioco: calendario di tutte le giornate di gioco, punteggi
realizzati da tutti i concorrenti per ogni giornata, statistiche relative a ciascun giocatore
appartenente all’elenco predefinito (i.e., media valutazioni, storico valutazioni, media
ultime 5 giornate).
• Visualizzare informazioni specifiche sulla propria rosa (i.e., storico valutazioni, media
valutazioni, i giocatori migliori per ruolo, la migliore formazione possibile).
• Visualizzare informazioni specifiche sulle proprie formazioni schierate e sulle corrispondenti
valutazioni per ogni giornata di gioco.

TorpedoBlu
07-01-2005, 18:38
ho studiato un po' il libro ho imparato un po' di teoria sugli schemi ER e su SQL, ma non ho mai scritto una riga di sql.... mi date una mano, un imput o un suggerimento?

Mi è stato consigliato dal prof di usare: Apache+PostgreSQL+php+javascript+html


grazie a chiunque voglia anche darmi un incoraggiamento

GiulioCesare
07-01-2005, 19:39
Secondo me, considerando che stai cominciando ora a studiare le base dati ed sql, dovresti cominciare con il fare qualche esercizio meno complesso, per capire come funziona il tutto, poi puoi provare a fare esercizi più difficili. Per quanto riguarda questo progetto, non è difficilissimo, ma essendo abbastanza lungo, potresti dover spesso normalizzare il tutto. Se posso permettermi di darti un consiglio, prima fatti su un foglio tutte le entità possibili, con i vari attributi e associazioni e prima di implementare il database, pensa sullo schema ER che farai su carta, a come eventualmente sarà il database, quando sarà popolato, perchè facendo così potrai evitare eventuali ridondanze e problemi di associazioni, io smadonno sempre quando, dopo aver popolato tutto il database, poii mi accorgo che devo rifarlo da capo :muro:

TorpedoBlu
07-01-2005, 19:54
grazie per il consiglio, tra l'altro dovendo consegnare anche lo schema ER devo cmq fare questo lavoro, quale software + meglio per la creazione di schemi ER???

GiulioCesare
07-01-2005, 19:58
Matita e carta :)
Scherzi a parte, non ho mai usato programmi per scrivere schemi E/R

TorpedoBlu
08-01-2005, 09:06
up

TorpedoBlu
09-01-2005, 13:08
up

TorpedoBlu
10-01-2005, 10:56
up

bizzu
11-01-2005, 17:46
Scusa ma il vostro corso di basi di dati in che consisteva? in una lezione in cui vi si diceva che progetto fare?
Avrete fatto della teoria, avrete un libro di testo o degli esercizi dati dal docente... se non sai le basi teoriche è impossibile fare un progetto.

TorpedoBlu
11-01-2005, 18:50
no vabbè certo il fatto è che non ho mai iniziato da zero a fare un'applicazione dbms, sto preparando altri esami e non ho frequentato, ho studiato il libro, so la teoria sulla teoria relazionale, ma se mi metto a fare uno schema ER da zero mi sa che ci metto un mese, chiedo magari un suggerimento o se ci sono delle procedure standard che possono conoscere bene sono chi ci smanetta sempre.
Magari potete consigliarmi cosa evitare e quali entità sarebbe meglio evitare di implementare per avere meno problemi di normalizzazione. io intanto ci sto pensando e quando inizio butto qua giu qualche idea.

PS:
Ad esempio secondo voi è necessario l'attributo id per ogni giocatore o uso come chiave prim. nome+cognome?

bizzu
11-01-2005, 19:43
L'attributo id è necessario, come faresti in caso di omonimia? Inoltre lo userai per i collegamenti con le altre tabelle.
L'ER non è per niente difficile, ce la fai da solo a farlo; non ci sono "magie particolari", l'importante è trovare quali sono le entità. Poi definisci gli attributi, e infine modelli le associazioni.
Non hai bisogno di nessun programma, fallo su carta (non ho letto bene le specifiche ma saranno 10/15 entità).
Se ti interessa questo (http://www2.netwayitalia.com/snowlife/) è il progetto che avevo fatto io per basi di dati, è un gestionale fatto in ASP e Access. Io ti consiglio di usare i linguaggi che ti ha detto il tuo prof che sono meglio... Se guardi nei credits c'è la relazione, se vuoi spunti per partire leggila.
Ciao
P.S. se vuoi postare qualche abbozzo degli schemi che fai posso dargli un'occhiata ;)

TorpedoBlu
12-01-2005, 20:50
grazie mille, cmq siccome il diagramma ER lo devo consegnare lo devo disegnare con un software, il + semplice possibile.

aleraimondi
12-01-2005, 23:21
tanto per sapere torpedo, ma fai informatica in bicocca? se si anche io

TorpedoBlu
13-01-2005, 08:50
no, in CittàStudi, per l'esame di basi di dati ho passato lo scritto, entro febbraio devo fare il progetto, non avendo mai scritto dell'SQL sono in preda al panico.

gotam
13-01-2005, 23:48
Allora x lo schema er: carta e penna, dopo che lo hai fatto x bene lo realizzi con il visio. Controlla che lo schema sia in forma normale.
Sei come libro hai l'azteni segui i 3 passi che fa lui ;)
Va bene postgree, anche se io fossi in e userei oracle (imparalo che lo usano un po' dappertutto).
SQL da imparare è semplicissimo.
Dopo che hai fatto lo schema ER BENE pensa alle operazioni che devi fare sul DB, in base a queste modificherai le tabelle aggiungendo eventuali campi id, oppure creando tabelle di cross.
Inoltre anche se nn è proprio corretto, se x recuperare determinati attributi vedi che devi fare delle query assurde e/o crearti delle viste complicate puoi pensare di duplicare qualche id, anche se nn è sempre consigliato (devi ponderare bene l'occupazione dello spazio).
Fatto questo dopo parti di programmazione io che nn conosco il php, lo farei in jsp.

Scoperchiatore
14-01-2005, 07:32
Originariamente inviato da gotam
Allora x lo schema er: carta e penna, dopo che lo hai fatto x bene lo realizzi con il visio. Controlla che lo schema sia in forma normale.
Sei come libro hai l'azteni segui i 3 passi che fa lui ;)
Va bene postgree, anche se io fossi in e userei oracle (imparalo che lo usano un po' dappertutto).
SQL da imparare è semplicissimo.
Dopo che hai fatto lo schema ER BENE pensa alle operazioni che devi fare sul DB, in base a queste modificherai le tabelle aggiungendo eventuali campi id, oppure creando tabelle di cross.
Inoltre anche se nn è proprio corretto, se x recuperare determinati attributi vedi che devi fare delle query assurde e/o crearti delle viste complicate puoi pensare di duplicare qualche id, anche se nn è sempre consigliato (devi ponderare bene l'occupazione dello spazio).
Fatto questo dopo parti di programmazione io che nn conosco il php, lo farei in jsp.

Atzeni sul libro dice di fare in 3 passi, poi al corso dice che ci sono mille eccezioni e che le cose possono essere più complesse :D

Però se si segue il libro la cosa è abbastanza "facile".

Ti rimando (Torpedo) al link del corso di basi di dati tenuto da Atzeni nella mia facoltà in cui ci sono delle dispense e degli esercizi che magari ti possono essere utili.

http://www.dia.uniroma3.it/~atzeni/didattica/BDN/20032004/BDNindex.html

Usare PHP a me sembra una follia, cmq, dato che a livello di divisione in moduli del programma è impossibile. E' pur vero che è semplicissimo da usare, quindi più veloce, ma JSP+Java sono più adatte per capire come distinguere livello applicativo, interfaccia e persistenza.

Per ER, come detto, è inutile il SFW. Carta e penna, e al massimo alla fine fai i disegnini. Tieni presente che durante la scrittura del codice probabilmente rifinirai lo schema, quindi solo alla fine del programma lo schema è finito.

Per PHP ti consiglio PHP Expert, semplice e veloce editor PHP.

Se non fosse didattico, io lo farei con PHPNuke, tra l'altro (portale realizzato in PHP standard e a cui puoi aggiungere velocemente moduli ed azioni anche complesse).

gotam
14-01-2005, 10:25
Originariamente inviato da Scoperchiatore
Atzeni sul libro dice di fare in 3 passi, poi al corso dice che ci sono mille eccezioni e che le cose possono essere più complesse :D

Però se si segue il libro la cosa è abbastanza "facile".

Ti rimando (Torpedo) al link del corso di basi di dati tenuto da Atzeni nella mia facoltà in cui ci sono delle dispense e degli esercizi che magari ti possono essere utili.

http://www.dia.uniroma3.it/~atzeni/didattica/BDN/20032004/BDNindex.html

Usare PHP a me sembra una follia, cmq, dato che a livello di divisione in moduli del programma è impossibile. E' pur vero che è semplicissimo da usare, quindi più veloce, ma JSP+Java sono più adatte per capire come distinguere livello applicativo, interfaccia e persistenza.

Per ER, come detto, è inutile il SFW. Carta e penna, e al massimo alla fine fai i disegnini. Tieni presente che durante la scrittura del codice probabilmente rifinirai lo schema, quindi solo alla fine del programma lo schema è finito.

Per PHP ti consiglio PHP Expert, semplice e veloce editor PHP.

Se non fosse didattico, io lo farei con PHPNuke, tra l'altro (portale realizzato in PHP standard e a cui puoi aggiungere velocemente moduli ed azioni anche complesse).


Lo so che esistono migliaia di eccezioni, ma se x lui questo è il primo schema ER deve seguire il libro x imparare ;)