1

我目前有一个活动表,它根据活动类型引用其他表。

id | type | user_id | source_id | misc_id | date

类型列告诉我用户执行了什么样的活动(关注、喜欢、成为朋友、状态等),源 id 包含与操作类型相关的表 id。

这对于用户活动流来说效果很好,但唯一的问题是,我不知道如何处理相关表中不再存在的行?

例如,用户创建状态然后将其删除,或者用户与后来从数据库中删除的某人成为朋友。

如果活动是相对于单一类型的,那么我将能够添加一个外键约束,这将删除该行;但由于它是相对于不同的表,我还能怎么做呢?

4

2 回答 2

1

您将不得不采取这些方法中的任何一种。

  1. 当用户删除时,只需在后端进行软删除,将它们标记为已删除,而不是从表中硬删除。您将不得不在此方法中引入一个新列“delete_flag”。

  2. 存档表并在删除时将记录移动到不同的表中。但这将是复杂的编码方式,并且性能可能不如预期。

于 2013-02-12T21:51:25.523 回答
1

这是我的想法。

如果用户可以删除某些内容,您也可以将其记录在您的活动表中。

如果您想隐藏该活动,您可以添加ReversedOn字段并使用相关日期对其进行更新。然后你只需要过滤掉不存在的活动。

如果这不会导致任何用户体验问题,那么您可以顺其自然。

于 2013-02-12T21:43:17.373 回答