Files
workspace/code/fms/新数据库结构.md
T
2026-07-21 22:30:33 +08:00

5.6 KiB
Raw Blame History

FMS 新数据库结构

设计约定

  • 表名和字段名沿用旧系统的 b_ 风格。
  • 所有表的 b_id 使用 bigint 雪花 ID,返回前端时序列化为字符串。
  • b_module.b_code 是可修改的模块编码,使用小写字母、数字和下划线,例如 m_biz。
  • 布尔字段使用 int:1 表示是,0 表示否,并限制只能写入 0 或 1。
  • b_xh 表示显示顺序,数值越小越靠前。
  • 当前按机构使用独立数据库,表中不保存机构编号。
  • 模块管理界面只区分目录和普通模块;普通模块配置路由时保存为 page,未配置路由时保存为 data。

模块管理

表关系

b_module
  |-- parent_id --> b_module
  |-- 1:N --------> b_module_field
  |-- 1:N --------> b_user_module
  |-- 1:N --------> b_module_power ---- 1:N ----> b_user_power

b_module / b_module_field / b_module_power
  |-- b_i18n --> b_i18n.b_key

dbo.b_module

保存目录、页面和数据模块。

字段 类型 说明
b_id bigint 不可变雪花 ID 主键
b_code varchar(50) 可修改的唯一模块编码,例如 m_biz
b_parent_id bigint 上级模块 ID,根节点为空
b_name nvarchar(100) 默认中文名称
b_i18n varchar(150) 多语言键
b_type varchar(20) directory、page 或 data
b_route varchar(200) 页面路由
b_viewtable varchar(128) 查询表或视图
b_savetable varchar(128) 保存目标表
b_keyfield varchar(50) 主键字段
b_orderfield varchar(500) 排序条件,例如 b_xh ASC, b_id DESC
b_canmenu int 是否显示在菜单,默认 0
b_canuse int 是否启用,默认 1
b_xh int 同级显示顺序

约束:

  • b_parent_id 外键引用 b_module.b_id。
  • b_code 唯一,格式为 ^[a-z][a-z0-9_]{1,49}$。
  • b_route 非空时唯一。
  • 目录不能配置路由和数据表;数据模块不能显示在菜单中。
  • 表名、视图名和字段名必须由后端校验,不能直接拼接 SQL。

dbo.b_module_field

保存模块的标准字段配置。

字段 类型 说明
b_id bigint 雪花 ID 主键
b_module_id bigint 所属模块 ID
b_field varchar(50) 数据库字段名
b_name nvarchar(100) 默认中文名称
b_i18n varchar(150) 多语言键
b_type varchar(20) string、text、number、select、date、boolean
b_canlist int 是否显示在列表
b_canform int 是否显示在表单
b_must int 是否必填
b_canquery int 是否作为查询条件
b_readonly int 是否只读
b_width int 列表列宽
b_value nvarchar(500) 新增时的默认值
b_xh int 显示顺序
b_canuse int 是否启用

约束:

  • b_module_id 外键引用 b_module.b_id。
  • (b_module_id, b_field) 唯一。
  • b_canform = 0 时,b_must 必须为 0。
  • select 的选项来源后续单独设计。

dbo.b_module_power

定义模块内可以授权的按钮操作。

字段 类型 说明
b_id bigint 雪花 ID 主键
b_module_id bigint 所属模块 ID
b_code varchar(50) 操作编码,例如 create、update、delete
b_name nvarchar(100) 操作名称
b_i18n varchar(150) 多语言键
b_xh int 显示顺序
b_canuse int 是否启用

约束:

  • b_module_id 外键引用 b_module.b_id。
  • (b_module_id, b_code) 唯一。
  • 模块使用权限不在本表定义。

dbo.b_user_module

控制用户能否进入和使用模块。

字段 类型 说明
b_id bigint 雪花 ID 主键
b_user_id bigint 用户雪花 ID
b_module_id bigint 模块 ID
b_inputuser_id bigint 授权人雪花 ID
b_inputdatetime datetime 授权时间

约束:

  • b_module_id 外键引用 b_module.b_id。
  • (b_user_id, b_module_id) 唯一。
  • 目录不单独授权;拥有下级模块时自动显示上级目录。

dbo.b_user_power

保存用户拥有的操作权限。

字段 类型 说明
b_id bigint 雪花 ID 主键
b_user_id bigint 用户雪花 ID
b_power_id bigint b_module_power.b_id
b_inputuser_id bigint 授权人雪花 ID
b_inputdatetime datetime 授权时间

约束:

  • b_power_id 外键引用 b_module_power.b_id。
  • (b_user_id, b_power_id) 唯一。

dbo.b_i18n

统一保存菜单、模块、权限、字段、按钮、提示和校验信息等界面文案;业务对象只绑定稳定的 b_key。

字段 类型 说明
b_id bigint 雪花 ID 主键
b_key varchar(150) 多语言键
b_locale varchar(20) 语言编码,例如 zh-CN
b_value nvarchar(500) 翻译文本
b_inputuser_id bigint 创建人雪花 ID
b_inputdatetime datetime 创建时间
b_updateuser_id bigint 修改人雪花 ID
b_updatedatetime datetime 修改时间

约束:(b_key, b_locale) 唯一。

权限规则

  1. b_user_module 决定用户能否看到、进入和调用模块。
  2. b_user_power 决定用户进入模块后可以执行哪些按钮操作。
  3. 操作权限必须在拥有模块权限时才生效。
  4. 当前阶段由前端负责页面进入控制和按钮禁用,后端权限校验后续单独实施。