本文档由 g2rain-basis 的
# 数据库与数据模型
docs/development/database-conventions.md 自动同步生成。数据库初始化脚本为 scripts/g2rain-basis.sql,覆盖 Passport、用户与组织、IdP 映射、应用与资源、角色与控制单元、服务注册、静态访问令牌、登录令牌和审计事件等表。
# 租户与隔离
- 带
organ_id的数据必须在查询、写入、索引和业务校验中保持可信主体上下文一致。 WithoutIsolation路径只用于登录、租户开通、IdP 解析/同步等明确受信流程,调用 Service 必须补足机构范围与权限校验。- PO 不直接作为接口响应;DAO 不承担权限决策或凭证脱敏。
# 逻辑删除与唯一键
每个唯一业务键必须声明生命周期:
- 删除后允许重建:使用
(IF(delete_flag = 0, 0, NULL))函数唯一索引。 - 删除后永久占位:唯一键不包含
delete_flag。
当前初始化脚本中的唯一键尚未统一完成该语义审核,见架构差异。新增或迁移索引至少验证重复有效记录失败、删除后重建、多次删除重建及不同租户互不冲突。
初始化脚本与生产增量迁移必须分离。结构变化需说明历史数据检查、锁表与停机影响、执行顺序、验证和回滚;函数索引要求 MySQL 8.0.13 及以上。