Я ищу лучшее решение для реализации обмена сообщениями с несколькими пользователями в системе (в стиле Facebook).
Мне пришла в голову следующая идея: где каждое Сообщение принадлежит Message_Chain, а в таблице Message_status перечислены пользователи-отправители и пользователи-получатели. Однако я боюсь, что эта схема не очень эффективна для использования, когда в системе миллионы сообщений.
Может ли кто-нибудь предложить какое-либо другое решение текущей проблемы? Или объясните, почему мое решение будет в порядке?
CREATE TABLE `message` (
`msg_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`msg_text` TEXT NOT NULL ,
`msg_date` DATETIME NOT NULL ,
PRIMARY KEY (`msg_id`) );
CREATE TABLE `message_chain` (
`msgc_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`msgc_topic` VARCHAR(255) NULL ,
PRIMARY KEY (`msgc_id`) );
CREATE TABLE `message_status` (
`msgsta_msg_id` BIGINT UNSIGNED NOT NULL ,
`msgsta_usr_id` INT UNSIGNED NOT NULL ,
`msgsta_msgc_id` INT UNSIGNED NOT NULL ,
`msgsta_is_sender` TINYINT(1) NULL ,
`msgsta_is_read` TINYINT(1) NULL DEFAULT NULL ,
`msgsta_is_deleted` TINYINT(1) NULL ,
PRIMARY KEY (`msgsta_msg_id`, `msgsta_usr_id`);