【问题标题】:Email Notification Preferences电子邮件通知首选项
【发布时间】:2010-09-03 01:34:42
【问题描述】:

我想允许我的用户选择退出某些电子邮件通知。我正在尝试决定如何在数据库中实现这一点。我已经有一组Users,所有的电子邮件都存储为EmailTemplates,它有一个唯一的密钥。所以我认为一个带有用户/电子邮件的简单 m2m 表会很好用。

但是,我是否应该 (1) 在每次创建用户时使用所有用户/电子邮件组合填充此表(添加新电子邮件时可能会使事情复杂化?)以便默认情况下他们选择加入所有内容,或者应该我 (2) 倒退并说如果没有此用户/电子邮件对的条目是否发送电子邮件?然后首选项表就变成了BlockEmailNotification 表。

想法?

【问题讨论】:

    标签: database-design


    【解决方案1】:

    在您的情况下,我会选择BlockEmailNotification 表。正如您所说,它消除了为每个新电子邮件模板填充表格的开​​销。此外,它的行数也会减少,因为大多数人不会付出额外的努力来选择退出(甚至没有意识到他们可以或知道如何退出),尽管对性能的影响取决于您拥有多少订阅者。

    【讨论】:

      【解决方案2】:

      可能是您最初存储的 EmailNotificationRules (user_id, 'default')。和 (user_id, 'skip mail_1 template') 当 mail_1 默认为 opt_in 时;或 (user_id, 'add mail_1 template') 当 mail_1 默认为 opt_out 时...

      【讨论】:

        【解决方案3】:

        我建议开发一个用户偏好框架,其中“BlockEmail”可以是一个设置,并且该设置可以包含不应发送的 id 集合。在电子邮件生成/准备期间,将查找用户的偏好并继续或中止电子邮件。拥有首选项框架还可以让您在其他地方扩展用户配置功能。

        【讨论】:

        • @Mark - 可能更像 2a。我想说的远不止这些,但是是的,这就是一般的想法。
        【解决方案4】:

        OTOH,如果 Jeff M 是错误的,并且您的特定用户更精明并选择退出所有内容,那么您将拥有比其他方式更多的行。

        在这些类型的问题中,我不确定它是否会对您从哪里开始产生巨大的影响,并且我不确定稍后推翻这个决定是否会是一个巨大的重写。

        【讨论】:

          猜你喜欢
          • 2011-12-16
          • 2015-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多