Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Consiglio su integrità referenziale
venerdì 17 ottobre 2008 - 10.10
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
luffa
Profilo
| Newbie
3
messaggi | Data Invio:
ven 17 ott 2008 - 10:10
Buongiorno a tutti. Ho 2 tabelle realizzate così:
CREATE TABLE Rivenditori (
IdAssistito int IDENTITY(1,1) NOT NULL,
Cognome varchar(50) NOT NULL,
Nome varchar(50) NOT NULL,
-- Altri dati dati anagrafici...
PRIMARY KEY (IdAssistito)
)
CREATE TABLE FamiliariRivenditori (
IdAssistito int IDENTITY(1,1) NOT NULL,
Cognome varchar(50) NOT NULL,
Nome varchar(50) NOT NULL,
-- Altri dati dati anagrafici...
TitolareReferente int NOT NULL,
PRIMARY KEY (IdAssistito),
FOREIGN KEY (TitolareReferente) REFERENCES Rivenditori(IdAssistito)
ON DELETE CASCADE
)
La prima tabella, "Rivenditori", contiene i dati di alcuen persone che erogano un servizio metre la seconda, "FamiliariRivenditori", contiene i familiari (la moglie, i figli, ecc..) dei rivenditori. Infatti nella tabella "FamiliariRivenditori" vi è una chiave esterna che referenzia la tabella "Rivenditori"
Il consiglio che vorrei è su come realizzare una terza tabella, che dovrebbe referenziare entrambe.
CREATE TABLE Rimborsi
(
IdRimborso int IDENTITY(1,1) NOT NULL,
IdAssistito int NOT NULL,
-- Dati sul rimborso
Importo smallmoney NOT NULL,
DataRimborso smalldatetime NOT NULL,
PRIMARY KEY (IdRimborso),
-- FOREIGN KEY (IdAssistito) REFERENCES XXXXXXX(IdAssistito)
)
Questa tabella Rimborsi dovrebbe referenziare sia la tabella Rivenditori che FamiliariRivenditori. Come fare???
gabriel81
Profilo
| Junior Member
194
messaggi | Data Invio:
ven 17 ott 2008 - 11:16
ti serve referenziare per eseguire delle select oppure per gestire le operazioni di update e delete?
luffa
Profilo
| Newbie
3
messaggi | Data Invio:
ven 17 ott 2008 - 11:34
Operazioni di SELECT
gabriel81
Profilo
| Junior Member
194
messaggi | Data Invio:
ven 17 ott 2008 - 12:04
Secondo me devi fare dei compromessi.
1. gestisci l'integrità dall'applicazione e metti nelle spese un campo int che stà per l'id dell'assistito (familiare o rivenditore che sia) e un campo tipo che determina se quell'id è relativo a rivenditore o familiare(campi non referenziati!!!!!!!!!!!).
2. O fai un tabellone unico degli assistiti, dove in ogni riga specifichi se è un familiare (e se sì di chi) oppure rivenditore.
Inoltre potresti fare 2 form diversi dove in uno inserisci le spese dei rivenditori e nell'altro quelle dei familiari.
Altre idee non me ne vengono, anche perchè se metti un campo di integrità deve poi essere sempre popolato e sempre correttamente.......
io userei la proposta 1
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 21 ott 2008 - 03:37
@luffa
Sinceramente il fulcro del discorso sta nel tipo di relazione che vuoi implementare, che ancora non mi è chiara.
Di che tipo è? 1:N o M:N? Uno a molti o molti a molti?
Prova ad illustrare meglio la situazione reale, perchè secondo me manca qualche passo..
Vorrei capire se i record dei famigliari possono essere anche nei rivenditori, ad esempio una famiglia in cui padre e madre sono rivenditori, sarebbero sia in rivenditori che in famigliari.. Cerca di essere più dettagliato nella situazione reale.
Ad esempio:
Ho un'anagrafica utenti e voglio definire una relazione tra questa anagrafiche e le relative province. Ogni utente può avere una provincia ma una provincia può avere legati più utenti (1:N). Oppure, ho una tabella attori ed una film. Un attore può prendere parte a più film, e un film può avere più attori (M:N)..
Cerca di approcciare in questo modo più "descrittivo" perchè dobbiamo capire che tipo di relazione ti serve. E quali siano le specifiche dell'analisi.
Ciao!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !