5.6 KiB
5.6 KiB
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) 唯一。
权限规则
b_user_module决定用户能否看到、进入和调用模块。b_user_power决定用户进入模块后可以执行哪些按钮操作。- 操作权限必须在拥有模块权限时才生效。
- 当前阶段由前端负责页面进入控制和按钮禁用,后端权限校验后续单独实施。