【发布时间】:2015-01-31 15:42:07
【问题描述】:
我正在开发一种定期向注册客户发送电子邮件的产品,我想从这些电子邮件中实现某种取消订阅机制。
大约有 5 种类型的电子邮件和一个包含所有用户的 User MySql 表。新用户默认订阅所有邮件类型,并且可以单独取消订阅每个邮件类型。
我的问题是我应该如何将这些取消订阅存储到数据库,同时保持高性能和可扩展性,而不会使事情过于复杂。这里有几个选项,每个选项都有自己的优点和缺点:
- 在
User表中为每个报告类型添加一个布尔列,默认值为 true。 - 创建一个与
User表一对一 关系的新Unsubscription表。每种电子邮件类型都会得到一列,每个用户都会得到一行。 - 创建一个与
User表具有多对一 关系的新Unsubscription表。每个退订请求都会在表格上创建一个新行。
是否有存储退订信息的最佳做法?什么是数据库设计问题?
【问题讨论】:
-
为什么需要存储退订?你不能从用户那里删除适当的订阅吗?
-
@Anentropic 默认情况下,每个用户都订阅了所有电子邮件类型,所以我认为只保存取消订阅更有意义。此外,在添加电子邮件类型时,无需更改任何数据。
标签: mysql django database-design user-accounts