告别混乱!如何打造一个全生命周期学员管理系统(中篇)

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

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

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

核心业务实体与数据模型

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

1. 学员信息:Students

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

字段名类型描述备注
student_idINT学员ID (主键)唯一标识
nameVARCHAR(100)姓名
genderENUM性别 (男/女/未知)
date_of_birthDATE出生日期用于计算年龄
contact_phoneVARCHAR(20)联系电话学员本人电话
contact_emailVARCHAR(100)联系邮箱
id_card_numberVARCHAR(30)身份证号码可选,用于身份验证
addressVARCHAR(255)家庭住址
source_channelVARCHAR(100)来源渠道 (如:线上广告,地推,转介绍)用于统计分析
current_statusENUM当前状态 (潜在, 在读, 休学, 退费, 毕业)核心状态,通过状态管理流程更新
created_atDATETIME创建时间
updated_atDATETIME最后更新时间
notesTEXT备注信息

2. 家长信息:Parents

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

字段名类型描述备注
parent_idINT家长ID (主键)唯一标识
student_idINT学员ID (外键)关联到 Students
parent_nameVARCHAR(100)姓名
relationshipVARCHAR(50)与学员关系 (如:父亲,母亲,祖父)
phone_numberVARCHAR(20)联系电话
wechat_idVARCHAR(100)微信ID
emailVARCHAR(100)邮箱
is_primaryBOOLEAN是否主要联系人默认为 False,一个学员可设一个主要联系人
created_atDATETIME创建时间
updated_atDATETIME最后更新时间

3. 销售人员管理:SalesPersonnel

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

字段名类型描述备注
sales_idINT销售人员ID (主键)唯一标识
user_idINT用户ID (外键)关联到 Users 表,实现登录和系统操作权限
nameVARCHAR(100)姓名销售人员姓名
phone_numberVARCHAR(20)联系电话
emailVARCHAR(100)邮箱
positionVARCHAR(50)职位 (如:销售顾问, 销售经理)用于权限和管理层级
hire_dateDATE入职日期
leave_dateDATE离职日期如果离职,记录离职日期
is_activeBOOLEAN是否在职离职后设为 False
created_atDATETIME创建时间
updated_atDATETIME最后更新时间
notesTEXT备注

4. 潜在客户管理:Leads

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

字段名类型描述备注
lead_idINT潜在学员ID (主键)唯一标识
nameVARCHAR(100)姓名
contact_phoneVARCHAR(20)联系电话
contact_emailVARCHAR(100)联系邮箱
source_channelVARCHAR(100)来源渠道Students 表的 source_channel
consult_dateDATE咨询日期首次咨询日期
follow_up_statusENUM跟进状态 (新咨询, 首次沟通, 意向明确, 待报名, 已流失, 已转化)核心跟进状态
intended_coursesVARCHAR(255)意向课程逗号分隔的课程名称
assigned_sales_idINT分配销售人员ID (外键)关联到 SalesPersonnel
latest_follow_up_atDATETIME最近跟进时间
created_atDATETIME创建时间
updated_atDATETIME最后更新时间
notesTEXT备注
converted_to_student_idINT转化后学员ID (外键)如果转化成功,关联到 Students

5. 跟进记录:FollowUpRecords

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

字段名类型描述备注
record_idINT记录ID (主键)唯一标识
lead_idINT潜在学员ID (外键)可为空,如果是非潜在学员的跟进
student_idINT学员ID (外键)可为空,如果是潜在学员的跟进
follow_up_dateDATETIME跟进日期
follow_up_methodVARCHAR(50)跟进方式 (电话, 微信, 面谈, 短信)
follow_up_contentTEXT跟进内容详细沟通记录
next_follow_up_planTEXT下次跟进计划
follow_up_by_user_idINT跟进人ID (外键)关联到 Users 表 (记录操作该记录的系统用户)
created_atDATETIME创建时间

6. 报名信息:Enrollments

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

字段名类型描述备注
enrollment_idINT报名ID (主键)唯一标识
student_idINT学员ID (外键)关联到 Students
course_idINT课程ID (外键)关联到 Courses
class_idINT班级ID (外键)关联到 Classes
enrollment_dateDATE报名日期
total_feeDECIMAL(10,2)总费用
paid_amountDECIMAL(10,2)已付金额
payment_methodVARCHAR(50)支付方式 (微信支付, 支付宝, 银行卡, 现金)
contract_numberVARCHAR(100)合同编号
contract_statusENUM合同状态 (未签订, 已签订, 作废)
remaining_lessonsINT剩余课时报名时初始值,每次考勤扣减
enrollment_statusENUM报名状态 (生效中, 已结束, 已退费, 已转班)
created_by_user_idINT操作人ID (外键)关联到 Users
created_atDATETIME创建时间
updated_atDATETIME最后更新时间

7. 学员状态变更:StudentStatusChanges

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

字段名类型描述备注
change_idINT变更ID (主键)唯一标识
student_idINT学员ID (外键)关联到 Students
enrollment_idINT报名ID (外键)如涉及到具体报名课程的变更
old_statusENUM原状态
new_statusENUM新状态
change_reasonTEXT变更原因
request_dateDATETIME申请日期
requested_by_user_idINT申请人ID (外键)关联到 Users
approval_statusENUM审批状态 (待审批, 已批准, 已拒绝)
approved_by_user_idINT审批人ID (外键)关联到 Users
approval_dateDATETIME审批日期
approval_notesTEXT审批意见
created_atDATETIME创建时间

8. 考勤记录:AttendanceRecords

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

字段名类型描述备注
attendance_idINT考勤ID (主键)唯一标识
student_idINT学员ID (外键)关联到 Students
class_schedule_idINT课程安排ID (外键)关联到 ClassSchedules 表(假设有此表)
attendance_dateDATE考勤日期
lesson_numberINT课时序号如第1节课,第2节课
attendance_statusENUM考勤状态 (出勤, 缺勤, 迟到, 请假)
notesTEXT备注如迟到原因,请假类型
recorded_by_user_idINT记录人ID (外键)关联到 Users
created_atDATETIME创建时间
updated_atDATETIME最后更新时间对于补录操作

9. 学员评价:StudentReviews

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

字段名类型描述备注
review_idINT评价ID (主键)唯一标识
student_idINT学员ID (外键)关联到 Students
course_idINT课程ID (外键)关联到 Courses
teacher_idINT教师ID (外键)关联到 Users 表(角色为教师)
rating_overallINT整体评分 (1-5)
rating_courseINT课程评分 (1-5)
rating_teacherINT教师评分 (1-5)
comment_textTEXT评价内容
review_dateDATETIME评价日期
replied_by_user_idINT回复人ID (外键)关联到 Users
reply_contentTEXT回复内容
reply_dateDATETIME回复日期

10. 续费提醒:RenewalReminders

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

字段名类型描述备注
reminder_idINT提醒ID (主键)唯一标识
student_idINT学员ID (外键)关联到 Students
enrollment_idINT报名ID (外键)关联到 Enrollments 表,针对特定报名
reminder_typeENUM提醒类型 (课时不足, 合同到期)
trigger_valueINT触发值如剩余课时数,或到期前天数
due_dateDATE预计到期/续费日期
assigned_to_sales_idINT负责人销售人员ID (外键)关联到 SalesPersonnel
reminder_statusENUM提醒状态 (待处理, 已处理, 已忽略)
reminded_atDATETIME提醒生成时间
processed_atDATETIME处理时间
notesTEXT备注

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

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

字段名类型描述备注
inheritance_idINT继承记录ID (主键)唯一标识
original_sales_idINT原销售人员ID (外键)关联到 SalesPersonnel
new_sales_idINT新销售人员ID (外键)关联到 SalesPersonnel
inheritance_dateDATETIME继承日期执行继承操作的时间
inherited_leads_countINT继承的潜在客户数量
operation_by_user_idINT操作人ID (外键)关联到 Users 表,记录谁执行的继承操作
notesTEXT备注继承原因或特殊说明

辅助表(系统层面)

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

12. 用户表:Users

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

字段名类型描述备注
user_idINT用户ID (主键)唯一标识
usernameVARCHAR(50)用户名登录账号
password_hashVARCHAR(255)密码哈希
roleENUM角色 (管理员, 教务, 教师)销售人员的销售属性由 SalesPersonnel 表定义,但他们也需在此表有登录权限
nameVARCHAR(100)姓名SalesPersonnel.name 或其他具体人员表保持一致
emailVARCHAR(100)邮箱
phoneVARCHAR(20)电话
is_activeBOOLEAN是否活跃
created_atDATETIME创建时间
updated_atDATETIME最后更新时间

13. 课程表:Courses

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

字段名类型描述备注
course_idINT课程ID (主键)唯一标识
course_nameVARCHAR(100)课程名称
descriptionTEXT课程描述
total_lessonsINT总课时数
priceDECIMAL(10,2)课程价格
is_activeBOOLEAN是否活跃

14. 班级表:Classes

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

字段名类型描述备注
class_idINT班级ID (主键)唯一标识
class_nameVARCHAR(100)班级名称
course_idINT课程ID (外键)关联到 Courses
teacher_idINT班主任ID (外键)关联到 Users 表(角色为教师)
start_dateDATE开班日期
end_dateDATE结课日期
capacityINT班级容量
current_studentsINT当前学员数

15. 课程安排表:ClassSchedules

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

字段名类型描述备注
schedule_idINT安排ID (主键)唯一标识
class_idINT班级ID (外键)关联到 Classes
lesson_dateDATE上课日期
start_timeTIME开始时间
end_timeTIME结束时间
teacher_idINT授课教师ID (外键)关联到 Users 表(角色为教师)
classroomVARCHAR(50)教室

总结

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低代码布道师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值