数据模型
StackRivet 的 schema 遵循几条硬约定,使其在 MySQL 和 PostgreSQL 间可移植、且进入客户库后永不冲突。确切、当前的 schema 以 Flyway 迁移定义的为准——本页是它们共享的形态。
- 每张表带
sr_前缀;模块表用sr_<module>_<entity>(如sr_cm_customer)。 - 标准列——每张核心表有
id、created_at、updated_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/。
| 分组 | 表(代表性) |
|---|---|
| 系统与 RBAC | sr_sys_user、sr_sys_role、sr_sys_user_role、sr_sys_role_menu、sr_sys_menu、sr_sys_dept、sr_sys_post、sr_sys_user_post、sr_sys_dict_type、sr_sys_dict_item、sr_sys_param |
| Asset Service | sr_asset、sr_asset_ref |
| 代码生成器 | sr_gen_table、sr_gen_column、sr_gen_file、sr_gen_history |
| 审计 | 操作 / 登录 / 异常日志表 |
| 异步任务 | sr_task_instance(+ 执行),结果存为资产 |
| 模块 manifest | sr_module_manifest、sr_module_permission、sr_module_menu |
sr_asset_ref 记录哪些业务行引用了哪些资产(多对多关系),这正是 Asset Service 与业务表解耦的方式——它从不直接引用业务表。RBAC 通过 join 表(sr_sys_user_role、sr_sys_role_menu、sr_sys_user_post)串联;每个模块自带 manifest,使其菜单、权限、迁移在启动时注册。
查看确切 schema
Section titled “查看确切 schema”# 迁移本身:ls stackrivet-<module>/src/main/resources/db/migration/
# 实际已应用的(启动后):SELECT version, description, success FROM flyway_schema_history ORDER BY installed_rank;要看某实体的确切列,读它的迁移——加一列就要加一个迁移,所以迁移永远是事实源。