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

Простой или личный тип сообщений:

Я пытался следовать другим ответам здесь, но не могу понять, как они действительно сохраняются в базе данных
введите описание изображения здесь

Отправитель:
Отправляет сообщение и сохраняет / тег под «Отправлено» сообщение

Получатель:
Получает сообщение и помечает как «Входящие» сообщение

Моя проблема: Когда я попытался отправить сообщение и обновить поле «Заполнитель» на «Отправлено», получатель не смог увидеть его в своей папке «Входящие», поскольку для него уже установлено «Отправлено».

кстати Заполнитель как статус сообщения (Входящие, Отправленные, Корзина), я создал 3 пользовательских представления, отображаемых в форме вкладки для моих объединенных таблиц (Входящие, Отправленные и Корзина)

Вопрос:

  1. Нужно ли вставлять 2 записи каждый раз при отправке сообщения? (Отправлено и Входящие)
  2. Это лучшая схема базы данных, которой нужно следовать, если мне нужно только простое / личное сообщение?

1

Решение

  1. Нужно ли вставлять 2 записи каждый раз при отправке сообщения? (Отправлено и Входящие)

Нет, только один раз.

  1. Это лучшая схема базы данных, которой нужно следовать, если мне нужно только простое / личное сообщение?

Я бы порекомендовал держать это очень просто. Обратите внимание, что «Sent_two», очевидно, должно быть «sent_to». Это будет делать все, что вам нужно, за исключением возможной части заполнителя, которая в настоящее время не понятна вашим намерениям.

введите описание изображения здесь

-- MySQL Script generated by MySQL Workbench
-- 11/30/14 09:07:59
-- Model: New Model    Version: 1.0
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`Users`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Users` (
`idUsers` INT NOT NULL,
`firstname` VARCHAR(45) NULL,
`lastname` VARCHAR(45) NULL,
`username` VARCHAR(45) NULL,
PRIMARY KEY (`idUsers`))
ENGINE = InnoDB;-- -----------------------------------------------------
-- Table `mydb`.`messages`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`messages` (
`idmessages` INT NOT NULL,
`Subject` VARCHAR(45) NULL,
`Body` TEXT NULL,
`Date` DATETIME NULL,
`sent_from` INT NOT NULL,
`sent_two` INT NOT NULL,
PRIMARY KEY (`idmessages`),
INDEX `fk_messages_Users_idx` (`sent_from` ASC),
INDEX `fk_messages_Users1_idx` (`sent_two` ASC),
CONSTRAINT `fk_messages_Users`
FOREIGN KEY (`sent_from`)
REFERENCES `mydb`.`Users` (`idUsers`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_messages_Users1`
FOREIGN KEY (`sent_two`)
REFERENCES `mydb`.`Users` (`idUsers`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]