Правильно ли такое хранение данных о пользователе?
Всем привет! В БД есть таблица пользователей и там же поля "country_id", "state_id", "city_id"
Эти поля используются для поиска пользователя по стране, области и городу. Но для API нужно отдавать полностью все данные, включая не только ID, но и названия... Поэтому постоянно приходится JOINить 3 таблицы с городами, странами и областями.
Правильным ли будет, если я создам дополнительное поле "location", где будет храниться JSON с готовым массивом данных? А обновлять его буду в тот момент, когда пользователь изменяет о себе информацию...
Нет, неправильно. JOIN - одно из преимуществ реляционных баз данных. Поверь, это не настолько затратная операция, насколько ты думаешь. Поэтому используй и не особо парься на этот счет.
Добавление же дополнительного поля нарушит вторую нормальную форму баз данных.