All,
As noted on other questions I am building a music database for my own purposes. Thanks to the myriad questions and answers on here it is coming along nicely and fits my needs well. However, I want to check one issue that is niggling at me. Consider the following:
tblSongs
SongID
SongName...
tblTracks
TrackID
SongID...
tblRoles
RoleID
RoleName...
tblMusicians
MusicianID
MusicianName...
jtblComposers
SongID
MusicianID
jtblMusicianTracks
TrackID
MusicianID
RoleID
I am using a junction table for Composer information for each Song. Separately I am using another junction table for Musician/Role information for each Track. So Bob Dylan could compose a Song using jtblComposers and be the Vocals on many Tracks using jtblMusicanTracks.
However, I could get rid of the Composer junction table and add the Role:Composer in the jtblMusicianTracks instead. Queries could extract Composer information using criteria as required although this is a little more work than simply using the jtblComposers.
My current approach seems to work for me but is there a good reason to adopt the alternative approach? I want to avoid problems up the line. For information, the same approach is used for Track Artists (separate junction table between TrackID and MusicianID).
Any thoughts would be appreciated. I have tried to follow sensible practice on normalisation but this is still new territory for me.
As noted on other questions I am building a music database for my own purposes. Thanks to the myriad questions and answers on here it is coming along nicely and fits my needs well. However, I want to check one issue that is niggling at me. Consider the following:
tblSongs
SongID
SongName...
tblTracks
TrackID
SongID...
tblRoles
RoleID
RoleName...
tblMusicians
MusicianID
MusicianName...
jtblComposers
SongID
MusicianID
jtblMusicianTracks
TrackID
MusicianID
RoleID
I am using a junction table for Composer information for each Song. Separately I am using another junction table for Musician/Role information for each Track. So Bob Dylan could compose a Song using jtblComposers and be the Vocals on many Tracks using jtblMusicanTracks.
However, I could get rid of the Composer junction table and add the Role:Composer in the jtblMusicianTracks instead. Queries could extract Composer information using criteria as required although this is a little more work than simply using the jtblComposers.
My current approach seems to work for me but is there a good reason to adopt the alternative approach? I want to avoid problems up the line. For information, the same approach is used for Track Artists (separate junction table between TrackID and MusicianID).
Any thoughts would be appreciated. I have tried to follow sensible practice on normalisation but this is still new territory for me.