在数字化教育浪潮下,在线教育系统已成为知识传播的重要载体,而数据库作为系统的“数据中枢”,其表结构设计的合理性直接关系到系统的性能、稳定性与可扩展性,本文将围绕在线教育系统的核心业务需求,拆解关键数据库表的设计逻辑,为系统开发提供清晰的数据架构参考。

用户管理模块:构建多角色身份体系

用户是在线教育系统的核心参与者,需支持学生、教师、管理员等多角色身份,并实现精细化的权限控制。

用户表(user

作用:存储用户基础信息,作为系统用户的唯一标识。
核心字段

  • user_id(用户ID,主键,自增):唯一标识用户,如U1001
  • username(用户名):登录账号,需唯一,支持手机号/邮箱/用户名。
  • password(密码):加密存储(如BCrypt),避免明文泄露。
  • salt(密码盐):配合密码加密使用,增强安全性。
  • nickname(昵称):用户展示名称,如“小明老师”。
  • avatar(头像):头像文件路径或URL。
  • gender(性别):0-未知,1-男,2-女。
  • birthday(出生日期):DATE类型,用于用户画像分析。
  • phone(手机号):关联登录与短信验证,需唯一。
  • email(邮箱):用于通知与找回密码,需唯一。
  • status(账户状态):0-正常,1-冻结,2-注销,控制用户登录权限。
  • create_time(创建时间):TIMESTAMP,记录用户注册时间。
  • update_time(更新时间):TIMESTAMP,记录信息最后修改时间。

角色表(role

作用:定义系统角色,实现权限分层。
核心字段

  • role_id(角色ID,主键):如R001(学生)、R002(教师)、R003(管理员)。
  • role_name(角色名称):中文描述,如“学生角色”。
  • role_code(角色编码):英文标识,如student,用于权限关联。
  • description(角色描述):角色说明,如“可参与课程学习、提交作业”。

用户角色关联表(user_role

作用:解决用户与角色的多对多关系(如一个教师可兼“班主任”角色)。
核心字段

  • id(关联ID,主键,自增)。
  • user_id(用户ID,外键):关联user表。
  • role_id(角色ID,外键):关联role表。
  • create_time(分配时间):记录角色授予时间。

权限表(permission

作用:定义系统操作权限,与角色关联实现权限控制。
核心字段

  • permission_id(权限ID,主键):如P001(课程创建)、P002(作业批改)。
  • permission_name(权限名称):如“创建课程权限”。
  • permission_code(权限编码):如course:create,用于接口鉴权。
  • parent_id(父权限ID):构建权限树(如“课程管理”是“课程创建”的父权限)。
  • type(权限类型):0-菜单权限(前端展示),1-按钮权限(后端操作控制)。

课程管理模块:构建知识体系框架

课程是在线教育的核心产品,需支持课程分类、章节结构、资源管理等,形成完整的知识传递链路。

课程表(course

作用:存储课程基础信息,是课程体系的顶层容器。
核心字段

  • course_id(课程ID,主键):如C1001
  • course_name(课程名称):如“Python入门到实战”。
  • description(课程描述):课程简介,支持富文本。
  • cover_image(封面图):课程封面文件路径。
  • category_id(分类ID,外键):关联课程分类表。
  • teacher_id(教师ID,外键):关联教师用户表。
  • price(课程价格):单位“元”,0表示免费。
  • original_price(原价):用于折扣计算。
  • status(课程状态):0-草稿,1-上架,2-下架,3-已删除。
  • level(课程难度):1-入门,2-进阶,3-高级。
  • duration(课程总时长):单位“秒”,如3600(1小时)。
  • student_count(学习人数):统计课程热度。
  • create_time(创建时间)、update_time(更新时间)。

课程分类表(course_category

作用:构建课程分类体系,支持多级分类(如“计算机编程→Python”)。
核心字段

  • category_id(分类ID,主键):如CAT1001
  • category_name(分类名称):如“Python编程”。
  • parent_id(父分类ID):0表示顶级分类,非0表示子分类。
  • level(分类层级):1-一级分类,2-二级分类,依此类推。
  • sort_order(排序权重):数字越小,排序越靠前。

课程章节表(course_chapter

作用:拆分课程结构,形成“课程→章节”的层级关系。
核心字段

  • chapter_id(章节ID,主键):如CH2001
  • course_id(课程ID,外键):关联课程表。
  • chapter_name(章节名称):如“第1章:Python基础语法”。
  • chapter_order(章节顺序):数字,控制章节展示顺序。
  • is_free(是否免费):0-付费,1-免费(吸引试学)。

课程资源表(course_resource

作用:存储章节下的具体学习资源(视频、文档、习题等)。
核心字段

  • resource_id(资源ID,主键):如RES3001
  • chapter_id(章节ID,外键):关联章节表