Ciao,
secondo me devi fare delle tabelle di relazione tra gli utenti e i messaggi/documenti

ad esempio puoi fare una tabella,
*documenti_non_letti (id_utente, id_documento)
quando segnali all'utente 33 che ci sono da leggere i docuemnti 5 e 7 inserisci
33,5
33,7

quando ti risulta che l'utente ha letto il documento 7 cancelli il recod 33,7 dalla tabella

così nella tabella tieni sempre traccia, dei documenti che ogni utente non ha ancora letto


è solo un esempio...
potresti aggiungere altri campi, ad esempio un campo data e ora per sapere da quanto un docuemnto aspetta di essere letto

oppure anziché cancellare il record quando il doc è letto
potresti aggiungere un campo 'letto (datetime)' che è null quando il docuemnto è da leggere e valorizzato alla data di lettura quando il doc è stato letto