gpt4 book ai didi

mysql - 社交网络 : Delete Post in Database Without Breaking Application

转载 作者:行者123 更新时间:2023-11-30 01:34:37 25 4
gpt4 key购买 nike

简介

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

问题

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

背景

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

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

注意事项

  • 后端在带有 Innodb 引擎的 MySQL 上运行。
  • 数据完整性很重要:
    • 我们想到了外键 - 但就目前情况而言 - 数据库架构并未使用它们。
    • 已删除的帖子/页面不应出现在一般搜索中。
  • 最好能够“撤消”删除操作。删除整个事件页面可能会引起群众的愤怒。

当前解决方案

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

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

案例研究

用户可以搜索并查看好友正在参加的所有事件。

表:用户

user_id
name

表:事件

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

表:Users_events

user_id
event_id

当前解决方案的问题

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

结论

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

最佳答案

你的方法是正确的。

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

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

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

关于mysql - 社交网络 : Delete Post in Database Without Breaking Application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070960/

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