社交网络:删除数据库中的帖子而不破坏应用程序

时间:2013-06-12 16:45:40

标签: mysql social-networking data-integrity

简介

我正在为大学生设计一个社交网站。为了便于审核,一些​​学生将被指定为具有较高能力的主持人,以删除不适当的帖子和审查标记的内容。

问题

当主持人发现不合适的帖子或活动页面时 - 网站应如何在不破坏整个应用程序的情况下隐藏或删除它?

背景

当需要删除事件页面但页面链接到可能有几千个用户时,问题变得越来越困难。已连接的用户应该能够知道事件页面已被删除 - 因此不会产生混淆。

“撤消”删除的能力将是一个巨大的优势。由于学生将成为主持人,我希望超级用户(即网站管理员)能够覆盖主持人的行动。

考虑

  • 使用Innodb引擎在MySQL上运行后端。
  • 数据完整性非常重要:
    • 考虑外键 - 但是目前看来 - 数据库架构没有使用它们。
    • 删除的帖子/页面不应出现在一般搜索中。
  • 最好“撤消”删除操作。删除整个活动页面可能会引起群众的愤怒。

当前解决方案

当发现内容违反使用条款时 - 在数据库中添加特殊标记(即列status更改为1 - >;表示“不合适”)。然后根据此标志隐藏内容。

然而 - 这种策略在RELATIONAL数据库的整个方案中如何运作?特别是在搜索方面?

案例研究

用户可以搜索和查看其朋友正在参加的所有活动。

表:用户

user_id
name

表:事件

event_id
event_name
datetime
status (0 -> okay, 1 -> hide)

表:Users_events

user_id
event_id

当前解决方案的问题

网站应如何过滤掉所有隐藏或标记的内容?是否应该有特殊的覆盖指数?

结论

设计具有高级审核功能的社交网站。如何在保持数据库中的完整关系的同时标记内容并隐藏潜在有害和滥用的帖子/事件页面?如何优化搜索以仅显示已批准(未标记的内容?

1 个答案:

答案 0 :(得分:0)

你有正确的方法。

通过设置状态值并对应用程序进行编码,使其根据状态值的不同行为,可以保持数据的完整性并获得所需的行为。

您的搜索,当您只需要可见条目时,只需要在其中包含“WHERE status = 0”,这样就不会得到隐藏的那些。

一个小改动 - 如果您只是决定是否隐藏,则列的更好名称是隐藏。然后值是有意义的:0是不隐藏,1是隐藏。