gpt4 book ai didi

php - 对数据库中的用户 'timeline' 事件进行建模的最佳方法

转载 作者:行者123 更新时间:2023-11-30 00:44:24 26 4
gpt4 key购买 nike

我目前正在构建一个基于网络的迷你社交网络。与 Facebook 一样,每个用户都有一个发布最近事件的时间表。这些事件包括状态更新、在页面上发帖、添加新 friend 和喜欢页面。

它们在数据库中使用这些具有各自列的表单独建模:

用户

  • 用户 ID
  • 名字
  • 姓氏

状态

  • status_id
  • 用户 ID
  • 内容
  • 时间

发布

  • 用户 ID
  • page_id
  • 内容
  • 时间

friend

  • friend 1
  • friend 2
  • 状态
  • 时间

喜欢

  • page_id
  • 用户 ID
  • 时间

问题是,我需要按时间倒序显示所有这些事件。您可能会注意到,这些表中有一个时间列,但是如果这些表具有不同的列,我将如何查询所有这些事件?知道我将如何执行这个吗? TIA!

最佳答案

您可以尝试创建一个使用 @user_id 作为参数的存储过程,并在其中包含以下查询:

SELECT status_id AS activity_id, time, "StatusUpdate" AS activity_desc 
FROM STATUS
WHERE user_id = @user_id
UNION
SELECT page_id AS activity_id, time, "LikePage" AS activity_desc
FROM LIKE
WHERE user_id = @user_id
.
.
--Here specify selections from other tables as well
ORDER BY time DESC

我希望这能为您提供指导如何去做。让我知道这是否是您正在寻找的内容。

附录:

上面的查询返回按时间顺序排序的不同类型事件的列表。现在,在业务逻辑层中获得此结果后,您可以通过调用针对特定事件类型的存储过程,根据其 ACTIVITY_DESC 字段获取特定事件的其他详细信息。存储过程可能如下所示:

CREATE PROCEDURE GetStatus @status_id INT
AS
SELECT * FROM STATUS
WHERE status_id = @status_id

明智地获取事件详细信息也有助于提高性能,因为仅当需要在时间线页面上显示事件详细信息时才会获取事件详细信息。

关于php - 对数据库中的用户 'timeline' 事件进行建模的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510264/

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