Discussione:
Relazioni tra tabelle
(troppo vecchio per rispondere)
Niggle
2009-07-01 18:16:18 UTC
Permalink
Ciao a tutti,
per fare un po' di pratica voglio realizzare un db access per
catalogare dei libri. Mi sono però impantanato su un punto:

ho una tabella Libro con questi campi:
Id
Titolo
Genere
...
IdAutore

in un'altra tabella Autore:
IdAutore
Nome
Cognome

Lego le due tabelle a non ho particolari problemi, che nascono invece
quando aggiungo il campo IdSecondoAutore nella prima tabella.
A questo punto non so come legare IdSecondoAutore ad IdAutore.

Un libro può avere uno o due autori, lo stesso autore può essere unico
autore di un libro e allo stesso tempo secondo autore di un altro e
così via...

qualche consiglio?

grazie mille!!!

P.
Cinzia
2009-07-01 18:42:40 UTC
Permalink
Post by Niggle
Ciao a tutti,
per fare un po' di pratica voglio realizzare un db access per
Id
Titolo
Genere
...
IdAutore
IdAutore
Nome
Cognome
Lego le due tabelle a non ho particolari problemi, che nascono
invece quando aggiungo il campo IdSecondoAutore nella prima tabella.
A questo punto non so come legare IdSecondoAutore ad IdAutore.
Un libro può avere uno o due autori, lo stesso autore può essere
unico autore di un libro e allo stesso tempo secondo autore di un
altro e così via...
qualche consiglio?
grazie mille!!!
P.
Ciao P.
il legame che lega autori e libri nel caso in cui un libro può essere
scritto da più autori è un tipico caso di relazione molti a molti
(un libro ---> molti autori) (un autore ---> molti libri) in Access
e nella maggior parte dei database relazionali la relazione molti a
molti si esprime utilizzando una tabella ausiliaria. Nel caso del tuo
esempio avrai dunque 3 tabelle Libri, Autori e AutoriLibri, la tabella
Libri non conterrà nessu IDAutore la tabella autoriLibri conterrà
IDAutore, IdLibro e la chiave primaria della tabella sarà costituita
dalla coppia delle due chiavi esterne.
In questo modo dato un autore mettendo in relazione la tabella
AutoriLibri con la tabella Libri saprai quuali libri ha scritto e allo
stesso modo dato un libro saprai chi sono gli autori andando a cercare
nella tabella AutoriLibri gli autori corrispondenti a quel Libro.

Se poi sei proprio strasicuro che nessuno dei libri che inserirai avrà
mai più di due autori, allora potresti anche procedere come stavi
facendo ma di certo poi tutte le query di ricerca si complicano xchè
come giustamente avevi notato se vuoi sapere che libri ha scritto
l'autore Pinco Pallino dovrai cercare l'IDautore corrispondente a
PincoPallino non solo nel campo IDAutore della tabella libri ma anche
nel campo IDSecondoAutore, insomma un sacco di complicazioni in più
che con un db "normalizzato" non avrai.
--
Cinzia [Office Access MVP]
_______________________
www.riolab.org
http://accessdaziacin.spaces.live.com
----------------------------------------
Loading...