Ключевой вопрос: коллективные чаты в такой системе возможны?
Если да, то тогда нужны следующие таблицы:
thread (сессия/тема)
thread_user (список пользователей, статус каждого, число сообщений, в том числе и непрочитанных, дата, когда пользователь читал сообщения в этой сессии в последний раз и т.п.)
thread_post — собственно сами сообщения (чтобы оно хранилось в одном экземпляре, а не по одному на каждого пользователя)
thread_links — связка сообщений из thread_post и пользователей (чтобы можно было удалять сообщения, не затрагивая других пользователей).
В остальном — согласен с
nirvimel, нужно использовать SQL-решение и писать на том, что хорошо известно.