2014-08-28 139 views
-1

我的網站由一個內置消息系統組成,用戶可以將消息發送給其他用戶並在網站中查看。這是某種Facebook消息,但它不使用電子郵件地址,只是用戶對網站內的用戶類型的消息服務。內置消息系統,所有成員的管理員

此郵箱表的我的列是mailbox_id,memberid,sender_id,sent_date,主題,正文,is_unread,is_read,is_deleted。

當用戶(MEMBERID = 1)發送給另一個用戶(MEMBERID = 2),則mailbox_id將是一個自動遞增,MEMBERID將所述接收器的ID和SENDER_ID將用戶誰發送消息,該消息是「memberid = 1」。希望你明白這一點。

但是,這裏出現了我的問題。如果我是管理員用戶並且希望向我的網站中的所有成員發送郵件,我不知道如何將其存儲在我的表中。我當然可以爲每個成員創建每條消息。假設有1000個成員,那麼表中會有1000個新的行。我怎樣才能避免這樣做?我只想在該表中創建一個新行,並且所有用戶都可以看到此消息。

我正在考慮使用memberId = 0,並且所有成員都可以看到此消息,因爲沒有會員使用該id = 0。但是,如果有一位成員刪除了按摩,我該如何追蹤?或看到那個消息? 「is_deleted」列只能由一個用戶使用。 1 =已刪除,0 =未刪除。

請幫忙,謝謝。

回答

2

memberId = 0我相信是一個好主意,但要跟蹤是否哪個成員刪除了該消息?或看到那個消息?您可以在表deleted_byseen_by中再添加兩列。使他們成爲文本字段。在seen_by保持所有membersid用逗號seprated這樣在前端你可以採取誰見過與否和同你可能會做deleted_by

替代方式可能是你可以創建一個不同的表值發送消息給多個成員,如果你想要發送一些消息給多個成員,而不是全部而不是一個。

+0

如果我創建deleted_by和seen_by字段,它會讓我的數據庫變慢嗎?比方說,如果我有100萬用戶,並將所有數量的數字存儲到該列中?謝謝 – nodeffect 2014-08-28 04:13:57

+0

它可能會影響速度,但非常標稱。看看數據類型[TEXT和BLOB](http://dev.mysql.com/doc/refman/5.5/en/blob.html) – 2014-08-28 04:32:58

+0

謝謝。我想這是我現在唯一的解決方案。 – nodeffect 2014-08-28 06:22:16

1

嗯,我已經找到了解決方案,通過創建兩個不同的表,如@Mohit Shrivastava建議的替代方法。以下是我的結構。

mailbox: id, sender_id, subject, body 
mailbox_status: id, mailbox_id, recipient_id, is_read, is_deleted, sent_at 

如果有人有更好的想法,糾正我。謝謝!!