Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [SQL Server - Database] Relazionare 2 tabelle con una chiave esterna composta
Forum - C# / VB.NET - [SQL Server - Database] Relazionare 2 tabelle con una chiave esterna composta

Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Segnala al moderatore
Postato alle 21:26
Mercoledì, 15/08/2012
Ciao ragazzi,
Ho un problema per la gestione di un Database:
ho una tabella chiamata "Tornei", un'altra chiamata "Squadre" ed un'altra chiamata "Calciatori". Tornei contiene una lista dei tornei in gestione, Squadre contiene un elenco di squadre inventate, ognuna di esse però è formata da 25 "Calciatori", che contiene l'elenco di tutti i Calciatori. Ora il mio problema sorge nel identificare i 25 calciatori per ogni squadra. Avevo pensato ad un campo, o numerico o stringa, con l'insieme delle chiavi primarie dei 25 giocatori, per identificare i 25 per ogni squadra. Esistono soluzioni più ottimali?

Ringrazio Anticipatamente!

PS: Non so se la sezione è giusta, ma visto che è SqlServer (anche se il DBMS non c'entra niente, ma non esiste una sezione dedicata ai DB)


Computer Science
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 12:33
Giovedì, 16/08/2012
Ciao..
No, mi pare che la soluzioni che proponi tu sia quella corretta,
Tu hai 4 tabelle:
1) tabella giocatori
2) tabella squadre (formata da molti giocatori)
3) tabella Torneo (di scambio con squadre e Tornei)
4) tabella Tornei (formata da molti tornei

Hai 1 relazioni uno a molti e 1 relazione molti a molti

giocatore (1) -> (molti) squadra (1)
Al torneo (1) -> (molti) partecipano molte squadre
La relazione molti a molti ti serve perché tu hai molte squadre che partecipano a molti tornei..
Con Access ho fatto un piccolo esempio, come esercizio per te. Se vuoi te lo mando. Ciao!:)


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote
Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Segnala al moderatore
Postato alle 12:50
Giovedì, 16/08/2012
Ti ringranzio Renny per la risposta, ma il mio problema (non so se ho inteso male io la tua risposta) era per quanto riguarda la gestione di identificazione di più giocatori per una singola squadra! per ogni squadra devono essere identificati 25 giocatori! quindi: (esempio)

   Squadre


ID   NomeSquadra     Chiave_Esterna_composta.Giocatori
1     Milan                  3 4 5 6 7 3 2 3 4...fino a 25 chiavi  (a caso)
2     Inter                  5 6 7 5 3 2 4 5 6.....
3     Juve               e così via..

Calciatori

ID    Nome
1   pippo
2   mauro
3   giacomino
4   gino
5   pierangelo
6   dddd
7    ggg

> Volevo sapere se per identificare questa cosa è possibile un'altra soluzione?
  
PS:  1 Giocatore, nel mio caso, può essere in più squadre!

Ultima modifica effettuata da carmine il 16/08/2012 alle 12:53


Computer Science
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 12:58
Giovedì, 16/08/2012
E' corretto così, non ci sono altre soluzioni.
Anche se è più corretto vederla dal punto di vista dei giocatori, perché tu associ a ogni giocatore l'ID della squadra di appartenenza.
ID    Nome ID_Squadra
1   pippo 1
2   mauro 1
3   giacomino 2
4   gino 2
5   pierangelo 1
6   dddd 3
7    ggg 3

Il fatto che tu poni in relazione la tabella giocatori con quella squadra fa si che non ci sia ridondanza di dati, o al limite che siano ripetuti il meno possibile.
Difatti per il giocatore non compare che l'ID della squadra e non il nome e tutti gli altri dati che tu hai per ogni squadra.
E poi con Access viene facile anche inserire i dati.. Vedi:

EDIT: ho letto dopo.. 1 giocatore può stare in più squadre.
In tal caso ti serve anche li una relazione molti a molti, perché non puoi assegnare più di 1 ID squadra per giocatore.. Tranne che con la relazione molti a molti..


Renny ha allegato un file: access.PNG (16280 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da Renny il 16/08/2012 alle 13:00


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote
Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Segnala al moderatore
Postato alle 20:02
Giovedì, 16/08/2012
Grazie mille Renny, credo di aver risolto con un'associazione N a N. Credo sia la scelta ottimale! ancora Grazie!!


Computer Science
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 20:11
Giovedì, 16/08/2012
Prego, figurati..
Per me è stata l'occasione per ripassare 2 cosette in access, che non fa mai male.. :k:
Alla prossima!;)


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote