The most efficient database does not hold duplicate data, although there are some circumstances where it may be beneficial in a many to many relationship to store data on both tables if it is very one sided, or to avoid a complex search. This is all part of streamlining your application.

In you instance, your Activity is a One to many relationship so I would say you should not store the activities on the city when you can just search for the activities filtered by city.

2 Likes