前言
数据库是这个项目几乎所有数据/信息的来源。
在学习数据库之前,作业的发布是手动录入php代码的(死值),上交情况也是通过检查上传文件夹里的文件是否存在来判断的。以前也想过用txt文件记录数据,但是可以预见读取数据的时候会很麻烦。
但现在SQL Server 已经快学完了,即使MariaDB和SQL Server 的语法有一定的出入,我也能看出来介入数据库是一劳永逸的事。
设计
设计好数据库会让一劳永逸事半功倍。
使用场景
这个项目的用户场景有:
- 学生作业的查询、上交
- 学生对上交文件的查询、下载、替换、删除等处理。
- 我对作业的增删改查,文件的批量处理
E-R 图
因此可以整理设计出这样的E-R图:
表
根据E-R图得出这样的表:
- 作业表 :作业名字,科目,起始,结束,课件,备注,是否需要上传。
- 文件表:文件名,文件的路径,对应work的id,文件的状态。
- 学生表:学号,姓名。
- 上传日志表:上传的文件名,日期,上传人,作业id
Coding
首先得设置默认字符串编码,不然插入数据的时候会报错
当然,在上一章中我是先创建了yeek数据库,设置默认值并不会改变已有的数据库,参考上面的博客中的第5点,执行下面这句就可以改变数据库的字符串编码了。
ALTER yeek database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
然后依据表写的建表代码
CREATE TABLE `upwork_work`
(
`id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'uid',
`name` varchar(30) NOT NULL COMMENT '作业名',
`subject` varchar(20) NOT NULL COMMENT '科目',
`start` date DEFAULT NULL COMMENT '开始日期',
`end` date DEFAULT NULL COMMENT '上交日期',
`annex` varchar(20) DEFAULT NULL COMMENT '课件名',
`remarks` text COMMENT '备注',
`need_upload` bit(1) NOT NULL DEFAULT b'0'
) COMMENT ='作业表';
CREATE TABLE `upwork_UploadLog`
(
`id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'uid',
`fileName` varchar(200) NOT NULL COMMENT '文件名',
`date` datetime NOT NULL COMMENT '上传日期',
`uploader` varchar(50) COMMENT '上传人',
`workId` varchar(50) NOT NULL COMMENT '作业id'
) COMMENT ='upwork上传日志';
CREATE TABLE `upwork_student`
(
`id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'uid',
`studentId` varchar(8) NOT NULL UNIQUE KEY COMMENT '学号',
`name` varchar(30) NOT NULL UNIQUE KEY COMMENT '姓名'
) COMMENT ='学生表';
CREATE TABLE upwork_file
(
id int(10) not null auto_increment primary key comment 'uid',
workId int(10) not null comment '对应work的id',
fileName varchar(50) not null comment '文件名',
fileDir varchar(50) not null comment '文件路径',
`fileSize` varchar(50) NOT NULL COMMENT '文件大小',
recycle bit(1) not null default false comment '1表示将要回收'
) COMMENT '文件表';
嗯,建表成功。
后言
建表也结束了,接下来就是实现UML类图中的类和简单的网页设计了。
我是Moreant,我们下一篇 WorkInfo类 见~