PDA

View Full Version : [SQL Access 2000] Relazioni tra tabelle


deggial
25-03-2008, 15:42
Ciao a tutti, innanzitutto scusate se la sezioni non è quella giusta, ma non so dove scrivere. Semplificando molto ho il seguente problema.
Ho due tabelle:

"Persone" con i seguenti campi:
-Nome (PK)
-Cognome (PK)
-Eta

"Lavoratori" con i seguenti campi:
-NOme (PK)
-Cognome (PK)
-Stipendio

PK sta per chiave primaria.

"Lavoratori" è un sottoinsieme di "Persone", cioè un lavoratore è per forza presente anche nella tabella persone. Non vale il viceversa, cioè ci sono persone che non sono lavoratori.

Quindi per ogni campo di "Persone" ci sono 0 oppure 1 campi di "Lavoratori".

Come dico tutto questo ad Access 2000? Cioè come imposto le relazioni nella sezione apposita? Posso anche fare modifiche alle due tabelle se serve e se sto sbagliando qualche ragionamento dal punto di vista "relazionale". Il mio fine ultimo è impostargli l'integrità referenziale.

Grazie a tutti.

yorkeiser
25-03-2008, 20:02
Se vuoi impostare l'integrità referenziale, oltre a settare le chiavi primarie (che tra l'altro sono comunque discutibili, non potresti avere due omonimi con quelle che hai deciso; io sceglierei un id numerico, ma dipende dal numero di record e quindi dalle probabilità di omonimia), dovresti comunque implementare una chiave esterna che implementi una relazione 1:1 tra la tabella dei Lavoratori verso quella delle Persone.
Traslando il discorso ad Access, le chiavi primarie le inserisci tranquillamente andando nella visualizziazione struttura della tabella (tasto destro sulla tabella e selezioni "visualizza struttura" o qualcosa di simile nella versione inglese); per le chiavi esterne, non ho idea di come (ammeso ci siano) funzionano in Access, ma con una googlata trovi al volo l'informazione

deggial
25-03-2008, 20:17
Se vuoi impostare l'integrità referenziale, oltre a settare le chiavi primarie (che tra l'altro sono comunque discutibili, non potresti avere due omonimi con quelle che hai deciso; io sceglierei un id numerico, ma dipende dal numero di record e quindi dalle probabilità di omonimia), dovresti comunque implementare una chiave esterna che implementi una relazione 1:1 tra la tabella dei Lavoratori verso quella delle Persone.
Traslando il discorso ad Access, le chiavi primarie le inserisci tranquillamente andando nella visualizziazione struttura della tabella (tasto destro sulla tabella e selezioni "visualizza struttura" o qualcosa di simile nella versione inglese); per le chiavi esterne, non ho idea di come (ammeso ci siano) funzionano in Access, ma con una googlata trovi al volo l'informazione

grazie. per l'omonimia, non mi importa perchè questo esempio era solamente per fare il riassunto del problema. in realtà le due tabelle vere su cui devo lavorare hanno decine di campi e la chiave primaria è cod_giorno+cod_persona (registra gli accessi giornalieri delle persone, una persona non può accedere mai più di una volta al giorno).

per la chiave esterna, googlo un po', poi al massimo ripasso da qui :)