<分区>
我正在开发一个群发电子邮件应用程序,理论上可以每周发送许多事件,并且每个事件都发送给数千个联系人。
我设计了两种可能的方式来存储这些事件:
- 有一个
app_campaigns
表和一个app_campaign_emails
表,为发送的每封电子邮件创建一行,同时引用父事件和实际联系人。app_contacts
表将存储实际的电子邮件地址和其他数据。 - 或者,将所有联系人 ID 存储在
app_campaigns
表中,以逗号分隔的字段中。这样,就无需为每个事件创建多个记录。
什么是最好的方法?在这里,性能和保持数据库小是一个优先事项,因为一些事件可以快速增加数据库的大小(有多个客户每周发送多个事件,每个事件都有可能很大的联系人列表)。
但它还需要跟踪打开和点击,我正在考虑通过仅在条目发生时记录条目来做到这一点。
一些应用程序,例如 Sendy选择第二种方法,避免一次性创建数千行。但是,它可能会变得有点困惑,因为使用逗号分隔的 Id 字段进行搜索和查询比仅查询数据库更难。
更复杂的是,应该有一种方法可以在类似 CRM 的界面中显示发送给联系人的每封电子邮件。因此,通过使用第二种方法,这意味着在 app_campaigns
表中进行全文搜索以构建适当的列表。
有什么想法吗?