| | 1 | 一,需求确认与分析 |
| | 2 | 1.确定需求合理性; |
| | 3 | 检查是否存在同一个版块合并到不同版块,目标版块与源版块一样之类的基本逻辑错误; |
| | 4 | 2.父类版块无法移动或合并到子类版块; |
| | 5 | 在系统的数据库结构及系统的设计上,是不允许这样的操作,可以用替代办法,新建同名版块,然后再进行合并操作; |
| | 6 | 3.删除或移动版块是否包含子类以下的版块; |
| | 7 | 在删除、合并、移动版块的时候,往往出现源版块存在子版,且子版以下还有子版的情况,在操作之前,先要确定一共有基层,确定包含所有需要迁移的版块; |
| | 8 | 4.注意虚拟子版的储存逻辑; |
| | 9 | 虚拟子版跟正常版块在数据库的存储逻辑有所差异,需要注意版块操作执行的逻辑; |
| | 10 | 5.确认合并以后所在的父版; |
| | 11 | 确认好合并后的版块是否已经存在的版块,否则需要新建,且确认新建版块的位置; |
| | 12 | 6.精华帖与置顶帖是否需要保留; |
| | 13 | 在删除版块过程中,如果没有清理相应的置顶帖,精华帖,会导致前台报错,没有找到对应的帖子; |
| | 14 | 二,开发流程与设计 |
| | 15 | 1.删除 |
| | 16 | 1)删除帖子并非真正删除数据,把版块对应的bbs7_forum的数据【deleted改成1,parentid改成 0】;[[BR]] |
| | 17 | 2)把删除版块对应帖子数据的【fid改成1,status改成-1】,从bbs7_topic_x转移到bbs7_topic_1表中;[[BR]] |
| | 18 | 3)把删除帖子对应的bbs7_topic_forum_x映射表数据,【fid改成1】;[[BR]] |
| | 19 | 4) 在bbs7_top表中删除对应的置顶帖;[[BR]] |
| | 20 | 5) 对bbs7_forum里面的访问数、发帖数、回帖数等统计数据进行【清0】;[[BR]] |
| | 21 | 2合并 |
| | 22 | 1)更新源版块对应的bbs7_pick表成目标版块的【fid继承关系】;[[BR]] |
| | 23 | 2)在bbs7_top表中删除对应的置顶帖;[[BR]] |
| | 24 | 3)若源版块是【正常子版】,则让其帖子数据的fid改成目标版块的fid,再迁移到目标版块帖子所在的bbs7_topic_x;[[BR]] |
| | 25 | 4)若源版块是【虚拟子版】,则让其帖子数据的subforumid改成目标版块的fid,fid改成目标版块的父类fid,再迁移到目标版块帖子所在的bbs7_topic_x;[[BR]] |
| | 26 | 5)对bbs7_forum里面的访问数、发帖数、回帖数等统计数据进行增加;[[BR]] |
| | 27 | 6)把源版块帖子对应的bbs7_topic_forum_x映射表数据,fid改成新版块的fid,(目标版块是虚拟子版,fid改成其父类fid;目标版块是正常子版,fid改成其fid);[[BR]] |
| | 28 | 三,sql实现与优化 |
| | 29 | 1)备份数据源,写出备份脚本、回滚数据脚本和清空备份的脚本;[[BR]] |
| | 30 | 2) 根据需求文档,把需要操作的【数据源】,存到【临时表】,以便进行并表查询还有条件查询;[[BR]] |
| | 31 | 3) 有【批量思想】,在一些负责的操作当中,需要的表比较多,必须尽量把数据统一操作,避免重复,[[BR]]例如,在迁移topic数据的时候,把所有源版块帖子数据存到一个临时表,然后再统一进行相应的update操作;[[BR]] |
| | 32 | 4)避免有【循环思想】,不能循环对查询结果进行操作;[[BR]] |
| | 33 | 5)多次实践尝试,优化sql语句的执行速度,避免多重的内连子查询;[[BR]] |
| | 34 | 6)活用临时表作为批量操作的容器;[[BR]] |
| | 35 | 7)合理为临时表添加【主键】及【索引】,增加链接、条件查询的执行速度;[[BR]] |