Newsgroup: it.comp.software.database
Titolo: Relazioni in SQL Server

Ho questo problema:
n tabelle diverse tra di loro (non posso unificarle)
1 tabella (carrello) dove ogni record si deve riferire ad un record di una
delle n tabelle
Via codice potrei fare tutto molto facilmente inserendo nella tabella
carrello un campo che si riferisce alla tabella e uno che mi indichi il
valore della chive primaria.
Ma cosi facendo potrei inserire dati incoerenti e nessuno mi segnalerebbe
errori. Vorrei trovare una maniera di stabilire delle relazioni tra le varie
tabelle.
Qualcuno ha qualche idea ?
Ciao Marco

 delle n tabelle
Io farei una bella View che faccia una Union di tutte le tabelle,
come minimo una cosa del tipo "prefisso-identificatore-tabella" e
ID univoco del record. Quindi fai una foreign key che 'punta' alla
view. In questo modo hai un controllo diretto sui dati che inserisci.
Davide

 Davide
Purtorppo non conosco molto bene SQL Server, ma una foreign key non è una
relazione ?
Come si fa una relazione tra una tabella e una view, io non ci sono
riuscito.
Grazie.
Marco.

 riuscito.
non si può fare, almeno per quanto ne so.

delle n tabelle
Se ho capito il tuo problema.
Metti una chiave primaria in ogni tabella n, e una chiave primaria
composta da tutti gli ID di tutte le tabelle (che saranno sparsi su n
colonne quindi).
A quel punto metti in relazione le chievi primarie delle n tabelle,
con la colonna di compentenza della tabella 1.
-- 
Tieni per te il Papero se vuoi la mia email
Sito Papero -> 
http://utenti.tripod.it/papero

 con la colonna di compentenza della tabella 1.
Avevo pensato ad una soluzione del genere, cosě facendo avrei per ogni riga
nella tabella carrello 1 campo pieno e n-1 campi vuoti e pensavo fosse uno
spreco. Ma forse č l'unica soluzione.
Grazie Marco.

spreco. Ma forse č l'unica soluzione.
Se sei assolutamente certo che una riga del carrello puo' essere
relazionata solo ad unadelle n tabelle, le colonne potrebbero
diventare solo 2. La prima ti indicaquale delle n-esima tabelle, e la
seconda la chiave referenziata.
E' chiaro che cosi' le relazioni te le devi fare a manina, o da
programma, o piu' sensatamente da trigger.
++++
Se la chiave primaria nelle n tabelle sono interi (e non stringhe) -->
n * 4 e' una buona approssimazione della dimensione in byte dello
spazio occupato.
In prima battuta non pensare allo spreco in dimensione o alle
prestazioni, ma pensa solo alla coerenza dei dati.


 Sito Papero -> 
http://utenti.tripod.it/papero
Ok allora data la tua gentilezza provo a formulare la domanda in maniera
diversa:
Io devo fare un'applicazione che si basa su questo database. Il mio vero
problema non è la coerenza dei dati ( che potrei controllare in fase di
inserimento via codice o come suggerisci tu tramite trigger).
Io vorrei che in futuro quando qualche altra persona metterà le mani
sull'applicazione e sul db non debba andare a spulciare il codice per capire
come funziona il tutto. Ma al contrario vorrei che dando un'occhiata veloce
ad db si potesse capire a grandi line la logica dell'applicazione.
Ho scritto la relativa documentazione ma so che appena me ne andrò andrà
archiviata in qualche faldone dove nessuno la troverà mai più (SIGH).
Tu cosa faresti ?
Grazie Marco.

Tu cosa faresti ?
n colonne sulla tabella carrello.
Ti prenderenno per cretino perche' e' la soluzione piu' cretina, ma
capiranno la tua soluzione. A modo suo e' lineare.
Evita trigger (se puoi), ed evita ancora di piu' coerenza da
programma. Pensa che l'unica cosa che rimarra' sara' il DB. Questo
deve avere coerenza in se (tramite relazioni, e al limite a trigger).


 ha scritto nel messaggio
news:f2gaatg556ama7me5...@4ax.com...

Grazie,
spero che i posteri non sparleranno troppo di me.
Ciao Marco