Мультиязычные данные и сложная выборка

kevmen

Новичок
Здравствуйте.
Intro: В базе необходимо хранить названия товаров на разных языках.
База с товарами

У пользователя хранятся товары, которые он уже купил. Хранятся в поле user_buy_products через запятую.
При просмотре профиля пользователя А пользователю В необходимо выводить товары именно на языке В.

1) А сохранил товары на русском, а В из Англии, необходимо выводить на англ. - несложно.
2) А сохранил на китайском, а В из России - несложно. Обратный процесс пункту 1.
3) А сохранил на китайском, а В из Англии - вот тут все сложности. Ведь в parent хранится id основного товара на главном языке, то есть на русском.

Как осуществить запрос, максимально оптимизировав его?
Заранее спасибо.
 

С.

Продвинутый новичок
Надо просто чтобы один и тот же продукт на всех языках имел одинаковый ID.
 

kevmen

Новичок
id ключ. Как же он будет одинаковым. Но мысль уловил.
Есть еще варианты?
ps: появилась идея заносить в поле пользователя только на главном языке.
 

С.

Продвинутый новичок
А какие еще могут быть варианты? Трахаться с этим id или не трахаться. Типичный пример оверинжиниринга и к чему это приводит.
 

kevmen

Новичок
Ну что же, так и сделаем. 2 разных поля ключ продукта и ид. Последний будет не уникальным значением, который будем присваивать товарам на разных языках. А при выводе дополнительное условие, которое помимо ида учитывает еще и ид языка пользователя. Получается элементарный запрос. Спасибо за совет.
 

С.

Продвинутый новичок
Там и "ключ продукта" не нужен даже. Зачем за собой таскать этот бесполезный реквизит? Пара ид+язык вполне себе уникально опредепяет запись.
 

kevmen

Новичок
Что скажете по поводу хранения id товаров в поле в виде json_encode, причем id записал в виде строки, чтобы поиск был удобнее.["1","2"] Какой можете дать совет по этому поводу?
 

kevmen

Новичок
В поле у пользователя, то есть товары, которые он купил.
 

kevmen

Новичок
Товарищи, повторю вопрос. Как вы считаете, будет ли оптимальным хранение списка купленных пользователем товаров в виде массива json?
 

kevmen

Новичок
Так каким же образом хранить в базе массив со списком идов товаров пользователя, чтобы с выборкой не было проблем?
 

VVWind

Новичок
Ну это вообще пушка.

Для языков - в одной таблице - products, товары и их id, типа products.id
В другой таблице - language_products и там products_id, language_id и value (перевод)
Языков в таблице languages к примеру 3 - русский с id 0, английский 1 и китайский 2.
По дефолту 0 или 1 собираются все переводы. Если китайский ищем в таблице language_products все переводы по айди языка и для каждого товара свой перевод.

Покупки - в таблице orders к примеру. В нем хранится products_id, user_id.
Таким образом можно собирать покупки пользователя легко и просто.

Зачем хранить json с покупками в поле? Как вам это пришло в голову?
 

kevmen

Новичок
А как осуществить при этом выборку?
То есть делаем запрос в таблицу пользователя, имея его ид, а как joinить товары и их названия? Ведь join возвращает одно значение, а если товаров несколько?
 

kevmen

Новичок
Разобрался с запросами многие ко многим.
Вопрос такой, что быстрее множество join в одном запросе или отдельные select?
 
Сверху