@razumovsu
Интересуюсь web-разработкой, IT-технологиями

Как составить схему базы данных для чата и на чем?

Суть такая: необходимо сделать чат, в котором можно также обмениваться файлами. Пример на скрине. Как сделать без файлов я понимаю(используя sql). Но как сделать так, чтоб одним запросом можно было выбрать сразу например 100 последних сообщений между двумя пользователями, причем, если в каком-то сообщении есть файлы, то их тоже нужно отобразить?
Если в виде строки хранить файлы для одного сообщения, то я думаю это будет не нормализованный вид? Хотя на первых взгляд такое решение кажется самым простым. Но в таком случае непонятно, как для каждого файла одним запросом извлекать его путь на сервере?

У меня нет идей как совместить 3 сущности: пользователи, текстовые сообщения, файлы в одну выборку, один запрос.
Может в этой задаче лучше использовать nosql решения? Данные будут хранится приближенно к модели.
Если кто сталкивался с подобной проблемой, буду рад услышать советы, ссылки, предложения.

Спасибо.
Скрин:
680e3b197ec14f75ba8e7d39fde69c8d.jpg
  • Вопрос задан
  • 964 просмотра
Решения вопроса 1
coderisimo
@coderisimo
Может, не понял суть вопроса,но в чем проблема ?
Если одно сообщение -1 файл , то просто добавляете поле, где хранится ссылка на него (на файл). Если их (файлов , прикрепленных к сообщению) может быть много, то в поле хранится путь к директории из которой нужно вставить в текст чата ссылки на все имеющиеся там файлы. Название директории можно генерировать рэндомно или используя ID записи (главное чтобы оно было уникальным).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы