taby said:
So basically, if I need to encode one-to-many or many-to-many relationships, then normalization is important. For one-to-one relationships, normalization is not required. Right?
Generally, yes. For one-to-many and many-to-many, normalization is important to avoid data duplication and maintain integrity.
For one-to-one, normalization could be helpful, but it depends on the use case. You might normalize, for instance, if you want to separate entities into different tables based on data types, or if data isn't needed.
For example, GameDev.net's database is designed with one-to-one normalization of user data, meaning user accounts from user profiles, user settings, and more even though those are all 1-1 mapping. Doing so keeps optional user data out of the main user account table, so it's only stored when needed. It speeds up queries and creates a separation of concerns in the schema. Also makes it easier to extend in the future, if needed, without affecting the core user table.