我正在构建一个构建网站范围和用户特定活动供稿的网站。我希望您能看到下面的结构,并分享您对我的解决方案是否正在完成工作的见解。由于我有多种类型的用户现在没有存储在一个主表中,因此这很复杂。这是因为用户的类型非常不同,并且为用户元数据构建多个不同的表我认为是太麻烦了。此外,可以对多种类型的内容进行操作,以及多种类型的活动(跟随,提交,评论等)。
构建站点范围的活动源很简单,因为所有内容都记录到主提要表中,我只是构建一个列表。我在MySQL中有一个主提要表,简单的日志:
(这只是一个很大的参考表,它指向生成每个Feed条目的相应表格的Feed的脚本。)
在生成特定于用户的Feed时,我正在尝试找出一种方法来将关系表与feed表连接,并使用它来解析结果。我有一个关系表,由“跟随”关系组成,类似于提要表。虽然b / c只允许一种类型的用户跟随其他内容类型/用户,但它更简单。
第2栏和第2栏feed和follow表中的3是相同的,我一直在尝试使用各种JOIN方法来匹配它们,然后通过用户拥有的下表中的任何关系来限制它们。这是不太成功的。
我使用的基本查询是:
SELECT *
FROM (`feed` as fe) LEFT OUTER JOIN `follow` as fo
ON `fe`.`feed_target_type` = `fo`.`follow_e_type`
AND fo.follow_e_id = fe.feed_target_id
WHERE `fo`.`follow_u_id` = 1 OR fe.feed_e_id = 1
AND fe.feed_e_type = 'user'
ORDER BY `fe`.`feed_timestamp` desc LIMIT 10
此查询还会尝试抓取用户在其中创建的任何内容(在Feed表中记录了哪些数据),默认情况下,该内容实际上是跟随的。
这个查询似乎有效,但我花了一些时间来实现它,我很确定我错过了一个更优雅的解决方案。有什么想法吗?
答案 0 :(得分:0)
我使用活动Feed创建的第一个网站有一个通知表,其中记录了活动,然后从中提取了朋友的操作。然而,几个月之后,这就达到了数百万条记录。
我正在编程的解决方案现在从单独的表中提取最新的“朋友”活动,然后按日期排序。查询是在家里,如果感兴趣,可以稍后发布示例吗?