PDA

View Full Version : Database problema concettuale


MEMon
28-05-2007, 18:33
Mi sto perdendo in un bicchier d'acqua lo so, ora vi dico il problema.
Se ho una tabella che caratteriza una partita di calcio(anche altre tabelle come quella che contiene le informazioni di tutti i giocatori), che ha quindi diversi campi fra cui le due squadre interessate, il risultato, la lista dei marcatori, quella degli ammuniti, espulsi ecc ecc.

Avendo due campi per le squadre, se volessi ricavare subito anche le informazioni di entrambe le squadre potrei fare un join fra tabelle, ma per i campi tipo la lista dei marcatori come posso fare? Come li esprimo?

Per ora mi viene solo da pensare ad una stringa che contiene i dati separati da un carattere separatore, è sbaglito però fare una cosa del genere vero? ne sono quasi sicuro...

Ad esempio:
marcatori: nome_giocatore; nome_giocatore; nome_giocatore;

Io ricavo subito la lista dei marcatori, però se volessi anche altre informazioni su questi giocatori dovrei fare altre query, e in più i nomi dei giocatori li dovrei ricavare con funzioni sulla stringa... Non si fa così immagino, come si fa di solito in questi casi?

mad_hhatter
28-05-2007, 19:00
ciao, di solito, quando si ha a che fare con problemi di attributi multi-valore, come nel tuo caso, si fa così:

si crea una nuova tabella, chiamamola MARCATORI_PARTITA che rappresenta l'associazione di una partita con uno o più giocatori.
le tuple in questa tabella sono fatte così:
attributo Marcatore REFERENCES giocatore.ID
attributo Partita REFERENCES partita.ID
PRIMARY KEY = (Marcatore, Partita)

dove giocatore.ID è la chiave primaria della tabella contenente i giocatori e partita.ID è la chiave primaria della tabella contenente le partite

quando ti serve la lista dei marcatori per una partita avente ID = X, fai una query in MARCATORI_PARTITA chiedendo tutte le tuple aventi attributo partita = X

MEMon
28-05-2007, 19:18
Perfetto grazie mille! :D