Я пытаюсь найти лучший способ сопоставления таблиц стран, регионов и городов.
На моем веб-сайте я хочу, чтобы пользователь мог просто ввести город.Затем, по желанию, страну и регион, оба из которых необходимо будет ввести или не вводить вообще.
В настоящее время мои таблицы как таковые
tbl> У пользователя есть townID (FK)
tbl> у города есть id (PK) имя_домена regionID (FK DEFAULT NULL)
tbl> регион имеет идентификатор (PK) regionName countryID (FK NOT NULL)
tbl> странаимеет идентификатор (PK) countryName
Я подумал, возможно, еще больше наплевать на отношение пользователя к городу:
tbl> У пользователя есть locationID (FK)
tbl>у местоположения есть id (PK) townID (FK) regionID (FK) countryID (FK)
Но я думаю, что это не нужно и только еще больше усложняет проблему?
База данных по странеуже заселено.Я намерен создать собственные ссылки на отношения город> регион> страна, введенные пользователями.Поэтому, если пользователь вводит город без региона и страны, он вводится в tbl> town без regionID, если еще не существует города с таким именем без идентификатора региона.То же самое относится и к городу, в котором идентификатор региона и страны введен пользователем.Только я проверяю, что не существует отношения город> регион> страна, которое уже существует до входа.Позже при разработке сайта я буду предоставлять предложения Ajax для страны / региона на основе введенного пользователем города.
Итак, на вопросы:
Я могу предвидеть подводные камни с этимтакие как повторяющиеся данные или данные, которые могут быть перезаписаны.Есть ли лучший способ конструировать таблицы, чтобы они соответствовали моим желаемым методам?
На этот вопрос можно ответить предыдущим вопросом: но могу ли я что-нибудь сделать, чтобы уменьшить обработку таблиц в PHP.Очевидно, я бы предпочел просто вставить с одним оператором PHP, но я думаю, что слишком много предупреждений, чтобы сделать это одновременно.
Кроме того, так как запись города пользователя может быть нулевой и может содержать или не содержать внешний ключссылка на регион, как лучше всего создать вид, который учитывает это?
Поскольку он будет размещен, я бы не хотел использовать функции MySQL.
Пожалуйста, дайте мне знать, если вынужны какие-то разъяснения.Я действительно хочу сделать это правильно с первого раза, прежде чем продолжить, поэтому ваша помощь будет неоценимой.