Is the following table for a simple music database in 3NF? If not why? Im new to databases and I'm struggling to get my head around third normal form (3NF). I have been given a csv file where each record has fields song, album, artist and numerous tags.  I have put the data in a database and want to know if it's in 3NF. The headings of the tables I have inserted the data into are below:


 | Track_Id | Track_Name | Track_Artist | Track_Album | 
 | Tag_Id | Tag_Name | 
 | Track_Id | Tag_Id | 


I believe the candidate keys in the first table are Track_Id and the combination of {Track_Name, Track_Artist, Track_Album}.

I know alternatively I could have a separate song table with a foreign key pointing to an album table which in turn has a foreign key making a reference to an artist table, but is this necessary?
If Track_Id and (Track_Name, Track_Artist, Track_Album) are candidate keys, with no other partial or transitive dependencies, then the table is in 3NF. Think about this - can Track_Name determine Track_Album or Track_Artist, or can Track_Album determine Track_Artist? If not, it's in 3NF.

If the other two tables have candidate keys, they'll be in 3NF.