Cheizer
@Cheizer

Как грамотнее сделать, добавление ID пользователя к задаче, или ID задачи к пользователю?

Друзья привет! Философский вопрос у меня назрел в процессе разработки одно ресурса с личными кабинетами пользователей. Условно: Есть зарегистрированные пользователи на сайте, они могу взаимодействовать с ресурсами (страницами) на сайте. Например подписываться на изменения тех или иных страниц.

И вот как грамотно делается, когда юзер подписывается на страницу, в его таблицу в бд добавляется ID этой страницы, или наоборот?
Для последующих фильтраций важно думаю это. Например юзер у себя захотел посмотреть все страницы на которые он подписан. И функция делает запрос ко всем ресурсам где есть его ID как подписчика, или наоборот, я захочу вывести всех пользователей подписанных на этот ресурс. :)) блин, блин, надеюсь понятно обьяснил.
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Все верно пишут. Вам нужна связь "многие на многим", реализуется с помощью промежуточной таблицы с помощью элементарных join-ов.

Создав всего одну таблицу user_tasks с двумя колонками user_id и task_id можно грамотно организовать получение всех задач пользователя, а так же всех пользователей подписанных на задачу.

Если же использовать для этого дела отдельную колонку в одной из таблиц, и делать выборку по LIKE - запрос получится легче в визуальном плане, но гораздо тяжелее для сервера.

Приведем аналогию: Представьте, что перед вами задача - выбрать лишь белые камушки среди тех, которые бросил в кучу определенный человек. Будет гораздо легче, если все камушки заранее будут рассортированы и помечены, чем выбирать их из общей кучи.

Удачи в разработке вашего проекта. И прошу прислушаться к советам, которые дают знающие люди :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@xutesayor
Очевидно, что это связь многие ко многим. Нужно создать промежуточную таблицу, в которой и будут описаны эти отношения.
Ответ написан
sergiks
@sergiks Куратор тега PHP
♬♬
Таблица "Подписки": user_id, page_id

Primary key – составной индекс из обоих столбцов, просто-индекс по page_id для поиска.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы