Какой лучший способ указать местоположение пользователя: 3 столбца или один столбец location varchar в mysql?

#mysql #sql

#mysql #sql

Вопрос:

Мне нужен какой — то способ назначить адрес пользователю. Адрес состоит из трех значений :

 country
region 
city
 

Можно создать 3 столбца для страны, региона и города.
Но также можно создать один столбец varchar и отделить страну, регион, город запятой.

Какой подход лучше, если мне нужно запросить пользователя по стране и / или региону и / или городу?

Ответ №1:

Рекомендуется хранить адрес в 3 отдельных столбцах. Это упрощает поиск по одному значению или использование операторов and / or для запроса на основе нескольких значений.

Комментарии:

1. Но я могу использовать ключевое слово mysql LIKE для поиска конкретной страны в varchar.

2. Подумайте о Нью-Йорке, штате и городе… Почти никогда не рекомендуется нарушать первую нормальную форму , если вы используете реляционную базу данных. И это атомарность. Одно единственное значение в одном поле.

3. @Vladimyrlevytskyi Также LIKE доступен только при использовании без ведущего%. Таким образом, поиск регионов и городов будет медленнее, чем если бы это было отдельное поле


Ответ №2:

Еще один вариант сохранить вашу основную таблицу небольшой (и быстрой для обработки): если вам не нужны регион и страна все время, создайте отдельные таблицы для каждой, тогда вы можете использовать объединение только тогда, когда вам нужно определить эти значения (вы присоедините город обратно к стране и стране).страна обратно в регион — он же континент). Это подпадает под категорию нормализации данных. Удачи.