news 2026/5/3 22:40:22

【实战】 SAAS租户元数据模型设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【实战】 SAAS租户元数据模型设计

SAAS租户元数据模型设计

请关注公众号【碳硅化合物AI】

设计说明

本文档定义SAAS多租户平台的元数据模型,包括应用、模块、菜单、按钮、API、实体、表单、字段、视图等元数据对象,以及它们与租户的关联关系。

元数据表结构

1. 应用表 (application)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
app_codeVARCHAR64NOT NULL应用编码
app_nameVARCHAR256NOT NULL应用名称
app_descriptionVARCHAR256NULL应用描述
app_typeVARCHAR32NULL应用类型
app_urlVARCHAR256NULL应用URL
app_iconVARCHAR256NULL应用图标
app_sequenceINT-NULL排序
enable_statusVARCHAR32NOT NULL应用状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • UNIQUE KEY uk_app_code (app_code)

说明:应用是系统功能的基础单元,与系统功能相关。

2. 模块表 (module)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
app_idBIGINT-NOT NULL应用ID
module_codeVARCHAR64NOT NULL模块编码
module_nameVARCHAR256NOT NULL模块名称
module_descriptionVARCHAR256NULL模块描述
module_urlVARCHAR256NULL模块URL
module_iconVARCHAR256NULL模块图标
module_sequenceINT-NULL排序
enable_statusVARCHAR32NOT NULL模块状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_app_id (app_id)
  • UNIQUE KEY uk_app_module_code (app_id, module_code)

说明:模块属于应用,一个应用包含多个模块。

3. 菜单元数据表 (menu_metadata)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
module_idBIGINT-NOT NULL模块ID
parent_idBIGINT-NULL父菜单ID
menu_codeVARCHAR64NOT NULL菜单编码
menu_nameVARCHAR256NOT NULL菜单名称
menu_descriptionVARCHAR256NULL菜单描述
menu_iconVARCHAR256NULL菜单图标(默认)
menu_urlVARCHAR256NULL菜单URL
menu_sequenceINT-NULL排序
enable_statusVARCHAR32NOT NULL菜单状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_module_id (module_id)
  • KEY idx_parent_id (parent_id)
  • UNIQUE KEY uk_module_menu_code (module_id, menu_code)

说明:菜单属于模块,一个模块包含多个菜单。菜单支持用户自定义名称和图标配置(通过租户菜单表覆盖)。

4. 按钮元数据表 (button_metadata)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
menu_idBIGINT-NOT NULL所属菜单ID
button_codeVARCHAR64NOT NULL按钮编码
button_nameVARCHAR256NOT NULL按钮名称
button_descriptionVARCHAR256NULL按钮描述
button_iconVARCHAR256NULL按钮图标(默认)
button_typeVARCHAR32NULL按钮类型(ADD/EDIT/DELETE/QUERY等)
button_sequenceINT-NULL排序
enable_statusVARCHAR32NOT NULL按钮状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_menu_id (menu_id)
  • UNIQUE KEY uk_menu_button_code (menu_id, button_code)

说明:按钮属于菜单,一个菜单包含多个按钮。

5. API元数据表 (api_metadata)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
module_idBIGINT-NOT NULL模块ID
api_codeVARCHAR64NOT NULLAPI编码
api_nameVARCHAR256NOT NULLAPI名称
api_descriptionVARCHAR256NULLAPI描述
api_urlVARCHAR256NOT NULLAPI路径
api_methodVARCHAR32NOT NULLHTTP方法(GET/POST/PUT/DELETE)
api_typeVARCHAR32NULLAPI类型(PUBLIC/PRIVATE)
enable_statusVARCHAR32NOT NULLAPI状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_module_id (module_id)
  • UNIQUE KEY uk_module_api_code (module_id, api_code)
  • KEY idx_api_url_method (api_url, api_method)

说明:API属于模块,一个模块包含多个API。

6. 实体表 (entity)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
entity_codeVARCHAR64NOT NULL实体编码
entity_nameVARCHAR256NOT NULL实体名称
entity_descriptionVARCHAR256NULL实体描述
entity_typeVARCHAR32NULL实体类型
table_nameVARCHAR128NULL对应数据库表名
enable_statusVARCHAR32NOT NULL实体状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • UNIQUE KEY uk_entity_code (entity_code)
  • KEY idx_table_name (table_name)

说明:实体是业务对象的基础,可以关联到多个租户,一个租户可以包含多个实体。

7. 表单表 (form)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
entity_idBIGINT-NOT NULL实体ID
form_codeVARCHAR64NOT NULL表单编码
form_nameVARCHAR256NOT NULL表单名称
form_descriptionVARCHAR256NULL表单描述
form_typeVARCHAR32NULL表单类型(ADD/EDIT/QUERY等)
form_dslTEXT-NULL表单DSL配置(JSON格式)
enable_statusVARCHAR32NOT NULL表单状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_entity_id (entity_id)
  • UNIQUE KEY uk_entity_form_code (entity_id, form_code)

说明:表单属于实体,一个实体包含多个表单(如新增表单、编辑表单等)。

8. 子表单表 (sub_form)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
form_idBIGINT-NOT NULL所属表单ID
sub_form_codeVARCHAR64NOT NULL子表单编码
sub_form_nameVARCHAR256NOT NULL子表单名称
sub_form_descriptionVARCHAR256NULL子表单描述
sub_form_dslTEXT-NULL子表单DSL配置(JSON格式)
sub_form_sequenceINT-NULL排序
enable_statusVARCHAR32NOT NULL子表单状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_form_id (form_id)
  • UNIQUE KEY uk_form_sub_form_code (form_id, sub_form_code)

说明:子表单属于表单,一个表单包含多个子表单。

9. 字段表 (field)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
form_idBIGINT-NOT NULL所属表单ID
field_codeVARCHAR64NOT NULL字段编码
field_nameVARCHAR256NOT NULL字段名称
field_descriptionVARCHAR256NULL字段描述
field_typeVARCHAR32NOT NULL字段类型(STRING/INT/DECIMAL/DATETIME等)
field_lengthINT-NULL字段长度
is_requiredTINYINT-NULL是否必填(0-否,1-是)
is_uniqueTINYINT-NULL是否唯一(0-否,1-是)
default_valueVARCHAR256NULL默认值
field_sequenceINT-NULL排序
enable_statusVARCHAR32NOT NULL字段状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_form_id (form_id)
  • UNIQUE KEY uk_form_field_code (form_id, field_code)

说明:字段属于表单,一个表单包含多个字段。

10. 视图表 (view)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
entity_idBIGINT-NOT NULL实体ID
view_codeVARCHAR64NOT NULL视图编码
view_nameVARCHAR256NOT NULL视图名称
view_descriptionVARCHAR256NULL视图描述
view_typeVARCHAR32NULL视图类型(LIST/DETAIL/SEARCH等)
view_dslTEXT-NOT NULL视图DSL配置(JSON格式,页面渲染DSL)
enable_statusVARCHAR32NOT NULL视图状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_entity_id (entity_id)
  • UNIQUE KEY uk_entity_view_code (entity_id, view_code)

说明:视图属于实体,一个实体包含多个视图。视图包含页面渲染的DSL,支持用户自定义配置。

租户与元数据关联表

11. 租户应用关联表 (tenant_application)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
tenant_idBIGINT-NOT NULL租户ID
app_idBIGINT-NOT NULL应用ID
app_nameVARCHAR256NULL应用名称(冗余,便于查询)
enable_statusVARCHAR32NOT NULL关联状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_tenant_id (tenant_id)
  • KEY idx_app_id (app_id)
  • UNIQUE KEY uk_tenant_app (tenant_id, app_id)

说明:租户与应用多对多关联,一个租户可以包含多个应用,一个应用可以应用到多个租户。

12. 租户实体关联表 (tenant_entity)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
tenant_idBIGINT-NOT NULL租户ID
entity_idBIGINT-NOT NULL实体ID
entity_nameVARCHAR256NULL实体名称(冗余,便于查询)
enable_statusVARCHAR32NOT NULL关联状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_tenant_id (tenant_id)
  • KEY idx_entity_id (entity_id)
  • UNIQUE KEY uk_tenant_entity (tenant_id, entity_id)

说明:租户与实体多对多关联,一个租户可以包含多个实体,一个实体可以应用到多个租户。

实体与引擎关联表

13. 实体流程关联表 (entity_workflow)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
tenant_idBIGINT-NOT NULL租户ID
entity_idBIGINT-NOT NULL实体ID
workflow_codeVARCHAR64NOT NULL流程编码
workflow_nameVARCHAR256NULL流程名称
workflow_configTEXT-NULL流程配置(JSON格式,包含实体属性匹配条件)
match_conditionTEXT-NULL匹配条件(JSON格式,基于实体属性)
workflow_sequenceINT-NULL优先级排序
enable_statusVARCHAR32NOT NULL关联状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_tenant_id (tenant_id)
  • KEY idx_entity_id (entity_id)
  • KEY idx_workflow_code (workflow_code)

说明:实体与流程引擎多对多关联,一个实体可以应用多个流程,根据实体属性进行配置匹配。

14. 实体规则关联表 (entity_rule)

字段名类型长度是否为空说明
idBIGINT-NOT NULL业务主键ID
tenant_idBIGINT-NOT NULL租户ID
entity_idBIGINT-NOT NULL实体ID
rule_codeVARCHAR64NOT NULL规则编码
rule_nameVARCHAR256NULL规则名称
rule_configTEXT-NULL规则配置(JSON格式,包含实体属性匹配条件)
match_conditionTEXT-NULL匹配条件(JSON格式,基于实体属性)
rule_sequenceINT-NULL优先级排序
enable_statusVARCHAR32NOT NULL关联状态(ON/OFF)
create_userVARCHAR64NOT NULL创建人
create_timeDATETIME-NOT NULL创建时间
update_userVARCHAR64NOT NULL更新人
update_timeDATETIME-NOT NULL更新时间
versionINT-NOT NULL版本,从1累加
deletedTINYINT-NOT NULL未删除0、已删除1

索引:

  • PRIMARY KEY (id)
  • KEY idx_tenant_id (tenant_id)
  • KEY idx_entity_id (entity_id)
  • KEY idx_rule_code (rule_code)

说明:实体与规则引擎多对多关联,一个实体可以应用多个规则,根据实体属性进行配置匹配。

设计说明

  1. 元数据分层关系

    • 应用 → 模块 → 菜单 → 按钮
    • 应用 → 模块 → API
    • 实体 → 表单 → 子表单 → 字段
    • 实体 → 视图
  2. 租户关联

    • 应用与租户多对多关联
    • 实体与租户多对多关联
    • 其他元数据通过应用/实体间接关联租户
  3. 资源模型基于元数据

    • 租户菜单表(tenant_menu)基于菜单元数据(menu_metadata)
    • 租户按钮表(tenant_button)基于按钮元数据(button_metadata)
    • 支持用户自定义名称、图标等配置
  4. 引擎关联

    • 实体支持与流程引擎、规则引擎多实例关联
    • 通过实体属性配置匹配条件
    • 支持优先级排序
  5. DSL配置

    • 表单、子表单、视图支持DSL配置
    • 视图DSL用于页面渲染,支持用户自定义
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 20:43:45

Java毕设选题推荐:基于SpringBoot+web的中医诊所预约挂号系统设计与实现基于web的中医诊所预约挂号系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/2 17:19:53

Git忽略文件.gitignore模板:PyTorch项目必备

Git忽略文件 .gitignore 模板:PyTorch 项目必备 在深度学习项目的日常开发中,你是否曾遇到过这样的场景?刚完成一轮模型训练,准备提交代码时,发现 Git 列出了成百上千个待跟踪文件——从 checkpoints/ 下的 .pth 权重…

作者头像 李华
网站建设 2026/4/29 16:36:01

解决gitlab配置Webhooks,提示 Invalid url given的问题

这个错误 Invalid url given 不是网络连接错误 (比如 "Connection timed out" 或 "Connection refused")。这是一个验证错误。这意味着 GitLab 在你保存 Webhook 设置的那一刻,就对你输入的 URL 进行了检查,并认为它是一个“不合法”…

作者头像 李华
网站建设 2026/5/3 16:02:41

基于Springboot果蔬疾病防治管理系统【附源码+文档】

💕💕作者: 米罗学长 💕💕个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 💕💕各类成品Java毕设 。javaweb,ssm,springboot等项目&#…

作者头像 李华