在数字化教育浪潮下,在线教育系统已成为知识传播的重要载体,而数据库作为系统的“数据中枢”,其表结构设计的合理性直接关系到系统的性能、稳定性与可扩展性,本文将围绕在线教育系统的核心业务需求,拆解关键数据库表的设计逻辑,为系统开发提供清晰的数据架构参考。
用户管理模块:构建多角色身份体系
用户是在线教育系统的核心参与者,需支持学生、教师、管理员等多角色身份,并实现精细化的权限控制。
用户表(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,外键):关联章节表






