如果我从Gmail向其他Gmail用户发送邮件,是否会为每个用户存储单个副本或多个邮件副本?
如果发件人删除了他的电子邮件,它会保存单一副本吗?
我正在为这种应用程序创建数据库架构。
答案 0 :(得分:2)
如果我从Gmail向其他Gmail用户发送邮件,是否会为每个用户存储单个副本或多个邮件副本?
我们不知道。这没关系。
如果发件人删除了他的电子邮件怎么办?
您不能指望电子邮件会从收件人的收件箱中消失,因为发件人已将其删除。这不是电子邮件的工作方式。
对于通用消息传递应用程序,如果没有其他域(您控制所有消息),则可以根据需要实现此类行为。但是,您的应用程序的某些功能要求可能会使其变得非常困难。例如,对于一对一的消息传递,您可以遵循Sunil的回答。但是,如果邮件有5个收件人怎么办?你在消息表上放了多少个标志列?如果邮件有200个收件人怎么办?常识规定,每个收件人必须至少复制某些信息,因此屏蔽了发件人的活动(删除等等)。
答案 1 :(得分:1)
Gmail是如何做到的?谁知道?谁在乎?问题是什么符合您的要求。
如果要构建某种消息系统,其中所有消息都存在于单个数据库中,那么只需拥有每条消息的一个副本就可以了。您有一个或多个单独的表来将每条消息链接到相关用户。就像你有一个包含消息文本的“消息”表,一个包含每个用户信息的“用户”表,以及一个将用户链接到消息的“用户消息”表,其中包含用户ID,消息ID,字段到确定这是发件人还是接收者,也许是其他数据。如果用户从其邮箱中删除邮件,则删除用户邮件记录。也许当删除给定邮件的最后一条用户消息记录时,您可以删除该消息。
如果有理由保留历史记录,则可能无法真正删除记录,而是将其标记为已删除。