PDA

View Full Version : [Basi di Dati]vincolo di integrità referenziale(chiave esterna)


nuovoUtente86
09-04-2008, 21:26
E' possibile per un campo di una tabella stabilire piu chiavi esterne?
Faccio un esempio:
Ipotizziamo che ci sia una tabella Utente che oltre ad User(chiave) e Password abbia un campo codCliente! codCliente dovrebbe avere come chiave esterna il campo codice di una delle tabelle delle tipologie di cliente presenti nella base di dati...ad esempio il codice puo riferire alla tabella ClienteEsterno o a quelle ClienteInterno ecc.PEr la logica dell' applicazione le tabelle Cliente non possono essere fuse! Sono costretto a fare delle relazioni del tipo codUtente-codClienteEsterno oppure posso fare qualcosa con la chiave esterna?

gugoXX
09-04-2008, 21:30
Bisognerebbe ridisegnare la base dati, che ha anche senso in casi come questo.
Dovresti avere una tabella "Cliente", con i dati comuni tra i ClientiEsterno e i ClientiInterno.

A quel punto la tua tabella in questione potrebbe avere una FK verso questa nuova tabella Cliente "generico"

E' anche tipico l'avere viste che riaccorpano i dati, come
vs_clienteesterno, che mettera' in JOIN la tabella Cliente e la ClienteEsterno di nuovo con una struttura simile alla tua attuale. Analogamente per una vs_clienteinterno.

nuovoUtente86
09-04-2008, 23:03
Si statvo pensando alla riprogettazione della base!
Comunque dalle tue parole capisco che la chiave esterna,come pensavo e come del resto viene spiegata nella teoria delle BD,deve essere unica per ogni campo!

shinya
10-04-2008, 09:49
Ma se fai una view con una union tra ClienteEsterno e ClientInterno e vai in join su quella? Come son fatte ste tabelle?