Newsgroup: it.comp.appl.access
Titolo: relazione 1-1

per necessità di chiarezza dei dati, ho strutturato il mio db con tabelle in
relazione 1-1.
prima questione: come le devo relazionare?
- tab.principale (key, dati  , key.tabSec1, key.tabSec2)
- oppure attribuisco a tutte la stessa key principale
seconda questione: qual'è il modo migliore per gestirle in un'unica
maschera?
fare una form sulla tabella principale con le altra tabelle gestite tramite
sottomaschere?
oppure fare una form la cui origine dati sia la query di tutte le tabelle
collegate?
l'importante sarebbe che fosse garantita la corrispondenza dei record:
quando inserisco, modifico, elimino deve avere effetto su tutti i record
collegati.

"Cholo" <m.mag...@NOSPAMlibero.it> ha scritto nel messaggio 
news:VG%Od.26883$lB4.7...@twister1.libero.it...

Non capisco quando dici "ho strutturato il mio db con tabelle in relazione 
1-1" e poi
"prima questione: come le devo relazionare?"
Le hai fatte o no queste relazioni?
Tabella A chiave primaria (ID) in relazione con Tabella B campo con stesso 
tipo di Dati (IDTabA).
Questo non vuol dire che la tabella B non possa avere la sua propria chiave 
primaria (IDB)
Per la gestione serviti di Maschera e sottomaschera: in Maschera alimenti 
con Tabella A in sottomaschera alimenti con Tabella B; Access provvederà a 
creare i campi master e i secondari.
Ciao, Carlo

 creare i campi master e i secondari.
in effetti mi sono spiegato abbastanza male... provo a chiarire:
ho 3 tabelle:
TabMain con questi campi: key, dati, keyA (legata 1-1 con key tabA), keyB
(legata 1-1 con key della tabB)
TabA con questi campi, key (legata 1-1 con keyA della tabMain), dati
TabB con questi campi, key (legata 1-1 con keyB della tabMain), dati
questa struttura funziona correttamente con la gestione maschera principale
(dati TabMain) e sottomaschere (dati TabA e TabB)? cioè quando inserisco un
nuovo record di TabMain automaticamente mi crea i recor di TabA e TabB con
impostato il campo di corrispondenza?
grazie

"Cholo" <m.mag...@NOSPAMlibero.it> ha scritto nel messaggio
news:VG%Od.26883$lB4.7...@twister1.libero.it...

Onestamente non vedo alcun vantaggio, anche in termini di chiarezza, ad
usare più tabelle in relazione uno-a-uno invece di un'unica tabella che
contenga tutti i dati; di certo invece vai a crearti delle inutili
complicanze nella realizzazione del database: non per caso questo tipo di
relazione è normalmente usata solo in caso di limiti imposti da Access circa
la dimensione dei record e/o del numero di campi.
Insomma, se possibile è meglio un quadro in unica soluzione che un mosaico o
peggio ancora un puzzle: è molto più chiaro. ;-)
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

"Cholo" <m.mag...@NOSPAMlibero.it> ha scritto nel messaggio 
news:Fg0Pd.27146$QG6.4...@twister2.libero.it...

 Come dice Roberto se la relazione è necessariamente 1 a 1 non ha senso 
creare tre tabelle in quanto nelle tabelle secondarie ci sarà uno e un solo 
record legato alla tabella principale.
Se invece ad un record della tabella principale possono corrispondere più 
record nelle tabelle secondarie, allora la cosa è corretta e va bene come 
hai fatto.
In un'unica tabella potresti scrivere:
ChiavePrimaria, DatiA e DatiB...non ti pare?
Ciao, Carlo 

Roberto da casa ha scritto:



Concordo per la tabella unica. Al limite se gli serve tenere separati
alcuni dati dagli altri si possono usare 3 maschere diverse che mostrino
ciascuna solo una parte dei campi della tabella.
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Namor


>
Intervengo per cercare di farmi chiarezza sulle relazioni 1-1
diciamo di avere una anagrafica di Operai e una tabella di Attrezzi:
gli attrezzi sono tutti eguali con numeri di matricola e ogni operaio
può avere un solo attrezzo(può cambiarlo ma avere sempre uno)
Ogni tanto gli operai cambiano l'attrezzo(per manutenzione) ed io
voglio impedire che,per mancato aggiornamento, quel attrezzo riparato
possa essere dato ad un altro senza prima averlo tolto al primo operaio.
In questo caso devo applicare una relazione 1-1?
E' corretto? Si poteva usare qualche altra soluzione?
Grazie Ebo

 ha scritto nel messaggio 
news:420e1d99$0$32347$5fc...@news.tiscali.it...

Ciao Ebo
l'esempio che hai fatto prevede che un operaio possa avere un solo attrezzo 
(alla volta) e che quell'attrezzo possa essere usato una sola volta (alla 
volta) ma non che un operaio non possa usare, sia pure uno alla volta, un 
secondo attrezzo. Operaio A attrezzo 1, operaio B attrezzo 2 e così via. 
Operaio B non può avere contemporaneamente l'attrezzo 1 se questo è "dato" 
all'operaio A. Questa potrebbe essere una relazione uno a uno. Se 
scrivessimo Operaio e Attrezzo in un'unica tabella e impostassimo la chiave 
primaria sui due campi otterremmo che Operaio A potrebbe avere attrezzo 1 
una sola volta in quanto inserendo un nuovo record A1 darebbe errore per 
chiave duplicata. Come vedi non hai necessità di creare due tabelle e questo 
è il motivo per cui, nei casi reali, le relazioni uno ad uno sono veramente 
rare.
Un esempio di due tabelle in relazione uno ad uno potrebbe essere quello di 
una tabella anagrafica associata ad una tabella CodiciFiscali: una 
anagrafica un solo CF. Ma anche questo esempio ha un senso solo se ho 
necessità di avere una tabella CodiciFiscali da utilizzare in altri modi e 
non perchè non potrei mettere il CF nella stessa tabella Anagrafica.
Microsoft così definisce le relazioni uno-a-uno:
Associazione tra due tabelle in cui:
"Il valore della chiave primaria di ogni record della tabella primaria 
corrisponde al valore contenuto nel campo o nei campi corrispondenti di un 
solo record della tabella correlata.
Il valore della chiave primaria di ogni record della tabella correlata 
corrisponde al valore contenuto nel campo o nei campi corrispondenti di un 
solo record della tabella primaria".
E poi ancora:
In una relazione uno-a-uno ogni record della tabella A può avere solo un 
record corrispondente nella tabella B e viceversa. Questo tipo di relazione 
non è comune, in quanto la maggior parte delle informazioni correlate in 
questo modo vengono incluse in una tabella. È possibile utilizzare una 
relazione uno-a-uno per dividere una tabella con molti campi, per isolare 
parte di una tabella per ragioni di protezione o per memorizzare le 
informazioni valide solo per un subset della tabella principale. È 
possibile, ad esempio, che si desideri creare una tabella per tenere traccia 
degli impiegati che prendono parte ad una partita di calcio di beneficenza.
Spero ti sia fatto una idea sufficientemente completa della relazione 
uno-a-uno.
Capire le relazioni significa capire i database relazionali come il 
grandissimo Access.
Ciao, Carlo 

 Grazie Ebo



Grazie a entrambi.
Ebo
