|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
[Basi di Dati]vincolo di integrità referenziale(chiave esterna)
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? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
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.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
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! |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Ma se fai una view con una union tra ClienteEsterno e ClientInterno e vai in join su quella? Come son fatte ste tabelle?
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:20.