Discussione:
Relazioni tabelle
(troppo vecchio per rispondere)
galdino
2005-08-31 15:58:00 UTC
Permalink
Sto tentando di creare un Database per catalogare musica. Finora ho creato
tre tabelle: ARTISTA (con un ID Contatore come chiave primaria), CATALOGO
(per i titoli degli album di ciascun artista, con ID Artista), ELENCO BRANI
(per i brani di ciascun album). Il problema è la relazione tra le tabelle.
Vorrei, aprendo la tabella ARTISTA, poter aprire quella CATALOGO e da
quest’ultima ELENCO BRANI, sempre nella stessa finestra. Per le prime due
sono riuscito nell’intento con uno join tipo uno-a-molti, ma le altre non so
come collegarle perché in ogni modo da CATALOGO non apre ELENCO BRANI.
Mi sapete dire se sto seguendo la procedura esatta? Preciso che sono alle
prime armi con Access, ma credo si sia capito. Grazie.

------------------------------
S.O. Windows XP Home Ed. SP2
Roberto dalla campagna
2005-09-01 09:28:33 UTC
Permalink
Post by galdino
Sto tentando di creare un Database per catalogare musica. Finora ho creato
tre tabelle: ARTISTA (con un ID Contatore come chiave primaria), CATALOGO
(per i titoli degli album di ciascun artista, con ID Artista), ELENCO BRANI
(per i brani di ciascun album). Il problema è la relazione tra le tabelle.
Vorrei, aprendo la tabella ARTISTA, poter aprire quella CATALOGO e da
quest'ultima ELENCO BRANI, sempre nella stessa finestra. Per le prime due
sono riuscito nell'intento con uno join tipo uno-a-molti, ma le altre non
so
Post by galdino
come collegarle perché in ogni modo da CATALOGO non apre ELENCO BRANI.
Mi sapete dire se sto seguendo la procedura esatta? Preciso che sono alle
prime armi con Access, ma credo si sia capito. Grazie.
Non so per le altre versioni di Access, ma per Access 97 c'è la possibilità
con l'Autocomposizione database di generarne uno intitolato Collezione
musicale, che, se non risolve tutte le tue esisgenze, è sicuramente una
buona base di partenza per creare una buona struttura che poi potrai
modificare e/o personalizzare a tuo piacimento.

A mio modesto parere la tua struttura basata su sole tre tabelle mi sembra
troppo semplicistica e non risolve almeno i seguenti problemi:

1) Un album potrebbe essere una collection, nel qual caso non esiste un solo
artista di riferimento per l'album: insomma occorre che il campo che
determina l'artista principale dell'album possa essere opzionale e che
pertanto non risulti essere un elemento obbligatorio e determinante nel
creare la struttura del database.

2) D'accordo nell'avere un unica tabella ARTISTI, ma in essa devi poter
distinguere:
a) gli autori
a1) gli autori delle parole
a2) gli autori della musica
a3) i cantautori
b) gli esecutori
b1) i cantanti
b2) i cori
b3) i solisti strumentali
b4) i complessi musicali
b5) le orchestre
b6) i direttori d'orchestra
ecc. ecc.

3) Gli album debbono poter essere distinti anche in base al tipo di
supporto:
a) CD
b) DVD
c) Cassetta
d) LP in vinile
e) 45 giri in vinile
f) 78 giri in vinile
ecc. ecc.

4) Un album può contenere uno o più supporti (uno o più CD, uno o più DVD,
uno o più LP, una o più cassette), pertanto occorre avere anche una tabella
SUPPORTI.

5) Di un brano si possono avere più di una esecuzione fatte dallo stesso
esecutore o da esecutori diversi: in un supporto esistono più esecuzioni e
non più brani; da qui emerge che oltre ad una tabella BRANI occorre avere
una tabella ESECUZIONI.

6) Un brano avrà uno o più autori ed ogni autore può aver composto più
brani, per cui è evidente che le tabelle degli autori (ARTISTI) e dei BRANI
saranno in relazione molti-a-molti tramite una terza tabella.

7) Un brano può avere più esecuzioni ed ognuna può essere eseguita da più
artisti e sicuramente un artista ha effettuato più esecuzioni; da ciò deriva
che le tabelle BRANI ed ESECUZIONI dovranno essere tra loro in relazione
uno-a-molti, mentre le tabelle ESECUZIONI ed ARTISTI saranno tra loro in
relazione molti-a-molti in base ad un'altra tabella.

8) Se poi si vuole essere più pignoli bisognerebbe dividere un supporto in
tracce ed ogni traccia sudduviderla in esecuzioni (è il caso dei medley: una
traccia più brani); di contro, specie nella musica sinfonica e/o operistica
può capitare che una esecuzione sia suddivisa su più tracce. Resta il fatto
che una struttura del genere complica moltissimo le cose, quindi forse, se
sei agli inizi, è bene far coincidere l'esecuzione con la traccia.

9) Se devi catalogare anche musica sinfonica ed operistica ti serve anche
una tabella OPERE; una opera contiene più brani e può avere più autori che a
loro volta possonao aver scritto più opere; se quindi prevedi anche la
memorizzazione di questo tipo di musica le tabelle OPERE e autori (ARTISTI)
saranno in relazione molti-a-molti e le tabelle OPERE e BRANI saranno in
relazione uno-a-molti.

10) Normalmente esistono anche altre tabelle di contorno tipo la tabella
GeneriMusicali molto importante alla fine della selezione in seguito delle
esecuzioni e in relazione uno-a-molti con la tabella ESECUZIONI, e la
tabella CaseEditrici in relazione uno-a-molti con la tabella ALBUM.

11) E' bene usare in alcune tabelle i campi di tipo Memo; nella tabella
BRANI servirà a memorizzare le parole dei brani, nella tabella ATTORI
servirà a memorizzare le biografie, nella tabella ALBUM le critiche
artistiche ecc.ecc.

Se però si vuole prendere in considerazione solo quanto scritto sino al
punto 7), che a mio avviso rappresenta il "minimo sindacale" per realizzare
un database per una raccolta di musica leggera, la struttura dovrebbe essere
composta da almeno le seguenti tabelle:
a) ARTISTI
b) BRANI
c) Brani_Artisti
d) ALBUM
e) SUPPORTI
e) ESECUZIONI
d) Supporti_Esecuzioni
e) Esecuzioni_Artisti

Le suddette tabelle saranno tra loro in relazione nel seguente modo:

Le tabelle ARTISTI e BRANI saranno in relazione molti-a-molti un base alla
tabella Brani_Artisti (un brano più autori e un autore più brani) che
pertanto risulterà in relazione uno-a-molti sia con la tabella ARTISTI che
con la tabella BRANI.
La tabelle ALBUM e SUPPORTI saranno in relazione uno-a-molti (un album più
supporti) così come, opzionalmente la tabella ALBUM potrebbe essere in
relazione uno-a-molti con la tabella ARTISTI per visualizzare l'artista
prevalente dell'album (cantante, o autore, o orchestra ecc. ecc.).
Le tabelle SUPPORTI ed ESECUZIONI dovranno essere in relazione molti-a-molti
(più esecuzioni in un supporto e più supporti che contengono la stessa
esecuzione) tramite la tabella Supporti_Esecuzioni che risulterà pertanto in
relazione uno-a-molti sia con la tabella SUPPORTI che con la tabella
ESECUZIONI.
Infine le tabelle ARTISTI ed ESECUZIONI saranno tra loro in relazione
molti-a-molti (un artista più esecuzioni ed una esecuzione fatta da più
artisti) tramite la tabella Esecuzioni_Artisti che pertanto risulterà in
relazione uno-a-molti sia con la tabella ESECUZIONI che con la tabella
ARTISTI.

Per quanto riguarda la digitazione dei dati la cosa migliore a mio avviso è
creare una maschera principale associata alla tabella ALBUM; in tale tabella
inserire una sottomaschera con visualizzazione maschera singola associata
alla tabella SUPPORTI la quale a sua volta conterrà una sottosottomaschera
con visualizzazione a maschere continue associata alla tabella ESECUZIONI.

Avrai poi una maschera associata alla tabella BRANI che conterrà anche una
sottomaschera con visualizzazione a maschere continua con la quale inserirai
gli autori dei brani; gli autori in questa sottomaschera li selezionerai
tramite una casella combinata, e a fronte del suo evento "Su non in elenco"
aprirai una maschera con visualizzazione a maschera singola con cui
aggiornerai la tabella ARTISTI.
La maschera associata alla tabella BRANI la aprirai a fronte dell'evento "Su
non in elenco" della casella combinata con la quale selezioni i brani delle
esecuzioni nella sotosottomaschera di cui al capoverso precedente.

Nella sottosottomaschera esecuzioni inserirai anche un pulsante di comando
per aprire una maschera a visualizzazione a maschere continue sincronizzata
con la sottosottomaschera in cui inserirai gli esecutaori dell'esecuzione.
Se però, come penso, usi vesioni di Access successive ad Access 97 per le
quali è possibile avere più di due livelli di sottomaschere come per Access
97, la cosa migliore è che la sottosottomaschera esecuzioni abbia una
visualizzazione a maschera singola e che contenga una
sottosottosottomaschera con visualizzazione a maschere continue nella quale
si sceglieranno gli artisti delle esecuzioni (cantanti, e/o complessi, e/o
orchestra, e/o direttore di orchestra ecc. ecc.).
Comunque sia la selezione degli artisti esecutori verrà effettuata tramite
una casella combinata, a fronte del cui evento "Su non in elenco" si potrà
richiamare la maschera per l'aggiornamento della tabella ARTISTI.

Conosendo meglio Access e VBA si potrebbe, giocando adeguatamente sulle
proprietà Collega campi secondari e Collega campi master, crearsi una grande
maschera associata alla tabella ALBUM da usare come contenitore di tante
sottomaschere continue, ognuna relativa ai supporti, alle esecuzioni ed agli
esecutori, bypassando così anche il limite imposto da Access 97 di avere
solo due livelli di sottomaschere; naturalmente, come accennato
precedentemente la proprietà Collega campi master di alcune sotomaschere
faranno riferimento a controlli non associati della maschera principale che
verranno settati ti volta in colta in base alle chiavi primareie dei record
correnti delle sottomaschere gerarchicamente più impoertanti. Così facendi
si eludw anche il limite imposto da Access che impone che una
maschera/sottomaschera che contiene una sottomaschera debba essere
necessariamente a maschera singola.
Comunque forse ti conviene partire con soluzioni meno complesse, poi con il
tempo passerai a soluzioni più sofisticate.
--
Roberto

-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------
Loading...