首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建学生成绩管理系统数据库和数据表

在本项目中,我们使用MySQL8数据库,因此在开始之前,请确保您的电脑已安装MySQL8。

首先,我们可以通过终端测试连接MySQL,输入相应的MySQL命令进行连接;

mysql -u root -p

或者使用可视化工具,比如免费版的Navicat Premium Lite,它已经足够满足本项目的需求。

创建数据库

在创建数据库之前,需要先连接本地服务器(localhost)。连接成功后,右键选择“创建数据库”,如下图所示:

数据库命名为student_system,字符集选择utf8mb4,排序使用第一个默认选项。数据库创建成功后,我们开始设计和创建数据表。

MySQL 数据库表设计

根据项目需求,应用中有两个用户角色——管理员和教师。因此,我们需要创建user表用于管理用户,还需要classes表和students表用于管理班级和学生信息。

1. classes 表

classes 表用于存储班级的基本信息。字段及其属性如下:

创建表时,可以直接在Navicat的查询窗口中,点击对象栏的中的+号执行SQL语句,如下图所示:

创建 classes 表的SQL语句

CREATE TABLE classes (

class_id INT PRIMARY KEY AUTO_INCREMENT,

class_name VARCHAR(255) NOT NULL

);

创建班级表后,数据库中增加了一张班级表,该表包含两个字段:class_id 和 class_name。其中,class_id 是主键且自增。班级表结构简单,主要用于记录班级基本信息。

2. student 表

在学生表中,student_id 作为主键,类型为整型,并自增。学生表还包括学生姓名和学号。其中,学号要求唯一,即每位学生都有一个唯一的学号,因此对该字段设置了唯一性约束。学生姓名则不受此限制,允许班级内有重名的学生,例如两位同学可以同名为“王强”,但学号会不同。性别字段 gender 采用整型存储,以节省内存。存储时,使用1表示男性,2表示女性。此外,class_id 字段表示学生所属班级,它与班级表中的 class_id 建立了关联关系,即一对多的关系——每位学生必然属于一个班级。这里通过外键 FOREIGN KEY 关联到班级表,以保证班级与学生之间的关联性。学生表包含语文、数学和英语三科的成绩字段,这些字段使用浮点型,以便支持带小数的分数,例如60.5或70.5分等。

student 表用于存储学生的基本信息及成绩。字段及其属性如下:

接下来,创建学生表。可以将 CREATE 语句直接复制并运行,代码如下:

创建 student 表的SQL语句

CREATE TABLE student (

student_id INT PRIMARY KEY AUTO_INCREMENT,

student_name VARCHAR(255) NOT NULL,

student_number VARCHAR(255) NOT NULL UNIQUE,

gender INT NOT NULL,

class_id INT NOT NULL,

chinese_score FLOAT,

math_score FLOAT,

english_score FLOAT,

FOREIGN KEY (class_id) REFERENCES classes(class_id)

);

表创建成功后,通过刷新查看新增的 Student 表及其各字段和主键。每个字段的类型也可以进一步查看。

在创建顺序上需注意,班级表 classes 应先于学生表创建,因为学生表中的班级字段需要引用班级表的主键 class_id 作为外键。因此,建议先创建班级表,再创建学生表。

3. user 表

接下来是用户表的创建。用户表主要存储两类用户信息:管理员和教师。用户表的主键为 user_id,并设为自增字段。表中还包括 username、password 和 nickname 等字段。

其中,username(用户名)是唯一的,因为用户登录时需使用独一无二的用户名。nickname(昵称)字段不受唯一性限制。昵称可以自定义,例如,用户名是小写字母的 "zhangsan"(张三),而昵称可以为 "张三老师" 或 "一年一班张三老师",方便管理员识别教师所属班级。

此外,user_role 字段用于区分用户类型:1 表示管理员,2 表示教师。教师可关联多个班级,class_id 字段通过存储班级 ID(例如 "1,2")表示教师同时管理多个班级。对于管理员用户,class_id 可留空,表示其可以管理所有班级。

user 表用于存储系统用户的基本信息及角色信息。字段及其属性如下:

创建 user 表的SQL语句

CREATE TABLE user (

user_id INT PRIMARY KEY AUTO_INCREMENT,

username VARCHAR(255) NOT NULL UNIQUE,

password VARCHAR(255) NOT NULL,

nickname VARCHAR(255),

user_role INT,

class_id VARCHAR(255)

);

设置完成后,创建 User 表并刷新,即可看到表和字段信息。

至此,数据库及各数据表创建完成,并对每个表的字段和类型进行了介绍。如需更详细的信息和创建 SQL 语句,可参考相关文档。

表设计文档手册

1. classes 表

用途: 存储班级的基本信息。

主键: class_id

外键: 无

字段说明:

class_id: 班级的唯一标识符,自增主键。

class_name: 班级的名称,不能为空。

2. student 表

用途: 存储学生的基本信息及成绩。

主键: student_id

外键: class_id 关联到 classes 表的 class_id

字段说明:

student_id: 学生的唯一标识符,自增主键。

student_name: 学生姓名,不能为空。

student_number: 学号,不能为空且唯一。

gender: 性别,1表示“男”,2表示“女”。

class_id: 学生所属班级ID,不能为空,关联 classes 表的 class_id 字段。

chinese_score: 语文成绩,可以为空。

math_score: 数学成绩,可以为空。

english_score: 英语成绩,可以为空。

3. user 表

用途: 存储系统用户的基本信息及权限。

主键: user_id

外键: 无(但 class_id 可以作为逻辑外键,关联 classes 表的 class_id 字段)

字段说明:

user_id: 用户的唯一标识符,自增主键。

username: 用户名,不能为空且唯一。

password: 密码,不能为空。

nickname: 用户昵称,可以为空。

user_role: 用户角色,1表示管理员,2表示老师。

class_id: 管理班级的ID列表,使用逗号分隔的字符串形式保存,如‘1,2,3’。

注意: 为了确保数据库的安全性和数据的完整性,应对用户密码进行加密存储。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OOuvfts3NhhGN8ikW6OjQKQA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券