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