Вывод пользователю не прочитанные им новости

программирование php MySQL

Задача такова:
Есть таблица с новостями и таблица с пользователями.
Как определить прочитал ли пользователь новость или нет.
Я вижу только два варианта, и они мне не нравятся.
1. Создать у таблицы новостей поле text типа, которое будет содержать ID всех пользователей прочитавших сию новость разделенных запятой. Затем разбить на массив и использовать in_array()
2. Создать отдельную таблицу, где будут хранится записи содержащие id пользователя и id прочитанной им новости. Затем, выбирать новости для пользователя исключая те, ID которых есть в таблице для конкретного пользователя.

Примечание:
Epsiloncool, дело в том, что тогда, прочитанной будет только 1 новость. Не так ли?
ID последней прочитанной новости. Ничего нам не даст. А вот именно N * M мне и не нравится.
Ответы:
а чем Вас не устраивает второй вариант?
Второй вариант почти идеален, за исключением того, что я бы хранил не ID каждой прочитанной новости, а ID последней прочитанной новости. Таким образом исключается вариант, что в БД будет N*M записей, где N - количество пользователей, а M - количество новостей.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.