在数字化教育浪潮下,在线教育系统已成为知识传播的核心载体,尚硅谷作为IT培训领域的领军者,其在线教育系统通过严谨的SQL脚本设计,支撑了从用户管理、课程运营到学习追踪的全流程数据管理,本文将深入解析尚硅谷在线教育系统的SQL脚本设计逻辑、核心模块及实践价值,为同类系统开发提供参考。
SQL脚本的核心作用
尚硅谷在线教育系统是一个集“教、学、练、测、评”于一体的综合性平台,涵盖用户管理、课程中心、订单支付、学习进度、考试测评等核心模块,SQL脚本作为系统与数据库交互的“桥梁”,承担着数据存储、查询、更新、一致性保障等关键任务,其设计直接关系到系统的稳定性、性能和可扩展性。
用户注册时的数据写入、课程搜索时的复杂查询、下单时的库存与事务处理、学习进度的实时更新等场景,均依赖高效、健壮的SQL脚本实现,通过合理的表结构设计、索引优化和事务控制,SQL脚本确保了海量教育数据的有序流转,为系统功能落地提供了底层支撑。
核心模块SQL脚本设计解析
用户管理模块:构建多维度用户画像
用户管理模块是系统的入口,需支持用户注册、登录、信息修改、角色分配等功能,其核心表设计如下:
(1)用户基础表(user_info)
CREATE TABLE user_info (
user_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
password VARCHAR(100) NOT NULL COMMENT '密码(加密存储)',
email VARCHAR(100) NOT NULL UNIQUE COMMENT '邮箱',
phone VARCHAR(20) NOT NULL UNIQUE COMMENT '手机号',
real_name VARCHAR(50) COMMENT '真实姓名',
avatar VARCHAR(255) COMMENT '头像URL',
gender TINYINT DEFAULT 0 COMMENT '性别(0:未知 1:男 2:女)',
birth_date DATE COMMENT '出生日期',
register_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
last_login_time DATETIME COMMENT '最后登录时间',
status TINYINT DEFAULT 1 COMMENT '状态(0:禁用 1:正常)',
INDEX idx_username (username),
INDEX idx_phone (phone),
INDEX idx_email (email)
) COMMENT '用户基础信息表';
设计亮点:
- 主键自增
user_id确保用户唯一性; - 密码字段使用
VARCHAR(100)支持加密存储(如BCrypt); - 用户名、手机号、邮箱添加唯一索引,避免重复注册;
- 索引设计优化登录、查询场景的性能。
(2)角色与权限表(role、permission、user_role)
-- 角色表
CREATE TABLE role (
role_id TINYINT PRIMARY KEY AUTO_INCREMENT COMMENT '角色ID',
role_name VARCHAR(20) NOT NULL UNIQUE COMMENT '角色名称(如:学员、讲师、管理员)',
description VARCHAR(100) COMMENT '角色描述'
) COMMENT '角色表';
-- 权限表
CREATE TABLE permission (
permission_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '权限ID',
permission_name VARCHAR(50) NOT NULL UNIQUE COMMENT '权限名称(如:course:create、order:pay)',
description VARCHAR(100) COMMENT '权限描述'
) COMMENT '权限表';
-- 用户角色关联表
CREATE TABLE user_role (
user_id BIGINT NOT NULL COMMENT '用户ID',
role_id TINYINT NOT NULL COMMENT '角色ID',
PRIMARY KEY (user_id, role_id),
FOREIGN KEY (user_id) REFERENCES user_info(user_id),
FOREIGN KEY (role_id) REFERENCES role(role_id)
) COMMENT '用户角色关联表';
设计亮点:
- 采用“角色-权限”模型,实现权限的灵活分配;
- 用户与角色通过中间表关联,支持用户多角色(如“讲师+管理员”)。
课程管理模块:支撑海量课程的高效运营
课程是在线教育的核心,课程管理模块需支持课程分类、章节课时、课程标签等功能,确保课程信息的结构化存储与快速检索。
(1)课程基础表(course)
CREATE TABLE course (
course_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '课程ID',
course_name VARCHAR(100) NOT NULL COMMENT '课程名称',
description TEXT COMMENT '课程描述',
category_id INT NOT NULL COMMENT '分类ID(关联course_category表)',
teacher_id BIGINT NOT NULL COMMENT '讲师ID(关联user_info表)',
price DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '课程价格',
original_price DECIMAL(10,2) COMMENT '原价',
cover_image VARCHAR(255) COMMENT '封面图URL',
status TINYINT DEFAULT 1 COMMENT '状态(0:下架 1:上架 2: draft)',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_category_id (category_id),
INDEX idx_teacher_id (teacher






