本文档由 g2rain-basisdocs/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 及以上。