用mysql和workbench实现一个数据库设计系统使用model建表不少于5张表有主键外键索引函数视图触发器。
本答案使用MySQL和Workbench实现一个简单的学生信息管理系统,包括5张表:学生信息表、课程表、成绩表、教师表、班级表。其中,学生信息表、教师表、班级表都有主键和索引,成绩表有外键,视图用于展示学生的成绩情况,触发器用于在插入数据时自动更新学生的平均成绩。
以下是数据库设计的详细步骤:
- 创建数据库
在MySQL中创建一个名为“student_management”的数据库。
- 创建学生信息表
使用Model建表创建学生信息表,包括以下字段:
- id:主键,自增长的学生ID
- name:学生姓名
- gender:学生性别
- birthday:学生生日
- class_id:学生所在班级的ID,外键
在“id”字段上创建主键索引,同时在“class_id”字段上创建外键索引。
- 创建课程表
使用Model建表创建课程表,包括以下字段:
- id:主键,自增长的课程ID
- name:课程名称
- teacher_id:授课教师的ID,外键
在“id”字段上创建主键索引,同时在“teacher_id”字段上创建外键索引。
- 创建成绩表
使用Model建表创建成绩表,包括以下字段:
- id:主键,自增长的成绩ID
- student_id:学生的ID,外键
- course_id:课程的ID,外键
- score:学生在该课程中的成绩
在“id”字段上创建主键索引,同时在“student_id”和“course_id”字段上创建外键索引。
- 创建教师表
使用Model建表创建教师表,包括以下字段:
- id:主键,自增长的教师ID
- name:教师姓名
在“id”字段上创建主键索引。
- 创建班级表
使用Model建表创建班级表,包括以下字段:
- id:主键,自增长的班级ID
- name:班级名称
在“id”字段上创建主键索引。
- 创建视图
创建一个名为“student_scores”的视图,用于展示每个学生的成绩情况。该视图的字段包括:
- student_id:学生的ID
- student_name:学生的姓名
- course_name:课程的名称
- score:学生在该课程中的成绩
该视图的SQL语句如下:
CREATE VIEW student_scores AS
SELECT s.id AS student_id, s.name AS student_name, c.name AS course_name, sc.score
FROM students s
INNER JOIN scores sc ON s.id = sc.student_id
INNER JOIN courses c ON sc.course_id = c.id;
在“student_id”字段上创建索引。
- 创建触发器
创建一个名为“update_average_score”的触发器,用于在插入成绩表中的数据时自动更新学生的平均成绩。该触发器的SQL语句如下:
CREATE TRIGGER update_average_score AFTER INSERT ON scores
FOR EACH ROW
BEGIN
DECLARE total_score DECIMAL(5, 2);
DECLARE course_count INT;
SELECT SUM(score), COUNT(*) INTO total_score, course_count
FROM scores
WHERE student_id = NEW.student_id;
UPDATE students SET average_score = total_score / course_count WHERE id = NEW.student_id;
END;
在“students”表的“average_score”字段上创建索引。
至此,学生信息管理系统的数据库设计完成
原文地址: https://www.cveoy.top/t/topic/fl4x 著作权归作者所有。请勿转载和采集!