4.6 KiB
4.6 KiB
FMS 业务数据库结构迁移计划
本文件记录业务表迁移历史。当前模块元数据架构和
033/034切换顺序以新数据库结构.md为准;文中旧授权表名只描述切换前状态。
目标与现状
- 源库:
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 表、跨库对象或业务存储过程。
脚本顺序
015_normalize_existing_business_tables.sql:规范化目标库已有合作伙伴、联系人和分类结构。016_create_base_tables.sql:基础资料和用户业务扩展。017_create_contract_file_tables.sql:合同、价目表和文件资料。018_create_business_tables.sql:业务主表和明细。019_create_finance_tables.sql:财务主表和明细。020_create_oa_tables.sql:OA 实体、附件和接收关系。021_create_business_views.sql:保留的基础资料、业务和财务视图。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重复执行只读验收。