0

介绍

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

问题

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

背景

当需要删除事件页面但该页面可能链接到数千名用户时,这个问题变得越来越困难。连接的用户应该能够知道活动页面已被删除 - 这样就不会有混淆。

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

注意事项

  • 后端使用 Innodb 引擎在 MySQL 上运行。
  • 数据完整性很重要:
    • 想到外键 - 但就目前而言 - 数据库模式不使用它们。
    • 已删除的帖子/页面不应出现在一般搜索中。
  • “撤消”删除操作的能力是可取的。删除整个活动页面可能会引起群众的愤怒。

当前解决方案

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

但是 - 这种策略如何在关系数据库的整个方案中起作用?尤其是在搜索方面?

案例分析

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

表:用户

user_id
name

表:事件

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

表:Users_events

user_id
event_id

当前解决方案的问题

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

结论

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

4

1 回答 1

0

你有正确的方法。

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

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

一个小的变化 - 如果您只是确定是否隐藏,则该列的更好名称是隐藏。那么这些值是有意义的:0 是不隐藏,1 是隐藏。

于 2013-06-12T18:20:41.970 回答