Как реализовать скрытие новостей из ленты у пользователя?
Чтобы не объяснять смысл устройства сайта, я упрощу вопрос оставив главное.
Представим, что есть социальная сеть, пользователь подписывается на паблики и новости этих пабликов выводятся у него в ленте (все прямо как во всеми любимом ВК).
Только одно но, пользователь может и будет удалять посты из своей ленты, и удаленный пост больше никогда не должен появится у него в ленте
У меня возникло только 2 способа решения этой проблемы:
1) Для каждого юзера есть БД, и как только паблик добавляет пост, этот пост добавляется каждому юзеру, что подписан на паблик. Но это как-то накладно, что будет когда на паблик подписаны десятки тысяч, когда таких пабликов не меньше, и каждый в день добавляет много постов?
2) Как только юзер удаляет пост, в таблицу заноситься id новости, которую он удалил. Структура таблицы del_news примерно такая: user_id, news_id. И уже по этой таблице будет фильтроваться новости.
Но тут опять проблема, эта таблица не слабо так разрастется, ведь пользователь будет удалять не мало новостей, а они не при каких условиях не должны появиться вновь, т.е. таблицу очищать с течением времени нельзя. По моему это тоже будет очень нагрузочно
Вариант 2 верный.
Не стоит бояться кол-ва записей в таблице.
В случае правильной оптимизации базы (создания индексов нужных индексов и верного построения запросов) всё будет достаточно быстро работать.
Да я уже закончил вроде как учиться, и в моем вопросе лента новостей - вовсе не лента и вовсе не с новостями. Просто когда задавал этот вопрос на форуме и описывал всю суть того, что мне надо, вышло так много текста что мне никто и не ответил :D
Вот и упростил вопрос
А по ссылке ничего нового, уже предложенные мной варианты
В таблицу связки пользователя и новости можно добавить флаг is_hidden например.
Проставляете его при скрытии пользователем новости, при этом не нужно городить какие-то отдельные таблицы или удалять связи между таблицами.
Просто делаете таблицу: News_Del и два поля в ней: idNews, idUSer. Дальше используем эту таблицу как фильтр: отображать все новости с учетом пабликов, кроме тех, что в таблице News_Del. По ресурсам это будет оптимальный вариант. Еще не плохой вариант - ограничивать пользователей по времени отображения новости. Т.е. спустя 1-5 лет - часть news стирать, которые устарели.