120 lines
5.5 KiB
Markdown
120 lines
5.5 KiB
Markdown
|
|
# 数据库表结构设计
|
|||
|
|
|
|||
|
|
## 一、统一认证网关(主工程)表结构
|
|||
|
|
|
|||
|
|
### 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.id,subsystem_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.id(users 表为统一认证主工程的用户表)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**主外键关系说明:**
|
|||
|
|
- 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()
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
租户ID:1 或 租户名:test-tenant
|
|||
|
|
用户名:testuser
|
|||
|
|
密码:123456
|