Схема базы данных для обмена сообщениями с несколькими пользователями

Я ищу лучшее решение для обмена сообщениями между несколькими пользователями в системе (в стиле 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`);

Ответы на вопрос(2)

Ваш ответ на вопрос