2014-08-28 42 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 

如果有人有更好的想法,纠正我。谢谢!!

相关问题