Как организовать удаления записей из ленты пользователя?
Это одна из задач которые не имеют однозначно правильного решения.
В любом случае решение будет затратным по ресурсам.
Я знаю 2 варианты:
1) Табличка hidden_post вида user_id, post_id
Пишем туда посты которые скрываем, на выводе фильтруем.[+] требуется не много дополнительного места для хранения[-] геморройная сборка ленты новостей (на больших данных where post_id not in (...) использовать нельзя )
2) хранить для каждого пользователя список id постов которые он должен видеть[+] простой вывод ленты постов пользователя[+] можно реализовывать всякие хитрые правила какой пользователь видит какой пост.[-] требуется МНОГО места[-] сложный код обновления этих списков[-] лента пользователя не бесконечная скорее всего.
В принципе варианты можно совместить, для свежих постов вариант 2, для старых - вариант 1.
А почему не сделать для записи флаг deleted ?