接下来飞算AI就给出了他自己对于学生管理系统的理解。他将任务分为十六个需求点,将任务切割以便于我们进行调整,看起来他对于项目的理解还算到位,就按照这个思路让他开始设计。
接着我们生成对应的数据库表格。总共生成了十二个表格,十二个表格不在一一展示了。说实话,他的表格设计能力还算可以。数据库设计可以分为两类,第一种是基于已经存在的数据库进行设计,这时候会分析我们的数据库表格,进行专门的定制。还有一种就是新建数据库进行设计,我们就是完全遵循飞算AI给出的SQL进行表格创建,这里我选择的是新创建数据库。
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
password VARCHAR(255) NOT NULL COMMENT '密码',
email VARCHAR(100) UNIQUE COMMENT '邮箱',
phone_number VARCHAR(20) UNIQUE COMMENT '手机号',
role ENUM('teacher', 'student', 'admin') NOT NULL COMMENT '用户角色',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='用户管理';
CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '学生ID',
user_id INT NOT NULL COMMENT '用户ID',
name VARCHAR(50) NOT NULL COMMENT '姓名',
age INT COMMENT '年龄',
gender ENUM('male', 'female') COMMENT '性别',
major VARCHAR(100) COMMENT '专业',
class_id INT COMMENT '班级ID',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='学生信息管理';
CREATE TABLE teachers (
teacher_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '教师ID',
user_id INT NOT NULL COMMENT '用户ID',
name VARCHAR(50) NOT NULL COMMENT '姓名',
gender ENUM('male', 'female') COMMENT '性别',
title VARCHAR(50) COMMENT '职称',
department VARCHAR(100) COMMENT '所属部门',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='教师信息管理';
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '课程ID',
name VARCHAR(100) NOT NULL COMMENT '课程名称',
description TEXT COMMENT '课程描述',
teacher_id INT COMMENT '教师ID',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='课程信息管理';
CREATE TABLE classes (
class_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '班级ID',
name VARCHAR(50) NOT NULL COMMENT '班级名称',
grade VARCHAR(20) COMMENT '年级',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='班级信息管理';
CREATE TABLE scores (
score_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '成绩ID',
student_id INT NOT NULL COMMENT '学生ID',
course_id INT NOT NULL COMMENT '课程ID',
score DECIMAL(5,2) COMMENT '分数',
teacher_id INT COMMENT '教师ID',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='成绩管理';
CREATE TABLE announcements (
announcement_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '公告ID',
title VARCHAR(100) NOT NULL COMMENT '公告标题',
content TEXT NOT NULL COMMENT '公告内容',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='公告管理';
CREATE TABLE notifications (
notification_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '通知ID',
sender_id INT NOT NULL COMMENT '发送者ID',
receiver_id INT NOT NULL COMMENT '接收者ID',
title VARCHAR(100) NOT NULL COMMENT '通知标题',
content TEXT NOT NULL COMMENT '通知内容',
is_read BOOLEAN DEFAULT FALSE COMMENT '是否已读',
send_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '发送时间',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='通知管理';
CREATE TABLE schedules (
schedule_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '课表ID',
teacher_id INT NOT NULL COMMENT '教师ID',
student_id INT COMMENT '学生ID',
course_id INT NOT NULL COMMENT '课程ID',
class_id INT NOT NULL COMMENT '班级ID',
day_of_week ENUM('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday') NOT NULL COMMENT '星期几',
start_time TIME NOT NULL COMMENT '开始时间',
end_time TIME NOT NULL COMMENT '结束时间',
location VARCHAR(100) COMMENT '地点',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='课表管理';
CREATE TABLE leave_requests (
request_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '请假申请ID',
student_id INT NOT NULL COMMENT '学生ID',
teacher_id INT COMMENT '教师ID',
reason TEXT NOT NULL COMMENT '请假原因',
start_date DATE NOT NULL COMMENT '开始日期',
end_date DATE NOT NULL COMMENT '结束日期',
status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending' COMMENT '状态',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='请假申请管理';
CREATE TABLE attendance_records (
record_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '考勤记录ID',
student_id INT NOT NULL COMMENT '学生ID',
course_id INT NOT NULL COMMENT '课程ID',
date DATE NOT NULL COMMENT '日期',
status ENUM('present', 'absent') NOT NULL COMMENT '状态',
create_by INT COMMENT '创建人',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by INT COMMENT '修改人',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) COMMENT='考勤记录管理';
CREATE TABLE logs (
log_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '日志ID',
user_id INT COMMENT '用户ID',
action VARCHAR(100) NOT NULL COMMENT '操作',
details TEXT COMMENT '详情',
ip_address VARCHAR(45) COMMENT 'IP地址',
log_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '日志时间'
) COMMENT='操作日志管理';
用了这款AI,不仅可以在项目上帮助我们,其实在实际的开发过程中,也是有帮助的,飞算AI提供的其他模块同样强大,SQL chat模块可以帮我们处理复杂的SQL,我感觉相比于Cursor,飞算AI作为一款插件,功能是同样强大的。