I have to create a database that will store a huge amount of people along with their addresses, that will have to be searchable by place (i.e. find people in that or other city).
I am doubting whether I should keep the city field in the address as simple varchar or create a city table and refer to it, to avoid duplicate city names etc.
Note: I am using SQL-Server and will access the data via EF.
Background
Authority table – a reference table that contains the possible values for the “thing” for which it is an authority. For example, a Country authority table would contain all possible values for country.
An Answer
Depending on your definition of “huge amount …” you definately will want to have some authority tables.
Based on the geographic range of your addresses, some or all of these seem like a good start for your authority tables: