Logo
Stanzinofree

Football VM - 3

Oggi iniziamo a progettare o meglio a disegnare il database.

La prima idea che mi è venuta in mente è quella di creare solo due tabelle in modo da non perdermi tra tabelline e colonne varie.

Le due tabelle saranno:

  • Squadre - ovvero l'elenco di tutte le squadre
  • Partite - ovverto l'elenco di tutte le partite

Nella tabella Squadre metteremo anche tutte le statistiche relativa ad ogni squadra in modo che poi con le query avremo una vista relativa di ogni girone e di ogni categoria e quindi anche la classifica.

Nella tabella Partite avremo invece tutto l'elenco delle partite con le date e gli orari e i risultati in modo che con le query potremo tirar fuori il calendario per data o per categoria e girone.

Ora passiamo alla parte pratica.

La directory radice per ora andrà in /opt e il database lo chiameremo database.db(che fantasia vero?), quindi

mkdir /opt/football_vm
touch database.db
touch create_db.py

Iniziamo a pensare a cosa mettere dentro le tabelle che andremo a creare:

Nella tabella squadre avremo bisogno di queste colonne:

ID | integer primary key : Una chiave primaria è sempre meglio averla
nome_squadra | text : Il Nome della Squadra
categoria | text : La categoria di appartenenza
girone | text : Il girone di appartenenza
p_giocate | integer : Numero di Partite Giocate
p_vinte | integer : Numero delle Partite Vinte
p_nulle | integer : Numero delle Partite Pareggiate
p_perse | integer : Numero delle Partite Perse
punti | real : Punti totali, meglio definirlo real nel caso di punti di penalizzazione
g_fatti | integer : Gol Fatti
g_subiti | integer : Gol Subiti
diff_reti | real : Differenza reti e come per i punti può essere negativa quindi reali

Nella tabella partite avremo bisogno invece di:

ID | integer primary key : chiave primaria come sopra
data | text : La data delle partite la mettiamo come testo
ora | text: La mettiamo come testo come per la data
categoria | text : La categoria di appartenenza
girone | text : Il girone di appartenenza e nella fasi finali assumerà il valore del nome della partita (semifinale, finale etc..)
squadra_1 | text : Nome della prima squadra
gol_sq1 | integer : Gol segnati dalla squadra 1
squadra_2 | text : Nome della seconda squadra
gol_sq2 | integer : Gol segnati dalla squadra 2

Eventuali correzioni le faremo in seguito se sarà necessario, per ora iniziamo a creare queste tabelle nel db preparandoci un semplice script(scusate se non uso l'interprete a runtime ma preferisco sempre avere un file da cui poter ripartire per inziare da 0):

#inziamo con la classica istruzione di import della libreria sqlite
import sqlite3

#creiamoci il connettore al file e il cursore che dovra' "girare" per il db
connessione = sqlite3.connect("database.db")
cursore = connessione.cursor()    

#Prepariamoci le due query
crea_tabella_squadre = "CREATE TABLE squadre (ID integer primary key autoincrement, nome_squadra text, categoria text, girone text, p_giocate integer, p_vinte integer, p_nulle integer, p_perse integer, punti real, g_fatti integer, g_subiti integer, diff_reti real)"    

crea_tabella_partite = "CREATE TABLE partite (ID integer primary key autoincrement, data text, ora text, categoria text, girone text, squadra_1 text, gol_sq1 integer, squadra_2 text, gol_sq2 integer)"    

#mandiamo in esecuzione le query, non metto if o try perche' sono istruzioni semplici e presuppongo sempre di partire da un db vuoto
cursore.execute(crea_tabella_squadre)
cursore.execute(crea_tabella_partite)    

#mandiamo in commit le operazioni sul db
connessione.commit()

Ora che abbiamo terminato lo script lanciamolo e andiamo a vedere il db
python create_db.py

create_db

Per ora è tutto, ora prepariamoci un pò di dati da inserire per inziare le query di test.