Files
workspace/code/fms/数据库迁移计划.md
T
2026-07-29 23:18:54 +08:00

4.4 KiB
Raw Blame History

FMS 业务数据库结构迁移计划

目标与现状

  • 源库:G3HY2025,只读取系统目录和视图定义。
  • 目标库:FMS,只迁移结构,不迁移业务数据,不迁移存储过程。
  • 源库现有 121 张用户表、61 个视图;目标库迁移前已有 17 张表、1 个视图。
  • 目标库现有 s_module*、b_user_module、b_user_power、s_module_auto_code 是新模型,不从旧库重复迁移。

对象边界

对象范围 处理
b_* 基础资料 重建设计后迁移,明确排除项除外
bc_* 合同和价目表 重建设计后迁移
bf_* 文件资料 重建设计后迁移
bs_* 业务单据 重建设计后迁移
cw_* 财务 重建设计后迁移
oa_* OA 实体 重建设计后迁移
v_b_*、v_bc_*、v_bs_*、v_cw_*、v_feetype 保留有业务意义的名称和核心字段,按新表结构重建
s_*、sh_*、v_s_*、v_sh_* 不迁移

已存在且不重复创建:

  • b_user、b_contact、b_othercompany、b_othercompany_bmfl、b_user_power、v_b_contact
  • 新 module 元数据、授权、多语言、自动编码和登录日志表

明确排除:

  • 旧元数据和权限:s_module*、s_autoidrule、s_column*、s_search*、s_select*、s_setpage、b_user_qx
  • 历史基础设施:dtproperties、log_datas、s_Log、s_log_sp、b_user_record
  • 暂缓能力:s_report、s_exceltpl*、s_expression*、s_awoke*、s_shlevel、sh_*
  • 废弃对象:b_contact_type、v_autoidrule、v_b_user_record

新结构规则

  • 主表使用 b_id bigint 雪花 ID 作为系统主键;明细和子表保留 subid bigint 雪花主键,不改名为 b_id。
  • 主表及子表的关联字段统一为 bigint;子表 father 指向对应主表的 b_id。
  • 主业务对象保留独立文本业务编号。合同使用 b_htno,业务单及财务单据使用 b_ywno,其余主对象使用已有语义字段或 b_code。
  • 自动业务编号字段使用 varchar(50),必须有单字段唯一索引,可由现有 s_module_auto_code 绑定;需要中文编号时才使用 nvarchar(50)。
  • 明细、关系表不增加无业务意义的自动编号。旧 subid 保留字段名并改为 bigint 雪花 ID。
  • 固定层级分类表统一改为 b_id、b_parent_id、b_name、b_level、b_path、b_xh、b_canuse 和审计字段。
  • 中文名称、备注和正文使用 nvarchar;text 改为 nvarchar(max);image 改为 varbinary(max)。
  • 日期时间使用 date 或 datetime2;布尔值使用 int 的 0/1;float 金额和计量值改为定精度 decimal。
  • 逗号拼接的关联 ID 不再作为关系依据,后续业务模块使用独立关系表。
  • 视图显式列出原定义字段,不使用 SELECT *,不依赖旧 module 表、跨库对象或业务存储过程。

脚本顺序

  1. 015_normalize_existing_business_tables.sql:规范化目标库已有合作伙伴、联系人和分类结构。
  2. 016_create_base_tables.sql:基础资料和用户业务扩展。
  3. 017_create_contract_file_tables.sql:合同、价目表和文件资料。
  4. 018_create_business_tables.sql:业务主表和明细。
  5. 019_create_finance_tables.sql:财务主表和明细。
  6. 020_create_oa_tables.sql:OA 实体、附件和接收关系。
  7. 021_create_business_views.sql:保留的基础资料、业务和财务视图。
  8. verify_business_schema.sql:只读验证对象、字段、约束、索引和视图依赖。

所有迁移脚本必须断言目标数据库为 FMS,使用 XACT_ABORT ON 和显式事务,并允许重复执行。

执行结果

  • 执行日期:2026-07-29。
  • 015 至 021 已在 FMS 完整执行两次,两次均成功,幂等验证通过。
  • 目标库现有 102 张用户表、49 个视图;本次新建的 85 张业务表均为空。
  • 主表 b_id、子表 subid、father 和关联 ID 均为 bigint,主键规则验证通过。
  • 所有 49 个视图均已通过 sys.sp_refreshview 编译验证。
  • 目标库原有用户和 module 元数据仍在:9 个用户、11 个 module、72 个 module 字段。
  • 旧自动编码规则未迁移;当前 s_module_auto_code 为 0 行,后续由新 module 配置通过 createAutoCodeDraft 创建。
  • 可使用 config/migrations/tools/VerifyBusinessMigration.java 重复执行只读验收。