gpt4 book ai didi

php - 时事通讯软件数据库解决方案 - MySQL 和 PHP

转载 作者:行者123 更新时间:2023-11-30 23:36:02 25 4
gpt4 key购买 nike

我最近构建了一个时事通讯应用程序。它允许用户订阅一些不同类别的时事通讯。我设计了一些如下所示的表格。

category Table: id cname description...

subscriber Table: id sname category_id...

newsletter Table: id nname content...

category_newsletter Table: id newsletter_id category_id

当经理创建时事通讯时,将选择一些类别。这是由 category_newsletter 表完成的,例如,

category_newsletter Table: id newsletter_id category_id

目前一切顺利。但问题是,如何将时事通讯发送给所选类别的订阅者?我有一个解决方案,但我不知道这是否可行。

我设计了另一个名为“newsletter_queue”的表,当经理创建一个时事通讯并选择一些类别,例如“cakephp category”,然后系统将选择“cakephp category”中的所有订阅者并插入“email”字段,“subscriber_id” "提交到 "newsletter_queue"表,以便系统有足够的能力处理电子邮件发送过程,即使经理暂停发送。

那么,有人对时事通讯核心数据库有一些经验吗?说说它。提前致谢!

最佳答案

Category Table: 
CategoryId
Name
Description...

Subscriber Table:
SubscriberId
Name

Subscription Table:
SubscriberId
CategoryId

Newsletter Table:
NewsletterId
Name
Content...

CategoryNewsletter Table:
NewsletterId
CategoryId

NewsletterQueue Table:
SubscriberId
NewsletterId
Sent...

您不需要在 category_newsletter 中添加额外的 id 列。您可以创建一个结合了 NewsletterId 和 CategoryId 的主键,这应该足够了。

订阅者表也应该拆分成两个表。您应该有一个包含订阅者 ID 和名称的订阅者表。订阅的第二个表是订阅者的 ID 和类别的 ID,这样一个用户可以订阅多个类别,如您所述。

在选择向谁发送时事通讯时,您还需要确保获得不同的电子邮件地址,因为用户注册多个类别并且将时事通讯分配给多个类别似乎是可能的。

如果用户关注类别 A 和 B,并且经理为类别 A 和 B 创建新闻通讯,如果您只选择订阅所选类别的所有用户,它将返回用户两次,一次针对他们关注的每个类别。

Insert into NewsletterQueue (SubscriberId, NewsletterId)
Select Distinct s.SubscriberId, cn.NewsletterId
From SubscriptionTable s
INNER JOIN CategoryNewsletter cn ON s.CategoryId = cn.CategoryId
WHERE cn.NewsletterId = [x]

关于php - 时事通讯软件数据库解决方案 - MySQL 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7290574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com