Physical Deletion

以下删除逻辑,可以有效避免冗余数据。

删除新草稿

帖子新草稿

提示

日志表 post_logs > post_id 字段值为空的记录,代表新草稿,新草稿是指从未正式发表过的草稿。

  • 1、删除扩展内容:查询日志表字段 post_logs > extends_json 扩展情况,无扩展则跳过,有扩展则查询关联表 extend_linkeds 是否有关联。
    • 1.1、无关联,代表是该草稿创建的扩展内容,执行删除。
      • 1.1.1、查询该扩展内容是否有附属文件
        • 1.1.1.1、检查扩展内容表 extends > text_files 字段,有文件则记录下文件 ID 和文件类型。
        • 1.1.1.2、检查文件表 files 是否有遗漏,查询条件 table_type = 10+table_name = extends+table_field = id+table_id = {extends > id},查询到则记录下文件 ID 和文件类型。
        • 1.1.1.3、将查询到的文件 ID,凭文件类型转交给关联插件,由插件删除存储服务商的物理文件。
        • 1.1.1.4、删除 file_appends 表里文件数据记录。
        • 1.1.1.4、删除 files 表里文件数据记录。
      • 1.1.2、检查扩展内容表 titledesc_primarydesc_secondarybtn_name 四个字段是否有多语言内容 languages,有则删除,无则跳过。
      • 1.1.3、删除 extend_linkeds 表里的关联记录。
      • 1.1.4、删除 extends 扩展内容记录。
    • 1.2、有关联,代表还有其他内容在使用该扩展内容,跳过,不删除。
  • 2、删除附属文件:查询日志表字段 post_logs > files_json 文件情况,无文件则跳过,有文件则继续。
    • 2.1、凭文件类型将文件 ID 转交给关联插件,由插件删除存储服务商的物理文件。
    • 2.2、删除 file_appends 表里文件数据记录。
    • 2.3、删除 files 表里文件数据记录。
  • 3、删除帖子 post_logs 表该条帖子记录。

评论新草稿

提示

日志表 comment_logs > comment_id 字段值为空的记录,代表新草稿,新草稿是指从未正式发表过的草稿。

  • 1、删除扩展内容:查询日志表字段 comment_logs > extends_json 扩展情况,无扩展则跳过,有扩展则查询关联表 extend_linkeds 是否有关联。
    • 1.1、无关联,代表是该草稿创建的扩展内容,执行删除。
      • 1.1.1、查询该扩展内容是否有附属文件
        • 1.1.1.1、检查扩展内容表 extends > text_files 字段,有文件则记录下文件 ID 和文件类型。
        • 1.1.1.2、检查文件表 files 是否有遗漏,查询条件 table_type = 10+table_name = extends+table_field = id+table_id = {extends > id},查询到则记录下文件 ID 和文件类型。
        • 1.1.1.3、将查询到的文件 ID,凭文件类型转交给关联插件,由插件删除存储服务商的物理文件。
        • 1.1.1.4、删除 file_appends 表里文件数据记录。
        • 1.1.1.4、删除 files 表里文件数据记录。
      • 1.1.2、检查扩展内容表 titledesc_primarydesc_secondarybtn_name 四个字段是否有多语言内容 languages,有则删除,无则跳过。
      • 1.1.3、删除 extend_linkeds 表里的关联记录。
      • 1.1.4、删除 extends 扩展内容记录。
    • 1.2、有关联,代表还有其他内容在使用该扩展内容,跳过,不删除。
  • 2、删除附属文件:查询日志表字段 comment_logs > files_json 文件情况,无文件则跳过,有文件则继续。
    • 2.1、凭文件类型将文件 ID 转交给关联插件,由插件删除存储服务商的物理文件。
    • 2.2、删除 file_appends 表里文件数据记录。
    • 2.3、删除 files 表里文件数据记录。
  • 3、删除评论 comment_logs 表该条帖子记录。

删除编辑草稿

帖子编辑草稿

提示

日志表 post_logs > post_id 字段有值的记录,post_id 值为帖子主表真实 ID,表示为编辑主表里现有内容的草稿;对应是 post_logs > state = 1 或 2 或 4 三种状态的未正式发表的草稿。

  • 1、删除扩展内容:查询日志表字段 post_logs > extends_json 扩展情况,无扩展则跳过,有扩展则查询关联表 extend_linkeds 是否有关联。
    • 1.1、无关联,代表是该草稿创建的扩展内容,执行删除。
      • 1.1.1、查询该扩展内容是否有附属文件
        • 1.1.1.1、检查扩展内容表 extends > text_files 字段,有文件则记录下文件 ID 和文件类型。
        • 1.1.1.2、检查文件表 files 是否有遗漏,查询条件 table_type = 10+table_name = extends+table_field = id+table_id = {extends > id},查询到则记录下文件 ID 和文件类型。
        • 1.1.1.3、将查询到的文件 ID,凭文件类型转交给关联插件,由插件删除存储服务商的物理文件。
        • 1.1.1.4、删除 file_appends 表里文件数据记录。
        • 1.1.1.4、删除 files 表里文件数据记录。
      • 1.1.2、检查扩展内容表 titledesc_primarydesc_secondarybtn_name 四个字段是否有多语言内容 languages,有则删除,无则跳过。
      • 1.1.3、删除 extend_linkeds 表里的关联记录。
      • 1.1.4、删除 extends 扩展内容记录。
    • 1.2、有关联,代表还有其他内容在使用该扩展内容,跳过,不删除。
  • 2、删除附属文件:查询日志表字段 post_logs > files_json 文件情况,无文件则跳过,有文件则继续。
    • 2.1、查询主表是否在使用 posts > more_json > files,在使用则跳过,没有使用则继续。
    • 2.2、查询其他 post_logs > state = 3 的日志是否在使用 post_logs > files_json,在使用则跳过,没有使用则继续。
    • 2.3、凭文件类型将文件 ID 转交给关联插件,由插件删除存储服务商的物理文件。
    • 2.4、删除 file_appends 表里文件数据记录。
    • 2.5、删除 files 表里文件数据记录。
  • 3、删除帖子 post_logs 表该条帖子记录。

评论编辑草稿

提示

日志表 comment_logs > comment_id 字段有值的记录,comment_id 值为评论主表真实 ID,表示为编辑主表里现有内容的草稿;对应是 comment_logs > state = 1 或 2 或 4 三种状态的未正式发表的草稿。

  • 1、删除扩展内容:查询日志表字段 comment_logs > extends_json 扩展情况,无扩展则跳过,有扩展则查询关联表 extend_linkeds 是否有关联。
    • 1.1、无关联,代表是该草稿创建的扩展内容,执行删除。
      • 1.1.1、查询该扩展内容是否有附属文件
        • 1.1.1.1、检查扩展内容表 extends > text_files 字段,有文件则记录下文件 ID 和文件类型。
        • 1.1.1.2、检查文件表 files 是否有遗漏,查询条件 table_type = 10+table_name = extends+table_field = id+table_id = {extends > id},查询到则记录下文件 ID 和文件类型。
        • 1.1.1.3、将查询到的文件 ID,凭文件类型转交给关联插件,由插件删除存储服务商的物理文件。
        • 1.1.1.4、删除 file_appends 表里文件数据记录。
        • 1.1.1.4、删除 files 表里文件数据记录。
      • 1.1.2、检查扩展内容表 titledesc_primarydesc_secondarybtn_name 四个字段是否有多语言内容 languages,有则删除,无则跳过。
      • 1.1.3、删除 extend_linkeds 表里的关联记录。
      • 1.1.4、删除 extends 扩展内容记录。
    • 1.2、有关联,代表还有其他内容在使用该扩展内容,跳过,不删除。
  • 2、删除附属文件:查询日志表字段 comment_logs > files_json 文件情况,无文件则跳过,有文件则继续。
    • 2.1、查询主表是否在使用 comments > more_json > files,在使用则跳过,没有使用则继续。
    • 2.2、查询其他 comment_logs > state = 3 的日志是否在使用 comment_logs > files_json,在使用则跳过,没有使用则继续。
    • 2.3、凭文件类型将文件 ID 转交给关联插件,由插件删除存储服务商的物理文件。
    • 2.4、删除 file_appends 表里文件数据记录。
    • 2.5、删除 files 表里文件数据记录。
  • 3、删除评论 comment_logs 表该条帖子记录。

删除历史日志

帖子日志

提示

日志表 post_logs > state = 3 代表为历史草稿日志,已经正式发表到主表的存档记录。

  • 1、删除扩展内容:查询日志表字段 post_logs > extends_json 扩展情况,无扩展则跳过,有扩展则查询关联表 extend_linkeds 是否有关联。
    • 1.1、无关联,代表不再使用,执行删除。
      • 1.1.1、查询该扩展内容是否有附属文件
        • 1.1.1.1、检查扩展内容表 extends > text_files 字段,有文件则记录下文件 ID 和文件类型。
        • 1.1.1.2、检查文件表 files 是否有遗漏,查询条件 table_type = 10+table_name = extends+table_field = id+table_id = {extends > id},查询到则记录下文件 ID 和文件类型。
        • 1.1.1.3、将查询到的文件 ID,凭文件类型转交给关联插件,由插件删除存储服务商的物理文件。
        • 1.1.1.4、删除 file_appends 表里文件数据记录。
        • 1.1.1.4、删除 files 表里文件数据记录。
      • 1.1.2、检查扩展内容表 titledesc_primarydesc_secondarybtn_name 四个字段是否有多语言内容 languages,有则删除,无则跳过。
      • 1.1.3、删除 extend_linkeds 表里的关联记录。
      • 1.1.4、删除 extends 扩展内容记录。
    • 1.2、有关联,代表还在使用,跳过,不删除。
  • 2、删除附属文件:查询日志表字段 post_logs > files_json 文件情况,无文件则跳过,有文件则继续。
    • 2.1、查询主表是否在使用 posts > more_json > files,在使用则跳过,没有使用则继续。
    • 2.2、查询其他 post_logs > state = 3 的日志是否在使用 post_logs > files_json,在使用则跳过,没有使用则继续。
    • 2.3、凭文件类型将文件 ID 转交给关联插件,由插件删除存储服务商的物理文件。
    • 2.4、删除 file_appends 表里文件数据记录。
    • 2.5、删除 files 表里文件数据记录。
  • 3、删除帖子 post_logs 表该条帖子记录。

评论日志

提示

日志表 comment_logs > state = 3 代表为历史草稿日志,已经正式发表到主表的存档记录。

  • 1、删除扩展内容:查询日志表字段 comment_logs > extends_json 扩展情况,无扩展则跳过,有扩展则查询关联表 extend_linkeds 是否有关联。
    • 1.1、无关联,代表不再使用,执行删除。
      • 1.1.1、查询该扩展内容是否有附属文件
        • 1.1.1.1、检查扩展内容表 extends > text_files 字段,有文件则记录下文件 ID 和文件类型。
        • 1.1.1.2、检查文件表 files 是否有遗漏,查询条件 table_type = 10+table_name = extends+table_field = id+table_id = {extends > id},查询到则记录下文件 ID 和文件类型。
        • 1.1.1.3、将查询到的文件 ID,凭文件类型转交给关联插件,由插件删除存储服务商的物理文件。
        • 1.1.1.4、删除 file_appends 表里文件数据记录。
        • 1.1.1.4、删除 files 表里文件数据记录。
      • 1.1.2、检查扩展内容表 titledesc_primarydesc_secondarybtn_name 四个字段是否有多语言内容 languages,有则删除,无则跳过。
      • 1.1.3、删除 extend_linkeds 表里的关联记录。
      • 1.1.4、删除 extends 扩展内容记录。
    • 1.2、有关联,代表还在使用,跳过,不删除。
  • 2、删除附属文件:查询日志表字段 comment_logs > files_json 文件情况,无文件则跳过,有文件则继续。
    • 2.1、查询主表是否在使用 posts > more_json > files,在使用则跳过,没有使用则继续。
    • 2.2、查询其他 comment_logs > state = 3 的日志是否在使用 comment_logs > files_json,在使用则跳过,没有使用则继续。
    • 2.3、凭文件类型将文件 ID 转交给关联插件,由插件删除存储服务商的物理文件。
    • 2.4、删除 file_appends 表里文件数据记录。
    • 2.5、删除 files 表里文件数据记录。
  • 3、删除评论 comment_logs 表该条帖子记录。

删除正式内容

帖子

提示

正式发表到帖子主表 posts 的内容。

  • 1、删除扩展内容:先凭 posts > id 查询出所有关联的扩展内容;再凭该帖子日志表 post_logs > extends_json 查询出所有扩展内容;然后查询关联表 extend_linkeds 是否为唯一关联。
    • 1.1、唯一关联(只有该帖子使用了该扩展)
      • 1.1.1、查询该扩展内容是否有附属文件
        • 1.1.1.1、检查扩展内容表 extends > text_files 字段,有文件则记录下文件 ID 和文件类型。
        • 1.1.1.2、检查文件表 files 是否有遗漏,查询条件 table_type = 10+table_name = extends+table_field = id+table_id = {extends > id},查询到则记录下文件 ID 和文件类型。
        • 1.1.1.3、将查询到的文件 ID,凭文件类型转交给关联插件,由插件删除存储服务商的物理文件。
        • 1.1.1.4、删除 files + file_appends 两张表里文件数据记录。
      • 1.1.2、检查扩展内容表 titledesc_primarydesc_secondarybtn_name 四个字段是否有多语言内容 languages,有则删除,无则跳过。
      • 1.1.3、删除 extend_linkeds 表里的关联记录。
      • 1.1.4、删除 extends 扩展内容记录。
    • 1.2、不是唯一关联(还有其他内容关联了该扩展内容),只删除 extend_linkeds 关联记录。
  • 2、删除附属文件:读取主表 posts > more_json > files 文件列表,加上该帖子所有日志 post_logs > files_json 文件列表,执行批量删除。
    • 2.1、凭文件类型将文件 ID 转交给关联插件,由插件删除存储服务商的物理文件。
    • 2.2、删除 file_appends 表里文件数据记录。
    • 2.3、删除 files 表里文件数据记录。
  • 3、删除解析关联
    • 3.1、删除艾特 mentions 记录。
    • 3.2、删除话题关联 hashtag_linkeds 记录,对应话题 hashtags > post_count 字段值 -1
    • 3.3、删除超链接 domain_links,对应域名 domains > post_count 字段值 -1
  • 4、删除帖子附属表 allow_btn_namecomment_btn_namemember_list_name 三个字段在 languages 多语言表内容。
  • 5、删除统计数值
    • 5.1、配置表 groups > post_count 字段值 -1
    • 5.2、配置表 post_counts 键值 -1
  • 6、删除关联表 post_appends + post_allows + post_logs 表里该 post_id 所有记录。
  • 7、删除帖子 posts 表该条帖子记录。

评论

提示

正式发表到帖子主表 comments 的内容。

  • 1、删除扩展内容:先凭 comments > id 查询出所有关联的扩展内容;再凭该帖子日志表 comment_logs > extends_json 查询出所有扩展内容;然后查询关联表 extend_linkeds 是否为唯一关联。
    • 1.1、唯一关联(只有该帖子使用了该扩展)
      • 1.1.1、查询该扩展内容是否有附属文件
        • 1.1.1.1、检查扩展内容表 extends > text_files 字段,有文件则记录下文件 ID 和文件类型。
        • 1.1.1.2、检查文件表 files 是否有遗漏,查询条件 table_type = 10+table_name = extends+table_field = id+table_id = {extends > id},查询到则记录下文件 ID 和文件类型。
        • 1.1.1.3、将查询到的文件 ID,凭文件类型转交给关联插件,由插件删除存储服务商的物理文件。
        • 1.1.1.4、删除 files + file_appends 两张表里文件数据记录。
      • 1.1.2、检查扩展内容表 titledesc_primarydesc_secondarybtn_name 四个字段是否有多语言内容 languages,有则删除,无则跳过。
      • 1.1.3、删除 extend_linkeds 表里的关联记录。
      • 1.1.4、删除 extends 扩展内容记录。
    • 1.2、不是唯一关联(还有其他内容关联了该扩展内容),只删除 extend_linkeds 关联记录。
  • 2、删除附属文件:读取主表 comments > more_json > files 文件列表,加上该评论所有日志 comment_logs > files_json 文件列表,执行批量删除。
    • 2.1、凭文件类型将文件 ID 转交给关联插件,由插件删除存储服务商的物理文件。
    • 2.2、删除 file_appends 表里文件数据记录。
    • 2.3、删除 files 表里文件数据记录。
  • 3、删除解析关联
    • 3.1、删除艾特 mentions 记录。
    • 3.2、删除话题关联 hashtag_linkeds 记录,对应话题 hashtags > comment_count 字段值 -1
    • 3.3、删除超链接 domain_links,对应域名 domains > comment_count 字段值 -1
  • 4、删除统计数值
    • 4.1、所属父级评论 comments > comment_count 字段值 -1
    • 4.2、拿当前评论的 like_count 字段数值减父级评论 comment_like_count 字段值
    • 4.3、所属帖子 posts > comment_count 字段值 -1
    • 4.4、拿当前评论的 like_count 字段数值减所属帖子 posts > comment_like_count 字段值
    • 4.5、配置表 comment_counts 键值 -1
  • 5、删除附属表 comment_appends + comment_logs 表里该 comment_id 所有记录。
  • 6、删除评论 comments 表该条帖子记录。