Было бы лучше хранить данные в нормализованной схеме, содержащей фактические , признанные правительством названия городов.
@ Предложение Варелы о «псевдониме» для города, вероятно, хорошо сработало бы в этой ситуации.Но вы должны вернуть сообщение в духе «Вы ввели« Теперь Йерк ». Возможно, вы имели в виду« Нью-Йорк »?».На самом деле, вы хотите получать такие исправления независимо от ...
Конечно, то, что вы, вероятно, должны на самом деле хранить, не город, а почтовый индекс.Дизайн таблицы выглядит следующим образом:
State:
Id State
============
AL Alabama
NY New York
City:
Id State_Id City
========================
1 NY New York
2 NY Buffalo
Zip_Code:
Id Code City_Id
=========================
1 00001-0001 1
А затем сохраните ссылку на Zip_Code.Id
всякий раз, когда у вас есть адрес.Вы хотите точно знать , почтовый индекс которого пользователь (как утверждается) является участником.Причины включают:
- Налоги для розничной торговли (независимо от того, как действует Amazon).
- Адреса для доставки (например, в Вашингтоне и Нью-Йорке есть Bellevue. Почтовые индексы).разные).
- Социальное картирование.Если вы сохраните его как города с «пользовательским вводом», вы не сможете (легко) проанализировать данные, чтобы выяснить, например, какие пользователи живут рядом друг с другом, а тем более в одном городе.
Есть несколько других вещей, которые можно сделать с проверкой адреса, включая географическое местоположение, но это базовая схема, которая должна помочь вам в большинстве ваших потребностей (и предотвратить большинство возможных «недействительных» аномалий).