New to databases - does my ERD reflect good database design?
I recommend using surrogate primary keys instead of artist or album names.  Doing this will improve the database design because currently a change in an artist's name would require updating each entry in your audio_files table for that particular artist.

You and I likely agree it would be strange for an artist to change their name, however they have a penchant for doing this.  Even beyond the infrequent artist name change, you are much more likely to encounter artist name changes due to user error.

Also, I noticed that you use the path_of_file as the primary key of the audio_files table.  Keep in mind that files may move for a variety of reasons, some of which may be out of the domain of control for your app.  You should consider how your database handles that.



To answer your follow up:

If you go with the unique key approach I recommend, updating the artist name would be straight forward:


UPDATE Artists
SET Artists.Artist_Name = 'New Name'
WHERE Artists.Artist_ID = 



Updating the artist name in the design you propose would involve inserting a new record in the artist table, creating a subset of file paths with the old artist name, then updating each file path record to the new artist record, and finally deleting the old one.  Yuck!