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".