Рекомендации по меткам

148
15 декабря 2016, 15:46

Например пользователь лайкает видео. У видео есть метки например: США, война, Сирия.

В MySQL есть таблица меток

id | tag
1  | USA
2  | Siria
3  | war

После того как пользователь лайкает видео, надо чтобы метки приставились к пользователю и дальше приплюсовывались к нему, если пользователь лайкает еще одно видео, с такими же метками. То есть он лайкнул видео, с меткой США. И в БД надо положить пользователь с id 1 полюбил метку usa 1 раз, если еще раз лайкнет, то уже 2 раза полюбил эту метку.

Как осуществить это, какие таблицы надо сделать ?

Answer 1

Первый подход. Делаем таблицу user_tags с полями user_id и tag_id. Каждый раз, когда пользователь лайкает видео, записываем метки в таблицу:

    insert into user_tags (user_id, tag_id) values (user, tag);

Когда нужно посчитать, сколько раз пользователь лайкнул ту или иную метку, делаем такой запрос:

    select count(user_id) form user_tags where tag_id = 1;

Плюс: простая вставка. Минусы: быстро растущая таблица и необходимость использования статистической функции при каждой выборке.

Второй подход. Делаем таблицу user_tags с полями user_id, tag_id и quantity. Первые два делаем составным ключом. При записи проверяем, есть ли в базе запись с таким ключом. Если есть, то делаем update, увеличивая на 1 число в quantity. Если нет, делаем insert, вставляя в quantity 1.

Плюсы: более компактная таблица, простые поиск и выборка. Минус: более сложная логика вставки записей.

READ ALSO
Что то не так в запросе MySQL

Что то не так в запросе MySQL

Вы переодически забываете указывать знак $ перед именем переменнойКлючи массива заключайте в кавычки

137
Как реализовать скрипт

Как реализовать скрипт

Помогите написать цикл для добавления множества пользователей разом вот метод добавления юзера

153
Где лучше сортировать данные

Где лучше сортировать данные

Всем приветГде лучше (быстрее) сортировать данные в mysql или php ?

136
Как подключиться к MySQL через java?

Как подключиться к MySQL через java?

Как подключится к MySQL через java? И как сделать добавление запроса?

141