oidc-gateway-demo/database.md

5.5 KiB
Raw Blame History

数据库表结构设计

一、统一认证网关(主工程)表结构

1. 用户表users

字段名 类型 说明
id BIGINT 主键,自增
username VARCHAR(50) 用户名(租户/子系统内唯一)
password VARCHAR(255) 密码(加密存储)
user_type ENUM 用户类型TENANT/SUBSYSTEM
tenant_id BIGINT 所属租户ID外键->tenants.id所有用户必填标识归属租户
subsystem_id BIGINT 所属子系统ID外键->subsystems.id仅子系统用户必填
email VARCHAR(100) 邮箱
phone VARCHAR(20) 手机号
real_name VARCHAR(50) 真实姓名
status ENUM 状态ACTIVE/INACTIVE/LOCKED/DELETED
create_time TIMESTAMP 创建时间
update_time TIMESTAMP 更新时间
UNIQUE KEY uk_tenant_username (tenant_id, username)
UNIQUE KEY uk_subsystem_username (subsystem_id, username)

主键id 外键tenant_id 关联 tenants.id所有用户必填subsystem_id 关联 subsystems.id仅子系统用户必填

2. 租户表tenants

字段名 类型 说明
id BIGINT 主键,自增
tenant_code VARCHAR(50) 租户唯一标识
tenant_name VARCHAR(100) 租户名称
description TEXT 描述
status ENUM 状态ACTIVE/INACTIVE
create_time TIMESTAMP 创建时间
update_time TIMESTAMP 更新时间

主键id

3. 子系统表subsystems

字段名 类型 说明
id BIGINT 主键,自增
subsystem_code VARCHAR(50) 子系统唯一标识
subsystem_name VARCHAR(100) 子系统名称
description TEXT 描述
base_url VARCHAR(255) 子系统入口地址
status ENUM 状态ACTIVE/INACTIVE
create_time TIMESTAMP 创建时间
update_time TIMESTAMP 更新时间

主键id

4. 租户-子系统权限表tenant_subsystem_permissions

字段名 类型 说明
id BIGINT 主键,自增
tenant_id BIGINT 租户ID外键->tenants.id
subsystem_id BIGINT 子系统ID外键->subsystems.id
permissions JSON 权限配置
status ENUM 状态ACTIVE/INACTIVE
create_time TIMESTAMP 创建时间
update_time TIMESTAMP 更新时间
UNIQUE KEY uk_tenant_subsystem (tenant_id, subsystem_id)

主键id 外键tenant_id 关联 tenants.idsubsystem_id 关联 subsystems.id

二、子系统(如订单、支付等)表结构

1. 业务用户表users 和 统一认证网关(主工程) 用的不是一个数据库,表名可以重复)

字段名 类型 说明
id BIGINT 主键,自增
user_id BIGINT 关联统一认证网关 users 表的 id 字段,外键->users.id
username VARCHAR(50) 业务系统内用户名
... ... 业务相关字段(如地址、类型等)
create_time TIMESTAMP 创建时间
update_time TIMESTAMP 更新时间

主键id 外键user_id 关联统一认证网关 users.idusers 表为统一认证主工程的用户表)


主外键关系说明:

  • users.tenant_id → tenants.id
  • users.subsystem_id → subsystems.id
  • tenant_subsystem_permissions.tenant_id → tenants.id
  • tenant_subsystem_permissions.subsystem_id → subsystems.id
  • 子系统业务用户表 user_id → 统一认证 users.id
  • 业务数据表 user_id → 统一认证 users.id

-- 插入租户 INSERT INTO tenants (id, tenant_code, tenant_name, description, status, create_time, update_time) VALUES (1, 'test-tenant', '测试租户', '测试用租户', 'ACTIVE', NOW(), NOW());

-- 插入用户 INSERT INTO users ( id, username, password, user_type, tenant_id, subsystem_id, email, phone, real_name, status, create_time, update_time ) VALUES ( 1, 'testuser', '$2a$10$wH6Qw6Qw6Qw6Qw6Qw6Qw6uQw6Qw6Qw6Qw6Qw6Qw6Qw6Qw6Qw6Qw6', -- 密码123456的BCrypt加密 'TENANT', 1, NULL, 'testuser@example.com', '13800000000', '测试用户', 'ACTIVE', NOW(), NOW() );

租户ID1 或 租户名test-tenant 用户名testuser 密码123456