PDA

View Full Version : [Sql Server] Associazioni in db


mkel84
05-06-2010, 17:31
Ciao a tutti, ho un piccolo dilemma che mi assale. Ho tre tabelle connesse da un associazione molti a molti e dovrei farla in sql server. Ho un tabella Città, una tabella con Avvenimenti ed infine la tabella Elementi. Sono connesse tutte molti a molti tra di loro e cioè: in 0 o più città ci possono essere stati 0 o più avvenimenti e viceversa, nel contempo negli avvenimenti accaduti nelle città possono esserci stati 0 o più elementi. Come faccio a tradurre questo in sql server? :D

jackk87
06-06-2010, 12:26
Buongiorno,
in sql le associazioni molti a molti io di solito le interpreto mettento un'altra tabella tra di loro che contiene le chiavi primarie delle 2 cioè per esempio:
ho una tabella Cliente e una Telefono creo un'altra tabella Ha che contiene le chiavi primarie del Cliente e del Telefono.
Quindi prima avevi Cliente (N;M) Telefono.
Adesso hai Cliente (1;N) Ha (M;1) Telefono.

Spero di essere stato chiaro ciaooooooo

mkel84
06-06-2010, 12:38
Ok, perfetto, ma se dovessi fare cliente, telefono e cellulare, tutti molti a molti, creo la tabella associazione così come hai detto tu ma per esempio io non ho sempre il cellulare quindi l'id associato a cellulare deve poter essere null e nello stesso tempo io posso avere più cellulari per quel cliente. Come risolveresti la cosa?

jackk87
06-06-2010, 13:16
Ok, perfetto, ma se dovessi fare cliente, telefono e cellulare, tutti molti a molti, creo la tabella associazione così come hai detto tu ma per esempio io non ho sempre il cellulare quindi l'id associato a cellulare deve poter essere null e nello stesso tempo io posso avere più cellulari per quel cliente. Come risolveresti la cosa?

Io risolverei facendo le associazioni in questo modo:
http://jackvc09.altervista.org/esempio.jpg

HA (idcliente,idtelefono)
E (idcliente,idcellulare)

Se il cliente ha il cellulare memorizza idcliente e idcellulare nella tabella E.

mkel84
06-06-2010, 13:39
Si giusto, tu hai fatto due associazioni ma purtroppo il mio caso è diverso, ho in un unica associazione tre entità, in poche parole è come se avessi nell'associazione Ha fossero connesse le entità Cliente, Telefono e Cellulare. Un caso un pò particolare. :D

jackk87
06-06-2010, 13:46
Ciao secondo me è sagliato il concetto base cioè il database strutturato in quel modo non ti permette di fare quello che vuoi nel modo in cui lo hai strutturato tu è come se nel tuo programma tutti e tre i campi gli devi inserire obbligatoriamente allora va bene ma se vuoi che l'utente può anche non mettere un campo allora secondo me devi cambiare la struttura del database in modo da non complicarti troppo la vita

FabryHw
10-06-2010, 01:13
Si giusto, tu hai fatto due associazioni ma purtroppo il mio caso è diverso, ho in un unica associazione tre entità, in poche parole è come se avessi nell'associazione Ha fossero connesse le entità Cliente, Telefono e Cellulare. Un caso un pò particolare. :D

Come l'hai descritta tu nel tuo primo post hai 2 relazioni molti a molti

La città ha zero o più avvenimenti
Ogni avvenimento ha zero o più elementi.
NON c'è una relazione diretta, ma solo transitiva, tra Città ed Elementi, quindi le soluzioni che ti hanno proposto sono quelle giuste.

Città
1<->N
CittàAvvenimenti
N<->1
Avvenimenti
1<->N
AvvenimentiElementi
N<->1
Elementi

mkel84
10-06-2010, 08:50
Ok, grazie mille a tutti.