Я не уверен, что именно вам сказать, потому что то, что вы спрашиваете, достаточно просто.
Прежде всего, используйте Google Reader в качестве справочного материала для онлайн-агрегаторов / читателей фидов. И если вы пытаетесь воссоздать эту функциональность, Google Reader уже в значительной степени прибил ее (imho).
Google Reader работает просто путем сохранения списка каналов. С точки зрения БД, вы, вероятно, имели бы эти сущности
User: id, name, email, etc...
Feed: id, feed_name, feed_url
Content: id, feed_id, title, content
User Feed: id, user_id, feed_id, user_label, has_read
Непрочитанные предметы:
SELECT COUNT(1)
FROM user u
JOIN user_feed uf ON uf.user_id = u.id
JOIN feed f ON f.id = uf.feed_id
WHERE has_read = 0
Непрочитанные товары по ленте:
SELECT feed_id, feed_name, COUNT(1)
FROM user u
JOIN user_feed uf ON uf.user_id = u.id
JOIN feed f ON f.id = uf.feed_id
WHERE has_read = 0
GROUP BY feed_id, feed_name
И тогда вам просто нужен какой-то механизм для маркировки предметов как прочитанных. В случае Google Reader есть только вызовы AJAX, инициируемые событиями наведения мыши с дополнительными ссылками, чтобы пометить все как прочитанное, оставить элемент помеченным как непрочитанный и т. Д.