跳转到内容

数据模型

StackRivet 的 schema 遵循几条硬约定,使其在 MySQL 和 PostgreSQL 间可移植、且进入客户库后永不冲突。确切、当前的 schema 以 Flyway 迁移定义的为准——本页是它们共享的形态。

  • 每张表带 sr_ 前缀;模块表用 sr_<module>_<entity>(如 sr_cm_customer)。
  • 标准列——每张核心表有 idcreated_atupdated_at;可审计表加 created_by / updated_by;多租户相关表带 tenant_id(默认 'default');软删除表带 deleted / deleted_at;乐观锁表带 version
  • ID 是字符串VARCHAR(32)),通常是雪花 / 分布式 ID。
  • 枚举用短字符串,不用数据库 enum 类型——使 schema 在 MySQL 和 PostgreSQL 间可移植。
  • 文件是引用,不是 URL——像 avatar_asset_id 这样的列存 assetId,经 Asset Service 解析。
  • 同时支持 MySQL 8.4 和 PostgreSQL 18.4;可移植 SQL 放 common/,方言特定 SQL 放 mysql/postgresql/
分组表(代表性)
系统与 RBACsr_sys_usersr_sys_rolesr_sys_user_rolesr_sys_role_menusr_sys_menusr_sys_deptsr_sys_postsr_sys_user_postsr_sys_dict_typesr_sys_dict_itemsr_sys_param
Asset Servicesr_assetsr_asset_ref
代码生成器sr_gen_tablesr_gen_columnsr_gen_filesr_gen_history
审计操作 / 登录 / 异常日志表
异步任务sr_task_instance(+ 执行),结果存为资产
模块 manifestsr_module_manifestsr_module_permissionsr_module_menu

sr_asset_ref 记录哪些业务行引用了哪些资产(多对多关系),这正是 Asset Service 与业务表解耦的方式——它从不直接引用业务表。RBAC 通过 join 表(sr_sys_user_rolesr_sys_role_menusr_sys_user_post)串联;每个模块自带 manifest,使其菜单、权限、迁移在启动时注册。

Terminal window
# 迁移本身:
ls stackrivet-<module>/src/main/resources/db/migration/
# 实际已应用的(启动后):
SELECT version, description, success FROM flyway_schema_history ORDER BY installed_rank;

要看某实体的确切列,读它的迁移——加一列就要加一个迁移,所以迁移永远是事实源。