# 租户表数据库创建说明 ## 创建步骤 ### 方法1:执行独立的 SQL 文件(推荐) ```bash # 在 MySQL 中执行 mysql -u root -p your_database < server/database/yz_tenants.sql ``` ### 方法2:手动执行 SQL ```sql -- 1. 进入 MySQL mysql -u root -p your_database -- 2. 执行 SQL 脚本 SOURCE server/database/yz_tenants.sql; ``` ### 方法3:在 MySQL 客户端中复制粘贴 直接打开 `server/database/yz_tenants.sql` 文件,复制所有内容,在 MySQL 客户端中执行。 ## 创建的表 **yz_tenants** - 租户管理表 ### 表结构说明 #### 基本信息字段 - `id` - 租户ID(主键,自增) - `name` - 租户名称(必填) - `code` - 租户编码(必填,唯一) - `owner` - 负责人(必填) - `phone` - 联系电话(可选) - `email` - 邮箱地址(可选) #### 状态字段 - `status` - 状态:`enabled`(启用)或 `disabled`(禁用) - `audit_status` - 审核状态: - `pending` - 待审核 - `approved` - 已通过 - `rejected` - 已拒绝 #### 审核信息字段 - `audit_comment` - 审核意见(可选) - `audit_by` - 审核人(可选) - `audit_time` - 审核时间(可选) #### 其他字段 - `remark` - 备注(可选) - `create_time` - 创建时间(自动) - `update_time` - 更新时间(自动) - `create_by` - 创建人(可选) - `update_by` - 更新人(可选) ### 索引说明 - `uk_code` - 租户编码唯一索引 - `idx_name` - 租户名称索引 - `idx_owner` - 负责人索引 - `idx_status` - 状态索引 - `idx_audit_status` - 审核状态索引 - `idx_create_time` - 创建时间索引 ## 测试数据 SQL 文件中包含 10 条测试数据,涵盖了以下场景: 1. **默认租户** - 已通过审核的系统默认租户 2. **示例租户A** - 已通过审核的演示租户 3. **示例租户B** - 待审核的租户 4. **新申请租户C** - 待审核的新申请租户 5. **已拒绝租户D** - 被拒绝的租户示例 6. **企业租户E** - 已通过审核的企业级租户 7. **测试租户F** - 已通过审核的测试环境租户 8. **禁用租户G** - 已通过审核但被禁用的租户 9. **小公司租户H** - 待审核的小型公司 10. **个人开发者I** - 已通过审核的个人开发者账户 ## 验证创建 ```sql -- 查看租户表结构 DESC yz_tenants; -- 查看所有租户数据 SELECT * FROM yz_tenants; -- 查看特定状态的租户 SELECT * FROM yz_tenants WHERE audit_status = 'pending'; SELECT * FROM yz_tenants WHERE status = 'enabled'; -- 查看租户统计 SELECT audit_status, COUNT(*) as count FROM yz_tenants GROUP BY audit_status; ``` ## 如果表已存在 如果想重新创建表(会清空现有数据): ```sql DROP TABLE IF EXISTS yz_tenants; ``` 然后再执行创建脚本。 ## 与其他表的关系 租户表是系统中重要的基础表: - `yz_files` 表中的 `tenant_id` 字段引用租户编码(VARCHAR 类型,不是外键) - 未来可能会在 `yz_users` 表中添加 `tenant_id` 字段来关联租户 ## 注意事项 1. **租户编码唯一性**:`code` 字段设置了唯一索引,确保每个租户编码都是唯一的 2. **审核流程**:新创建的租户默认 `audit_status` 为 `pending`(待审核) 3. **状态管理**:租户可以同时拥有 `status` 和 `audit_status` 两个状态字段,分别控制启用状态和审核状态 4. **时间字段**:`create_time` 和 `update_time` 会自动管理,无需手动设置