sql - 帮助删除关系表

标签 sql mysql database-design data-modeling

我有四个表:

  • 用户: id, thread_id
  • threads: id, language_id
  • 帖子:id、user_id、language_id
  • 语言:id

USERS.thread_id 是 THREADS.id 的外键,POSTS.user_id 是 USERS.id 的外键,POSTS.language_id 是 LANGUAGES.id 的外键。

我无法删除用户,因为 POSTS.user_id 会抛出外键约束错误,而且我无法删除帖子,因为我希望所有帖子(和主题)都可以在那里读取,即使用户是已删除。

我该怎么办?

最佳答案

这称为软删除,您可以在 SO 上看到它的工作原理。当您看到“已删除”用户的回答时,他们会显示为灰色。

将用户保留在数据库中,但添加一个标记列 isDeleted,您在删除用户时设置它。

然后(显然)禁止该用户的任何登录并(可选)特别显示它们。

关于sql - 帮助删除关系表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1968202/

相关文章:

php - 获取 mysql 数据并创建其页面

sql - 更多表还是更多数据库?

PostgreSQL:具有多个条件的多个 LEFT JOIN

sql - SQLite 3中空表的奇怪外键行为

mysql - 通过sql命令将相同的内容添加到表列

mysql - 如何更新学生成绩联结表中的行

ruby-on-rails - 如何建模多博客网站?

sql - 生成多个UPDATE语句并执行它们

sql - Access 查询在 "select"模式下运行顺利,在 "make table"模式下失败

php - 在插入 [mysql_errno()] 之前检查预先存在的记录的最快方法