Какая должна быть структура базы для системы обмена сообщениями?

Добрый день.

Необходимо сделать внутреннюю систему обмена сообщениями похожую на электронную почту. У каждого пользователя есть виртуальный почтовый ящик и папки "Входящие", "Отправленные", "Черновики" и "Корзина".
Подскажите, пожалуйста, какая должна быть структура базы данных чтобы у отправителя сообщение отображалось в папке "Отправленные", а у получателя во "Входящие" и была возможность удалить сообщение независимо друг от друга.
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 1
@choupa
Архитектор (обычный, который строит)
На скорую руку могу такое предложить.

пользователи:
user_id | user_name | group_id | password_hash | ...

папки пользователей:
folder_id | user_id | folder_name | parent_folder_id | folder_type

словарь типов папок (стандартные обязательные папки: "Входящие", "Отправленные") :
folder_type | default_name_ru | default_name_en

сообщения:
message_id | from_user_id | title | text | ...

получатели сообщений (возможна отправка сразу многим, если надо):
message_id | to_user_id

содержимое папок:
message_id | folder_id

Одно и то же сообщение может присутствовать в самых разных папках, принадлежащих разным пользователям. Соответственно удаление одной записи из последней таблицы никак не влияет на присутствие сообщения в других папках.

Жирным выделил принципиальные поля, остальное — лирика. Курсивом — ключи.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы