繁体   English   中英

新闻通讯软件数据库解决方案-MySQL和PHP

[英]Newsletter Software Database Solutions - MySQL & PHP

我最近建立了一个通讯应用程序。 它允许用户订阅一些不同类别的新闻通讯。 我在下面设计了一些类似的表格。

类别表:id cname说明...

订户表:id sname category_id ...

通讯表:id nname内容...

category_newsletter表:id newsletter_id category_id

经理创建新闻通讯时,将选择某些类别。 这是通过category_newsletter表完成的,例如

category_newsletter表:id newsletter_id category_id

到目前为止一切都很好。 但是问题是,如何将新闻通讯发送给选定类别的订户? 我有解决方案,但我不知道这样是否可以。

我设计了另一个名为“ newsletter_queue”的表,当管理员创建新闻稿并选择某些类别(例如“ cakephp类别”)时,系统将选择“ cakephp类别”中的所有订户,并插入“ 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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM