I have the following album table:
| album_id(PK) | album_name | artist_name | year | songs |
|---|
My candidate keys are {id} and {album_name, artist_name}.
Now, I am going to normalize the table till the 3NF, and I would like to know the reason behind the data of artist_name column being redundant.
1NF
Goal: columns should be atomic.
Result:
album:
| album_id(PK) | album_name | artist_name | year |
|---|
song:
| song_id(PK) | album_id(FK) | song_name |
|---|
2NF
Goal: no partial functional dependencies of non-prime attributes(columns that don't exist in any candidate key) on candidate keys.
Solution: I couldn't find any partial functional dependency. (Perhaps I am not aware of them in the tables.)
3NF
Goal: no transitive functional dependencies of non-prime attributes on candidate keys.
Solution: I couldn't find any transitive dependency.
Problem
Although the tables above seem normalized, there's the following problem(maybe many more) I have noticed: the data in the artist_name column is redundant. An artist with multiple album will have their name stored multiple times, which is something we are against to.
What am I missing here? Thanks.