224 lines
9.0 KiB
Markdown
224 lines
9.0 KiB
Markdown
# 数据库结构文档(PostgreSQL)
|
||
|
||
本文档根据 `backend/design/db_schema_pgsql.sql` 生成,描述当前核心表结构、字段、约束与索引。
|
||
|
||
## 0. 租户与组织
|
||
|
||
### 0.1 `sys_tenant`(租户表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| id | BIGSERIAL | PK | 租户ID |
|
||
| tenant_code | VARCHAR(64) | NOT NULL, UNIQUE | 租户编码 |
|
||
| tenant_name | VARCHAR(128) | NOT NULL | 租户名称 |
|
||
| status | SMALLINT | NOT NULL, DEFAULT 1 | 状态 |
|
||
| expire_time | TIMESTAMP(6) | | 过期时间 |
|
||
| contact_name | VARCHAR(64) | | 联系人 |
|
||
| contact_phone | VARCHAR(32) | | 联系电话 |
|
||
| remark | VARCHAR(255) | | 备注 |
|
||
| created_at | TIMESTAMP(6) | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||
| updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 更新时间 |
|
||
| is_deleted | SMALLINT | DEFAULT 0 | 逻辑删除标记 |
|
||
|
||
索引:
|
||
- `uk_tenant_code`:`UNIQUE (tenant_code) WHERE is_deleted = FALSE`
|
||
|
||
### 0.2 `sys_org`(组织架构表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| id | BIGSERIAL | PK | 组织ID |
|
||
| tenant_id | BIGINT | NOT NULL | 租户ID |
|
||
| parent_id | BIGINT | | 父级组织ID |
|
||
| org_name | VARCHAR(128) | NOT NULL | 组织名称 |
|
||
| org_code | VARCHAR(64) | | 组织编码 |
|
||
| org_path | VARCHAR(512) | | 组织路径 |
|
||
| sort_order | INTEGER | DEFAULT 0 | 排序 |
|
||
| status | SMALLINT | DEFAULT 1 | 状态 |
|
||
| created_at | TIMESTAMP(6) | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||
| updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 更新时间 |
|
||
| is_deleted | SMALLINT | DEFAULT 0 | 逻辑删除标记 |
|
||
|
||
外键:
|
||
- `fk_org_parent`:`parent_id -> sys_org(id)`
|
||
- `fk_org_tenant`:`tenant_id -> sys_tenant(id)`
|
||
|
||
索引:
|
||
- `idx_org_tenant`:`(tenant_id)`
|
||
|
||
## 1. 用户与角色
|
||
|
||
### 1.1 `sys_user`(用户表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| user_id | BIGSERIAL | PK | 用户ID |
|
||
| username | VARCHAR(50) | NOT NULL, UNIQUE | 登录名 |
|
||
| display_name | VARCHAR(50) | NOT NULL | 显示名 |
|
||
| email | VARCHAR(100) | | 邮箱 |
|
||
| phone | VARCHAR(30) | UNIQUE | 手机号 |
|
||
| password_hash | VARCHAR(255) | NOT NULL | 密码哈希 |
|
||
| status | SMALLINT | NOT NULL, DEFAULT 1 | 状态 |
|
||
| pwd_reset_required | SMALLINT | DEFAULT 1 | 首次登录是否需改密 |
|
||
| is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 逻辑删除标记 |
|
||
| created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 创建时间 |
|
||
| updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 更新时间 |
|
||
| is_platform_admin | BOOLEAN | DEFAULT false | 是否平台管理员 |
|
||
|
||
索引:
|
||
- `uk_user_username`:`UNIQUE (username) WHERE is_deleted = FALSE`
|
||
|
||
### 1.2 `sys_role`(角色表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| role_id | BIGSERIAL | PK | 角色ID |
|
||
| tenant_id | BIGINT | NOT NULL | 租户ID |
|
||
| role_code | VARCHAR(50) | NOT NULL | 角色编码(租户内唯一) |
|
||
| role_name | VARCHAR(50) | NOT NULL | 角色名称 |
|
||
| status | SMALLINT | NOT NULL, DEFAULT 1 | 状态 |
|
||
| remark | TEXT | | 备注 |
|
||
| is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 逻辑删除标记 |
|
||
| created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 创建时间 |
|
||
| updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 更新时间 |
|
||
|
||
索引:
|
||
- `idx_sys_role_tenant`:`(tenant_id)`
|
||
- `uk_role_code`:`UNIQUE (tenant_id, role_code) WHERE is_deleted = FALSE`
|
||
|
||
### 1.3 `sys_user_role`(用户-角色关联表,租户强约束)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| id | BIGSERIAL | PK | 关联ID |
|
||
| tenant_id | BIGINT | NOT NULL | 租户ID |
|
||
| user_id | BIGINT | NOT NULL | 用户ID |
|
||
| role_id | BIGINT | NOT NULL | 角色ID |
|
||
| is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 逻辑删除标记 |
|
||
| created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 创建时间 |
|
||
| updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 更新时间 |
|
||
|
||
唯一约束:
|
||
- `UNIQUE (tenant_id, user_id, role_id) WHERE is_deleted = 0`
|
||
|
||
### 1.4 `sys_tenant_user`(租户成员关联表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| id | BIGSERIAL | PK | 关联ID |
|
||
| user_id | BIGINT | NOT NULL | 用户ID |
|
||
| tenant_id | BIGINT | NOT NULL | 租户ID |
|
||
| org_id | BIGINT | | 组织ID |
|
||
| status | SMALLINT | DEFAULT 1 | 状态 |
|
||
| is_deleted | SMALLINT | DEFAULT 0 | 逻辑删除标记 |
|
||
| created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 创建时间 |
|
||
| updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 更新时间 |
|
||
|
||
索引:
|
||
- `uk_tenant_user`:`UNIQUE (user_id, tenant_id) WHERE is_deleted = 0`
|
||
|
||
## 2. 权限/字典/参数(全局共享)
|
||
|
||
### 2.1 `sys_permission`(权限表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| perm_id | BIGSERIAL | PK | 权限ID |
|
||
| parent_id | BIGINT | | 父级权限ID |
|
||
| name | VARCHAR(100) | NOT NULL | 权限名称 |
|
||
| code | VARCHAR(100) | NOT NULL, UNIQUE | 权限编码 |
|
||
| perm_type | VARCHAR(20) | NOT NULL | 权限类型 |
|
||
| level | INTEGER | NOT NULL | 层级 |
|
||
| path | VARCHAR(255) | | 路径 |
|
||
| component | VARCHAR(255) | | 组件 |
|
||
| icon | VARCHAR(100) | | 图标 |
|
||
| sort_order | INTEGER | NOT NULL, DEFAULT 0 | 排序 |
|
||
| is_visible | SMALLINT | NOT NULL, DEFAULT 1 | 是否可见 |
|
||
| status | SMALLINT | NOT NULL, DEFAULT 1 | 状态 |
|
||
| description | TEXT | | 描述 |
|
||
| meta | JSONB | | 扩展信息 |
|
||
| is_deleted | SMALLINT | NOT NULL, DEFAULT 0 | 逻辑删除标记 |
|
||
| created_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 创建时间 |
|
||
| updated_at | TIMESTAMP(6) | NOT NULL, DEFAULT now() | 更新时间 |
|
||
|
||
### 2.2 `sys_dict_type`(字典类型表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| dict_type_id | BIGSERIAL | PK | 类型ID |
|
||
| type_code | VARCHAR(50) | NOT NULL, UNIQUE | 类型编码 |
|
||
| type_name | VARCHAR(50) | NOT NULL | 类型名称 |
|
||
| status | SMALLINT | DEFAULT 1 | 状态 |
|
||
| remark | TEXT | | 备注 |
|
||
| created_at | TIMESTAMP | NOT NULL, DEFAULT NOW() | 创建时间 |
|
||
| updated_at | TIMESTAMP | NOT NULL, DEFAULT NOW() | 更新时间 |
|
||
| is_deleted | SMALLINT | DEFAULT 0 | 逻辑删除标记 |
|
||
|
||
**初始化数据:**
|
||
- `sys_common_status`: 通用状态 (启用/禁用)
|
||
- `sys_permission_type`: 权限类型 (目录/菜单/按钮)
|
||
- `sys_common_visibility`: 可见性 (显示/隐藏)
|
||
- `sys_permission_level`: 权限层级 (1, 2, 3)
|
||
- `sys_log_type`: 日志类型 (LOGIN/OPERATION)
|
||
- `sys_param_type`: 参数类型 (String/Number/Boolean/JSON)
|
||
- `sys_log_status`: 操作状态 (成功/失败)
|
||
|
||
### 2.3 `sys_dict_item`(字典项表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| dict_item_id | BIGSERIAL | PK | 字典项ID |
|
||
| type_code | VARCHAR(50) | NOT NULL | 字典类型编码 |
|
||
| item_label | VARCHAR(100) | NOT NULL | 展示文本 |
|
||
| item_value | VARCHAR(100) | NOT NULL | 存储值 |
|
||
| sort_order | INT | DEFAULT 0 | 排序 |
|
||
| status | SMALLINT | DEFAULT 1 | 状态 |
|
||
| created_at | TIMESTAMP | NOT NULL, DEFAULT NOW() | 创建时间 |
|
||
| updated_at | TIMESTAMP | NOT NULL, DEFAULT NOW() | 更新时间 |
|
||
| is_deleted | SMALLINT | DEFAULT 0 | 逻辑删除标记 |
|
||
|
||
索引:
|
||
- `idx_dict_item_type`:`(type_code)`
|
||
- `uk_dict_item_value`:`UNIQUE (type_code, item_value)`
|
||
|
||
### 2.4 `sys_param`(系统参数表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| id | BIGSERIAL | PK | 参数ID |
|
||
| param_key | VARCHAR(100) | NOT NULL, UNIQUE | 参数键 |
|
||
| param_value | TEXT | NOT NULL | 参数值 |
|
||
| param_type | VARCHAR(20) | NOT NULL | 参数类型 |
|
||
| is_system | SMALLINT | DEFAULT 0 | 是否系统内置 |
|
||
| status | SMALLINT | DEFAULT 1 | 状态 |
|
||
| description | TEXT | | 描述 |
|
||
| created_at | TIMESTAMP | NOT NULL, DEFAULT NOW() | 创建时间 |
|
||
|
||
## 3. 日志(租户隔离)
|
||
|
||
### 3.1 `sys_log`(系统日志表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| id | BIGSERIAL | PK | 日志ID |
|
||
| tenant_id | BIGINT | NOT NULL, DEFAULT 0 | 租户ID |
|
||
| user_id | BIGINT | | 用户ID |
|
||
| username | VARCHAR(50) | | 用户名 |
|
||
| log_type | VARCHAR(20) | | 日志类型(如 LOGIN、OPERATION) |
|
||
| operation | VARCHAR(100) | NOT NULL | 操作描述 |
|
||
| method | VARCHAR(200) | | 方法 |
|
||
| params | TEXT | | 请求参数 |
|
||
| status | SMALLINT | DEFAULT 1 | 状态 |
|
||
| ip | VARCHAR(50) | | IP |
|
||
| duration | BIGINT | | 耗时(ms) |
|
||
| created_at | TIMESTAMP | NOT NULL, DEFAULT NOW() | 创建时间 |
|
||
|
||
索引:
|
||
- `idx_log_tenant_type`:`(tenant_id, log_type, created_at)`
|
||
|
||
## 4. 平台配置
|
||
|
||
### 4.1 `sys_platform_config`(平台管理表)
|
||
| 字段 | 类型 | 约束 | 说明 |
|
||
| --- | --- | --- | --- |
|
||
| id | BIGINT | PK | 固定为 1 |
|
||
| project_name | VARCHAR(128) | NOT NULL | 项目名称 |
|
||
| logo_url | VARCHAR(512) | | Logo URL |
|
||
| icon_url | VARCHAR(512) | | Icon URL |
|
||
| login_bg_url | VARCHAR(512) | | 登录页背景 |
|
||
| icp_info | VARCHAR(128) | | 备案信息 |
|
||
| copyright_info | VARCHAR(255) | | 版权信息 |
|
||
| system_description | TEXT | | 系统描述 |
|
||
| created_at | TIMESTAMP | NOT NULL | 创建时间 |
|
||
| updated_at | TIMESTAMP | NOT NULL | 更新时间 |
|
||
|