我需要在網站上實現消息傳遞系統。有用戶,這些用戶可以發送消息給彼此。我怎樣才能做到這一點?我需要什麼樣的數據庫結構?如何在用戶之間實現消息傳遞系統?
我現在要做的是這樣的:
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,receiverid和消息。問題是,如果接收者將刪除他的消息,消息也將從發送者消失。我想實現一個像電子郵件框這樣的結構。你有什麼建議?
P.S.我正在用ASP.NET MVC 3和C#開發項目。
也許你需要創建郵件的兩個副本,一個發件人和一個接收人。你有什麼嘗試? – 2013-03-22 13:28:40
@DanPuzey,不,我沒有試過你的建議,但是我想過了。現在我正在考慮一個很好的解決方案。 – hakan 2013-03-22 13:34:22
如果它始終是1個發件人和1個接收者,那麼您只需擁有兩個標誌,即是否從任一郵箱中刪除了郵件。這樣可以避免在系統中出現重複的消息。如果你有多個接收器,但這不起作用,你將不得不復制該消息。 – VARAK 2013-03-22 14:39:01