#mysql #sql
#mysql #sql
Вопрос:
Мне нужен какой — то способ назначить адрес пользователю. Адрес состоит из трех значений :
country
region
city
Можно создать 3 столбца для страны, региона и города.
Но также можно создать один столбец varchar и отделить страну, регион, город запятой.
Какой подход лучше, если мне нужно запросить пользователя по стране и / или региону и / или городу?
Ответ №1:
Рекомендуется хранить адрес в 3 отдельных столбцах. Это упрощает поиск по одному значению или использование операторов and / or для запроса на основе нескольких значений.
Комментарии:
1. Но я могу использовать ключевое слово mysql LIKE для поиска конкретной страны в varchar.
2. Подумайте о Нью-Йорке, штате и городе… Почти никогда не рекомендуется нарушать первую нормальную форму , если вы используете реляционную базу данных. И это атомарность. Одно единственное значение в одном поле.
3. @Vladimyrlevytskyi Также
LIKE
доступен только при использовании без ведущего%. Таким образом, поиск регионов и городов будет медленнее, чем если бы это было отдельное поле
Ответ №2:
Еще один вариант сохранить вашу основную таблицу небольшой (и быстрой для обработки): если вам не нужны регион и страна все время, создайте отдельные таблицы для каждой, тогда вы можете использовать объединение только тогда, когда вам нужно определить эти значения (вы присоедините город обратно к стране и стране).страна обратно в регион — он же континент). Это подпадает под категорию нормализации данных. Удачи.