在上一篇中,我们探讨了教育培训机构在学员管理中面临的痛点,并展望了一个全面、高效的学员管理系统应具备的核心功能模块。我们提到,要实现这些复杂而精细的功能,一个健壮的后端数据结构是整个系统的基石。

今天,我们将深入系统的“地基”——数据库表结构设计。一个清晰、合理的数据模型能确保信息的完整性、一致性,并为上层应用的灵活扩展打下坚实基础。

我们根据学员从潜在客户到最终毕业的全生命周期,设计了一系列相互关联的数据表。

核心业务实体与数据模型

为了更好地管理学员的全生命周期,我们将系统拆分为以下几个核心业务实体,并为每个实体设计了对应的数据表:

1. 学员信息:Students

这是系统的核心,记录学员的基本档案。

字段名 类型 描述 备注
student_id INT 学员ID (主键) 唯一标识
name VARCHAR(100) 姓名
gender ENUM 性别 (男/女/未知)
date_of_birth DATE 出生日期 用于计算年龄
contact_phone VARCHAR(20) 联系电话 学员本人电话
contact_email VARCHAR(100) 联系邮箱
id_card_number VARCHAR(30) 身份证号码 可选,用于身份验证
address VARCHAR(255) 家庭住址
source_channel VARCHAR(100) 来源渠道 (如:线上广告,地推,转介绍) 用于统计分析
current_status ENUM 当前状态 (潜在, 在读, 休学, 退费, 毕业) 核心状态,通过状态管理流程更新
created_at DATETIME 创建时间
updated_at DATETIME 最后更新时间
notes TEXT 备注信息

2. 家长信息:Parents

考虑到学员的年龄和联系方式多样性,单独的家长表能更好地管理家庭联系人。

字段名 类型 描述 备注
parent_id INT 家长ID (主键) 唯一标识
student_id INT 学员ID (外键) 关联到 Students
parent_name VARCHAR(100) 姓名
relationship VARCHAR(50) 与学员关系 (如:父亲,母亲,祖父)
phone_number VARCHAR(20) 联系电话
wechat_id VARCHAR(100) 微信ID
email VARCHAR(100) 邮箱
is_primary BOOLEAN 是否主要联系人 默认为 False,一个学员可设一个主要联系人
created_at DATETIME 创建时间
updated_at DATETIME 最后更新时间

3. 销售人员管理:SalesPersonnel

为了更灵活地管理销售团队,我们将其从通用用户角色中分离,并加入了职位和离职日期等字段,为后续的客户继承打下基础。

字段名 类型 描述 备注
sales_id INT 销售人员ID (主键) 唯一标识
user_id INT 用户ID (外键) 关联到 Users 表,实现登录和系统操作权限
name VARCHAR(100) 姓名 销售人员姓名
phone_number VARCHAR(20) 联系电话
email VARCHAR(100) 邮箱
position VARCHAR(50) 职位 (如:销售顾问, 销售经理) 用于权限和管理层级
hire_date DATE 入职日期
leave_date DATE 离职日期 如果离职,记录离职日期
is_active BOOLEAN 是否在职 离职后设为 False
created_at DATETIME 创建时间
updated_at DATETIME 最后更新时间
notes TEXT 备注

4. 潜在客户管理:Leads

这是CRM的核心,用于追踪和转化潜在客户。现在,assigned_sales_id 将直接指向我们的 SalesPersonnel 表。

字段名 类型 描述 备注
lead_id INT 潜在学员ID (主键) 唯一标识
name VARCHAR(100) 姓名
contact_phone VARCHAR(20) 联系电话
contact_email VARCHAR(100) 联系邮箱
source_channel VARCHAR(100) 来源渠道 Students 表的 source_channel
consult_date DATE 咨询日期 首次咨询日期
follow_up_status ENUM 跟进状态 (新咨询, 首次沟通, 意向明确, 待报名, 已流失, 已转化) 核心跟进状态
intended_courses VARCHAR(255) 意向课程 逗号分隔的课程名称
assigned_sales_id INT 分配销售人员ID (外键) 关联到 SalesPersonnel
latest_follow_up_at DATETIME 最近跟进时间
created_at DATETIME 创建时间
updated_at DATETIME 最后更新时间
notes TEXT 备注
converted_to_student_id INT 转化后学员ID (外键) 如果转化成功,关联到 Students

5. 跟进记录:FollowUpRecords

记录每次与潜在客户或学员的沟通,确保跟进历史完整。

字段名 类型 描述 备注
record_id INT 记录ID (主键) 唯一标识
lead_id INT 潜在学员ID (外键) 可为空,如果是非潜在学员的跟进
student_id INT 学员ID (外键) 可为空,如果是潜在学员的跟进
follow_up_date DATETIME 跟进日期
follow_up_method VARCHAR(50) 跟进方式 (电话, 微信, 面谈, 短信)
follow_up_content TEXT 跟进内容 详细沟通记录
next_follow_up_plan TEXT 下次跟进计划
follow_up_by_user_id INT 跟进人ID (外键) 关联到 Users 表 (记录操作该记录的系统用户)
created_at DATETIME 创建时间

6. 报名信息:Enrollments

记录学员报名课程的详细情况,包括费用和合同状态。

字段名 类型 描述 备注
enrollment_id INT 报名ID (主键) 唯一标识
student_id INT 学员ID (外键) 关联到 Students
course_id INT 课程ID (外键) 关联到 Courses
class_id INT 班级ID (外键) 关联到 Classes
enrollment_date DATE 报名日期
total_fee DECIMAL(10,2) 总费用
paid_amount DECIMAL(10,2) 已付金额
payment_method VARCHAR(50) 支付方式 (微信支付, 支付宝, 银行卡, 现金)
contract_number VARCHAR(100) 合同编号
contract_status ENUM 合同状态 (未签订, 已签订, 作废)
remaining_lessons INT 剩余课时 报名时初始值,每次考勤扣减
enrollment_status ENUM 报名状态 (生效中, 已结束, 已退费, 已转班)
created_by_user_id INT 操作人ID (外键) 关联到 Users
created_at DATETIME 创建时间
updated_at DATETIME 最后更新时间

7. 学员状态变更:StudentStatusChanges

追踪学员状态的历史变化,并支持审批流程。

字段名 类型 描述 备注
change_id INT 变更ID (主键) 唯一标识
student_id INT 学员ID (外键) 关联到 Students
enrollment_id INT 报名ID (外键) 如涉及到具体报名课程的变更
old_status ENUM 原状态
new_status ENUM 新状态
change_reason TEXT 变更原因
request_date DATETIME 申请日期
requested_by_user_id INT 申请人ID (外键) 关联到 Users
approval_status ENUM 审批状态 (待审批, 已批准, 已拒绝)
approved_by_user_id INT 审批人ID (外键) 关联到 Users
approval_date DATETIME 审批日期
approval_notes TEXT 审批意见
created_at DATETIME 创建时间

8. 考勤记录:AttendanceRecords

记录学员每次上课的出勤情况,确保课时消耗的准确性。

字段名 类型 描述 备注
attendance_id INT 考勤ID (主键) 唯一标识
student_id INT 学员ID (外键) 关联到 Students
class_schedule_id INT 课程安排ID (外键) 关联到 ClassSchedules 表(假设有此表)
attendance_date DATE 考勤日期
lesson_number INT 课时序号 如第1节课,第2节课
attendance_status ENUM 考勤状态 (出勤, 缺勤, 迟到, 请假)
notes TEXT 备注 如迟到原因,请假类型
recorded_by_user_id INT 记录人ID (外键) 关联到 Users
created_at DATETIME 创建时间
updated_at DATETIME 最后更新时间 对于补录操作

9. 学员评价:StudentReviews

收集和管理学员对课程和教师的反馈,助力教学质量提升。

字段名 类型 描述 备注
review_id INT 评价ID (主键) 唯一标识
student_id INT 学员ID (外键) 关联到 Students
course_id INT 课程ID (外键) 关联到 Courses
teacher_id INT 教师ID (外键) 关联到 Users 表(角色为教师)
rating_overall INT 整体评分 (1-5)
rating_course INT 课程评分 (1-5)
rating_teacher INT 教师评分 (1-5)
comment_text TEXT 评价内容
review_date DATETIME 评价日期
replied_by_user_id INT 回复人ID (外键) 关联到 Users
reply_content TEXT 回复内容
reply_date DATETIME 回复日期

10. 续费提醒:RenewalReminders

自动化生成续费提醒,确保关键客户的及时跟进。现在,负责人明确指向 SalesPersonnel

字段名 类型 描述 备注
reminder_id INT 提醒ID (主键) 唯一标识
student_id INT 学员ID (外键) 关联到 Students
enrollment_id INT 报名ID (外键) 关联到 Enrollments 表,针对特定报名
reminder_type ENUM 提醒类型 (课时不足, 合同到期)
trigger_value INT 触发值 如剩余课时数,或到期前天数
due_date DATE 预计到期/续费日期
assigned_to_sales_id INT 负责人销售人员ID (外键) 关联到 SalesPersonnel
reminder_status ENUM 提醒状态 (待处理, 已处理, 已忽略)
reminded_at DATETIME 提醒生成时间
processed_at DATETIME 处理时间
notes TEXT 备注

11. 潜在客户继承记录:LeadInheritanceRecords

这是一个非常重要的管理表,它解决了销售人员离职后潜在客户资产的平稳移交问题,保证业务连续性。

字段名 类型 描述 备注
inheritance_id INT 继承记录ID (主键) 唯一标识
original_sales_id INT 原销售人员ID (外键) 关联到 SalesPersonnel
new_sales_id INT 新销售人员ID (外键) 关联到 SalesPersonnel
inheritance_date DATETIME 继承日期 执行继承操作的时间
inherited_leads_count INT 继承的潜在客户数量
operation_by_user_id INT 操作人ID (外键) 关联到 Users 表,记录谁执行的继承操作
notes TEXT 备注 继承原因或特殊说明

辅助表(系统层面)

这些表是整个系统运行的基础,为核心业务表提供支撑数据。

12. 用户表:Users

管理所有能登录系统的人员。

字段名 类型 描述 备注
user_id INT 用户ID (主键) 唯一标识
username VARCHAR(50) 用户名 登录账号
password_hash VARCHAR(255) 密码哈希
role ENUM 角色 (管理员, 教务, 教师) 销售人员的销售属性由 SalesPersonnel 表定义,但他们也需在此表有登录权限
name VARCHAR(100) 姓名 SalesPersonnel.name 或其他具体人员表保持一致
email VARCHAR(100) 邮箱
phone VARCHAR(20) 电话
is_active BOOLEAN 是否活跃
created_at DATETIME 创建时间
updated_at DATETIME 最后更新时间

13. 课程表:Courses

定义机构提供的所有课程。

字段名 类型 描述 备注
course_id INT 课程ID (主键) 唯一标识
course_name VARCHAR(100) 课程名称
description TEXT 课程描述
total_lessons INT 总课时数
price DECIMAL(10,2) 课程价格
is_active BOOLEAN 是否活跃

14. 班级表:Classes

组织学员上课的具体班级。

字段名 类型 描述 备注
class_id INT 班级ID (主键) 唯一标识
class_name VARCHAR(100) 班级名称
course_id INT 课程ID (外键) 关联到 Courses
teacher_id INT 班主任ID (外键) 关联到 Users 表(角色为教师)
start_date DATE 开班日期
end_date DATE 结课日期
capacity INT 班级容量
current_students INT 当前学员数

15. 课程安排表:ClassSchedules

班级的具体上课时间和地点。

字段名 类型 描述 备注
schedule_id INT 安排ID (主键) 唯一标识
class_id INT 班级ID (外键) 关联到 Classes
lesson_date DATE 上课日期
start_time TIME 开始时间
end_time TIME 结束时间
teacher_id INT 授课教师ID (外键) 关联到 Users 表(角色为教师)
classroom VARCHAR(50) 教室

总结

通过上述详细的表结构设计,我们为学员管理系统的构建奠定了坚实的基础。每一个表都承载着特定的业务信息,并通过外键关联,使得不同模块之间的数据能够流畅地交互和查询。这种精细化的设计不仅能解决当前面临的“痛点”,也为未来系统的扩展和功能迭代预留了空间。

在下一篇博客中,我们将结合低代码平台的特点,探讨如何将这些数据模型映射到具体的页面和操作中,实现我们在第一篇中构想的各项功能,敬请期待!

Logo

低代码爱好者的网上家园

更多推荐