Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
时事通讯软件数据库解决方案-MySQL和PHP_Php_Mysql_Database Design - Fatal编程技术网

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

时事通讯软件数据库解决方案-MySQL和PHP,php,mysql,database-design,Php,Mysql,Database Design,我最近构建了一个新闻稿应用程序。它允许用户订阅一些不同类别的时事通讯。我设计了一些如下的表格 类别表:id cname说明 订户表:id sname类别\u id 通讯表:id名称内容 类别\通讯表:id通讯\ id类别\ id 经理创建时事通讯时,将选择某些类别。这是通过category_通讯表完成的,类似于 类别\通讯表:id通讯\ id类别\ id 直到现在一切都很顺利。但问题是,如何将时事通讯发送给选定类别的订户?我有一个解决方案,但我不知道这是否可行 我设计了另一个名为newslett

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

类别表:id cname说明

订户表:id sname类别\u id

通讯表:id名称内容

类别\通讯表:id通讯\ id类别\ id

经理创建时事通讯时,将选择某些类别。这是通过category_通讯表完成的,类似于

类别\通讯表:id通讯\ id类别\ id

直到现在一切都很顺利。但问题是,如何将时事通讯发送给选定类别的订户?我有一个解决方案,但我不知道这是否可行

我设计了另一个名为newsletter_queue的表,当manager创建一个newsletter并选择一些类别时,例如cakephp类别,然后系统将选择cakephp类别中的所有订阅者,并将电子邮件字段、订阅者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_新闻稿中的附加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]
您需要另一个用于消息的表,并且您应该能够很好地处理它。新闻稿队列应至少具有id |订户id |消息id |添加的|时间戳|状态。