Puedes hacerlo con una tabla en la BD tal que así:
Temas_vistos:
tID uID
1 1
2 1
3 1
Luego puedes leer esta tabla de la siguiente manera: El usuario cuya uID es 1 ha leído los temas 1, 2 y 3. El problema de esto es que sería una tabla enorme.
Otra solución es crear un campo en tu tabla usuarios llamado "temas_visto" y ahí añadirlos según el identificador del tema como un array, ejemplo:
Tabla TEMAS:
temaID contenido bla bla bla ....
1 La morsa artica...
2 El león marino vive casi toda su vida..
3 El pingüino emperador....
Tabla USUARIOS:
usuarioID email pass... etc..... temas_vistos
1
[email protected] djffsdf 1,2,3
2 f@hotm.. Ddfdfs 2,3
Una vez recuperados los datos del campo temas_vistos podrías recorrer el array y saber que temas ha visto y obviamente los que no están en la lista no han sido vistos.
Otra opción que tienes es instalarte un foro gratuito como phpbb, smf y ver como funciona su código para entender las soluciones que ellos idearon para ese "problema".