PDA

Visualizza la versione completa : Access : Chiave esterna e query SQL?


pitopito
07-08-2012, 12:53
Ciao a tutti, sto implementando una Rubrica a scopo (auto)didattico ma ho un problema e spero che qualcuno abbia coraggio e pazienza per leggersi quanto segue :)

Al momento ho inserito le seguenti tabelle

Anagrafica(ID, Nome, Cognome, Cell)
Tipologia(IDTipologia, NomeTipologia)
DatiAmico(FK_Amico, FilmPreferito, SquadraDelCuore)
DatiCollega(FK_Collega, Reparto, sede)

Ecco i significati delle tabelle.

Anagrafica(ID, Nome, Cognome, Cell) : persone inserite

Tipologia(IDTipologia, NomeTipologia) : in NomeTipologia metto "amico","collega","cliente" etc. IDTipologia e' chiave primaria ed e' di tipo contatore.


AssociazioneTipologia(IDAssociazione, LookUpAnagrafica, LookUpTipologia) :
Siccome una persona puo' appartenere a una o piu' tipologie ho creato questa tabella in cui effettuare questa associazione. I campi lookUpAnagrafica e LookUpTipologia puntano rispettivamente alla chiave primaria delle tabelle anagrafica e tipologia. Siccome per inserire i dati in questi campi volevo che comparissero nel menu' a tendina i dati dei campi a cui puntavano, Il "Data Type" di questi campi e' stato creato in Access, col menu' a tendina e selezionando "lookUp Wizard". In tal modo quando devo inserire un nome e associarlo alla tipologia, mi compare autmaticamente e non devo far altro che selezionarlo.

orbene adesso mi sono creato una tabella in cui devono comparire i dati SOLO degli amici :
DatiAmico(FK_amico, SquadraDelCuore, Filmpreferito)
e creero' anche tabelle analoghe tipo DatiCollega etc.

Ecco il PROBLEMA:
in questa tabella (DatiAmico) la chiave esterna FK_Amico deve contenere SOLO ed ESCLUSIVAMENTE gli ID delle persone che sono state definite appartenenti alla tipologia "amico".

Quindi e' come se la FK_Amico dovesse essere legata ad una query giusto?
Mi date un consiglio su come implementare questa soluzione?

L'esito finale dovrebbe essere che cliccando sulla tabella "DatiAmico" e volendo immetter eun valore nel campo FK_Amico, mi compaiono gia' come nomi possibili SOLO quelli definiti come amici.

Grazie per l'attenzione...se siete riusciti a leggere fin qui senza addormentarvi :)

Joe Taras
07-08-2012, 20:28
Originariamente inviato da pitopito
Ciao a tutti, sto implementando una Rubrica a scopo (auto)didattico ma ho un problema e spero che qualcuno abbia coraggio e pazienza per leggersi quanto segue :)

Al momento ho inserito le seguenti tabelle

Anagrafica(ID, Nome, Cognome, Cell)
Tipologia(IDTipologia, NomeTipologia)
DatiAmico(FK_Amico, FilmPreferito, SquadraDelCuore)
DatiCollega(FK_Collega, Reparto, sede)

Ecco i significati delle tabelle.

Anagrafica(ID, Nome, Cognome, Cell) : persone inserite

Tipologia(IDTipologia, NomeTipologia) : in NomeTipologia metto "amico","collega","cliente" etc. IDTipologia e' chiave primaria ed e' di tipo contatore.


AssociazioneTipologia(IDAssociazione, LookUpAnagrafica, LookUpTipologia) :
Siccome una persona puo' appartenere a una o piu' tipologie ho creato questa tabella in cui effettuare questa associazione. I campi lookUpAnagrafica e LookUpTipologia puntano rispettivamente alla chiave primaria delle tabelle anagrafica e tipologia. Siccome per inserire i dati in questi campi volevo che comparissero nel menu' a tendina i dati dei campi a cui puntavano, Il "Data Type" di questi campi e' stato creato in Access, col menu' a tendina e selezionando "lookUp Wizard". In tal modo quando devo inserire un nome e associarlo alla tipologia, mi compare autmaticamente e non devo far altro che selezionarlo.

orbene adesso mi sono creato una tabella in cui devono comparire i dati SOLO degli amici :
DatiAmico(FK_amico, SquadraDelCuore, Filmpreferito)
e creero' anche tabelle analoghe tipo DatiCollega etc.

Ecco il PROBLEMA:
in questa tabella (DatiAmico) la chiave esterna FK_Amico deve contenere SOLO ed ESCLUSIVAMENTE gli ID delle persone che sono state definite appartenenti alla tipologia "amico".

Quindi e' come se la FK_Amico dovesse essere legata ad una query giusto?
Mi date un consiglio su come implementare questa soluzione?

L'esito finale dovrebbe essere che cliccando sulla tabella "DatiAmico" e volendo immetter eun valore nel campo FK_Amico, mi compaiono gia' come nomi possibili SOLO quelli definiti come amici.

Grazie per l'attenzione...se siete riusciti a leggere fin qui senza addormentarvi :)

L'FK non č condizionale. Una volta determinata la sorgente il valore del campo (se diverso da NULL) deve ricadere in tale insieme. Ciņ che chiedi tu lo devi implementare a livello di logica di business (scegli se implementarlo lato applicazione o con delle procedure lato db server che verifichino la congruenza del dato).

Loading