我正在寻找有关如何设计摘要电子邮件功能的想法。我不关心实际的业务代码;相反,我想重点关注它的要旨。
让我们用一个已知的例子来解决这个问题:文章。以下是一些重要功能的概述:
我一直在考虑以下方面:
或者您能想到实现此功能的其他方法吗?
我很想学习您的见识。
答案 0 :(得分:1)
您可以制作一个附加表,其中包含每个用户的摘要订阅信息。由于邮件是一个单独的逻辑模块,因此这种方法可以使数据库设计更简洁,更通用。除此之外,附加表还提供了将来轻松扩展有关摘要订阅的存储数据的功能。例如:
借助此表的帮助,您可以轻松管理数据。例如,您可以选择每日摘要的所有收件人:
SELECT *
FROM digest_subscription
WHERE interval_type = 'daily'
AND last_date_distribution <= NOW()
或选择每周摘要的所有收件人
SELECT *
FROM digest_subscription
WHERE interval_type = 'weekly'
AND last_date_distribution <= NOW() - INTERVAL 7 DAY
按时间间隔类型进行条件处理,并根据规则“等于或小于”比较上次日期分配,可以避免电子邮件发送不及时的问题(例如服务器上的技术故障等)
此外,您可以使用上次数据分发的帮助信息来制作正确的文章列表。最后一次数据分配的使用可以避免间隔更改的问题。例如:
SELECT *
FROM articles
WHERE created_at >= <the last date distribution of the user>
当然,您不能避免创建日期更新的问题。但是您应该最小化发生这种情况的原因。例如,您的代码可以更新修改日期,但您的代码不应修改创建日期。