Przechowywanie wartości na forum dla użytkowników, którzy jeszcze nie przeczytali tematu (co jest złym pomysłem), nie będzie skalowalne. Zrób to odwrotnie jeśli naprawdę musisz, ponieważ będziesz mieć również problemy związane z koniecznością dodawania wpisów do każdego tematu w Twojej bazie danych po rejestracji nowego użytkownika.
Zamiast rezygnować z tabeli relacyjnej, spróbuj zrobić to w następujący sposób:
Table: topics
+----+-------+------+-----
| id | title | body | ...
+----+-------+------+-----
| 1 | xyz | .... | ...
Table: replies
+----+-------+------+-----
| id | title | body | ...
+----+-------+------+-----
| 3 | xyz | .... | ...
Table: read_topics
+---------+----------+
| user_id | topic_id |
+---------+----------+
| 2 | 1 |
Twoje podejście, choć możliwe (i łatwiejsze do wyobrażenia), zaczyna się załamywać, gdy masz ogromną liczbę użytkowników, a skalowalność jest tym, o czym wspominałeś w komentarzach. Innym problemem jest to, że przy swoim podejściu masz ogromny kary za wydajność, ponieważ musisz pobrać dane z bazy danych, podzielić je, a następnie manipulować i ponownie łączyć przed wykonaniem kolejnej transakcji. Masz również problemy z zapisywaniem do tabeli przez dwa wątki CGI jednocześnie . Baw się tym...
Używasz narzędzia do manipulacji danymi, sortowania, relacji danych i przechowywania, więc używaj go do wszystkich z nich, a nie tylko jako wysypiska informacji.