Мне нужно внедрить систему обмена сообщениями на веб-сайте. Пользователи и пользователи могут отправлять сообщения друг другу. Как я могу это достичь? Какая структура базы данных мне нужна?Как реализовать систему обмена сообщениями между пользователями?
То, что я сейчас что-то вроде этого:
CREATE TABLE `message` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`SenderId` int(11) NOT NULL,
`ReceiverId` int(11) NOT NULL,
`MessageContent` varchar(2000) COLLATE utf8_turkish_ci NOT NULL,
`MessageDate` datetime NOT NULL,
`Viewed` bit(1) NOT NULL DEFAULT b'0',
PRIMARY KEY (`Id`),
KEY `FK_Message_User_idx` (`SenderId`),
KEY `FK_Message_Receiver_idx` (`ReceiverId`),
CONSTRAINT `FK_Message_Sender` FOREIGN KEY (`SenderId`) REFERENCES `user` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT `FK_Message_Receiver` FOREIGN KEY (`ReceiverId`) REFERENCES `user` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=3
Это MySql создать таблицу сценария. В основном я храню senderid, receid и сообщение. Проблема в том, что если получатель удалит его сообщение, сообщение также исчезнет из отправителя. Я хочу реализовать структуру, такую как почтовый ящик. Что ты предлагаешь?
P.S. Я разрабатываю проект с ASP.NET MVC 3 и C#.
Возможно, вам нужно создать две копии сообщения , один для отправителя и один для получателя. Что вы пробовали? –
@ DanPuzey, нет, я не пробовал ваше предложение, но я подумал об этом. Сейчас я думаю о хорошем решении этого. – hakan
Если это всегда 1 отправитель и 1 приемник, вы можете просто иметь 2 флажка, было ли сообщение удалено из любого почтового ящика. Таким образом, вы можете избежать дублирования сообщений в своей системе. Если у вас несколько приемников, хотя это не сработает, и вам придется дублировать сообщение. – VARAK