Stifone ha scritto:
Tu dici
Quando parlo di "Album" io intendo un'associazione tra Titolo e Artista che stabilisce che quel determinato Titolo fa parte della discografia di quel determinato Artista.
Prendiamo il caso che di Album di un Gruppo (esempio i Pooh) dove i brani possono essere cantati e composti da più Artisti come lo gestisci?
Credo che la gestione specifica dei dati, dopo quelli generali legati all'Album, debba essere fatta sui singoli Brani all'interno dello stesso.
Una Formazione è un elenco di musicisti (strumentisti o cantanti che siano) che può essere associata a:
1) Un album
2) Un'Edizione specifica di un album
3) Un Disco
4) Una Canzone
L'Elenco degli Autori/compositori, a sua volta, può essere associato a:
1) Un Album
2) Un Disco
3) Una Canzone
Per la formazione io ho creato le tabelle:
utblElementiFormazione [una tabella unione tra utblTipiArtisti, utblTipiPersone e ptblStrumenti] coi campi
IDElementoFormazione [PK]
IDTipoArtista [FK] riferimento alla tabella "utblTipiArtisti" che permette di selezionare tutti i nomi degli Artisti presenti nella mtblArtisti escludendone i record associati alla categoria neutra (quindi le diciture tipo "Artisti Vari" o "Stesso Artista dell'Album" etc..)
IDTipoPersona [FK] riferimento alla tabella "utblTipiPersone" che permette di selezionare tutti i nomi delle Persone presenti nella mtblPersone includendo solo i record associati alla categoria musicisti
IDStrumento [FK] riferimento alla tabella "ptblStrumenti" associa lo strumento suonato
[dati associati all'elemento della formazione]
utblElementiFormazioneAssociati [tabella figlia di utblElementiFormazione] con
IDElFormazioneAss [PK]
IDElemFormazione [FK] riferimento alla tabella madre "utblElementiFormazioni"
ElemFormazioneCollegatoA [FK] riferimento alla tabella "ptblParametri" filtrata in modo tale da selezionare l'elenco dei livelli a cui l'elemento della formazione può essere associato
IDCollegato: a seconda del fatto che l'elemento della formazione sia associato ad un Album, ad un'Edizione dell'Album, ad un Disco o ad una Canzone, il campo contiene il codice ID associato preso dalla tabella relativa al livello a cui è stato associato.
Un processo simile è fatto per l'elenco autori / compositori
con la tabella "utblAutorità" collego Artista e Titolo tramite le loro chiavi primarie
con la tabella "utblAutori" (tabella figlia di "utblAutorità") ho le seguenti chiavi
IDAutori [PK]
IDAutorità [FK] collegamento con la tabella madre "utblAutorità"
IDAutoreMusiche [FK] collegamento con la tabella "utblTipiPersone" filtrata per tipo "Autore Musiche"
IDAutoreTesti [FK] collegamento con la tabella "utblTipiPersone" filtrata per tipo "Autore Testi"
con la tabella "utblAutoriAssociati" (tabella figlia di "utblAutori")
IDAutoriAssociati [PK]
IDAutoriMeT [FK] collegamento con la tabella madre
ElemFormazioneCollegatoA [FK] riferimento alla tabella "ptblParametri" filtrata in modo tale da selezionare l'elenco dei livelli a cui la coppia “autore musiche” e “autore testi” può essere associata
IDCollegato: a seconda del fatto che la coppia “autore musiche” e “autore testi” sia associata ad un Album, ad un Disco o ad una Canzone, il campo contiene il codice ID associato preso dalla tabella relativa al livello a cui è stato associato.
al momento sul database che ho condiviso il processo per gli Autori non è ancora completo, perché me ne sono accorto solo ora che ho riesaminato la cosa per darti la risposta