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 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 dependencies.
3NF
Goal: No transitive functional dependencies of non-prime attributes on candidate keys.
Solution: I couldn't find any transitive dependencies.
Problem
Although the tables above seem normalized, there's the following problem: the data in the artist_name
column is redundant. An artist with multiple albums will have their name stored multiple times, which we are against.
What am I missing?