Собственно создаю чат и передо мной возник вопрос:
Как выглядит наиболее правильная архитектура хранения данных для чата?
Уже есть таблица users, в которой есть email, nickname, данные для входа и т.п
Стоит ли делать, например, отдельную таблицу с сообщениями и отдельную таблицу для связывания сообщения с пользователем (в итоге 3 таблицы)?
Вроде бы тогда некоторые дублированные данные смогут пропасть, но при выдёргивании данных надо будет использовать Left Join, что достаточно тяжело для БД (на сколько я понимаю).
Вот пример того какую структуру бд использую для чата я в своих проектах. За почти год использования в 4 разных проектах структура бд принципиально не менялась. По ней и поиск нормально делать, в том числе и на sphinxsearch, и в целом мне удобно с такой работать.