一、设计的目的与要求
目的
1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,对数据库做进一步的了解,掌握相关知识;
2.进一步加强对数据库运用能力和熟练掌握数据库中的重要知识,了解如何从数据库中读写有关数据;
3.培养分析问题、解决问题的能力。
要求
1.完成数据库系统的安装与设置。
2.根据具体的课题完成需求分析。
3.完成数据库应用系统的逻辑设计。
4.创建数据库、数据表。
5.完成设计报告。
二、设计正文
1.需求分析
1.1 调查用户需求
本系统的最终用户为系统管理员,全体老师学生。根据我们日常生活中的经验,结合对自己学校任课老师的咨询和对北京各个高校学生的调查,得出用户的下列实际要求:
1.1.1基本功能需求
在学生的日常学习活动中,每个课程每节课都会有老师负责管理学生的作业收发。日常管理包含以下几方面的信息。
学生的基本信息
入校时,每位同学都有唯一的学号,并被分配到指定的专业班级,也会有一个班号,其入校时间就是他的注册时间。另外,同一院系的学生的专业课程可能相同,不同专业的学生,部分专业课程不同。相应地会有其所在的院系名称,专业班级名称。
教师的基本信息
在校教师在任教期间都有唯一的教工号,并被分配到指定的院系和指定的教研室,注册后拥有登陆作业管理系统的身份ID和密码,一个教师可以教多门课程,一个教师所教的一门课程可以对应多个班级。
发布作业基本信息
教师对其任教的课程具有发布作业的功能,教师对指定的课程发布相对应的作业,发布的作业具有作业索引号、作业名称、作业发布时间,以及教师对发布作业的预留信息等基本属性。
上交作业基本信息
学生上交的每一份老师要求完成的作业都有一个作业名称,上交时候有一个时间,上交的作业唯一的内容,这份作业老师所给的分数,这个分数对应的等级,还有老师根据学生的各个方面的表现(书面,考勤的)给出的修正分。
课程的基本信息
每门课程对应有自己的课程名和课程号,并属于唯一的一个院系。
班级基本信息
每个班级都有唯一的班级号和班级名称,每个班级对应所属的院系。
院系基本信息
每个院系都有唯一的院系号和院系名称。
1.1.2用户对系统的要求
系统管理员
a.信息要求
系统管理员能查询上面提到的所有相关信息,包括某一学号的学生的个人信息,某一名字的老师的个人信息,某一教师所教的课程信息,某一学生的班级,课程的基本信息,班级的基本信息。
b.处理要求
当学生基本信息发生变化时,系统管理员能对其进行修改。比如,某些同学的院系班级信息发生改变,他们在本院系和班级中相应的记录就应做相应改变;或者,同学退学后,该学生的所有记录应该删除等等。
当老师或者学生的密码丢失时,管理员能够根据教工号或者学号给予找回。
系统管理员能够对所有学生教师的信息进行合法的操作。
c.安全性与完整性要求
安全性要求
⏹系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;
⏹系统应对不同的数据设置不同的访问级别,访问用户可查询和处理数据的类别和内容;
⏹系统应对不同用户设置不同的权限,区分不同的用户,如区分普通用户(学生,教师),管理员。
完整性要求
⏹各种信息记录的完整性,关键信息记录内容不能为空;
⏹各种数据间相互的联系的正确性;
⏹相同的数据在不同记录中的一致性。
学生
a.信息要求
学生能够查询当前所有老师给其下发的作业信息,能查询已交作业信息,能查询老师的基本联系信息,能查看评优区作业信息,能查询任课教师信息。
b.处理要求
学生可以修改自己上传未批改的作业,可以下载老师发布的作业附件信息,可以在合法的时间内下载自己上交的作业,可以修改自己的某些个人信息,可以上传自己的作业。
教师
a.信息要求
教师能够查询相关课程信息,能够查询相关课程作业上交信息,能够查询学生个人信息,能够查询下发的作业信息,能够查询所教班级信息,可以按分数段查询班级作业成绩,可以查看班级(或课程)作业统计信息。
b.处理要求
教师可以修改自己的联系信息,可以插入相应课程作业的成绩,表示作业已经批改。
教师可以发布作业信息,可以修改已经下发作业的信息,可以给予课程作业修正分,可以下载自己发布的作业附件信息,可以按需求格式批量下载班级(或课程)作业,可以下载班级(或课程)统计图表,可以批量批改作业,可以将学生作业放入评优区。
1.2 系统功能的设计和划分
根据如上得到的用户需求,我们将本系统按照所完成的功能划分为以下几个功能模块:
图1.2 系统功能模块划分图
又分为以下两块管理部分:
第一部分:用户管理部分
第二部分:管理员管理部分
各部分完成的功能如下:
1.2.1用户管理部分
学生
⏹处理用户登录。
⏹学生用户可以查询本学期任课教师信息。
⏹学生用户可以根据名字查询到教师信息。
⏹学生用户可以查询到自己班级的信息。
⏹学生可以查询自己的信息。
⏹学生用户可以查询到自己所学课程的信息。
⏹学生用户可以查询已经批改的作业信息。
⏹学生用户可以查询与修改待批改作业信息。
⏹学生用户可以查询到评优区当前评优的作品信息。
⏹学生用户可以查询自己待完成的作业信息。
⏹学生用户可以修改自己的某些个人信息(密码等)。
⏹学生用户可以提交自己的作业。
⏹学生用户可以下载教师发布的作业信息。
⏹学生用户可以下载评优区的作业。
教师
⏹处理用户注册。
⏹处理用户登录。
⏹教师用户可以查询自己的个人信息。
⏹教师用户可以查询当前所教授课程信息。
⏹教师用户可以查询所下发的作业信息。
⏹教师用户可以查询上交作业信息。
⏹教师用户可以查询所教学生的个人信息。
⏹教师用户可以查询未交作业的学生信息。
⏹教师用户可以查询所教班级信息。
⏹教师用户可以查询评优区信息。
⏹教师用户可以按分数段查询班级作业成绩。
⏹教师用户可以查看班级(或课程)作业统计信息。
⏹教师用户可以修改自己的某些信息。
⏹教师用户可以发布作业任务。
⏹教师用户可以下载自己发布作业的附件。
⏹教师用户可以修改所下发的作业信息。
⏹教师用户可以修改课程作业的修正分。
⏹教师用户可以批改学生上交的作业。
⏹教师用户可以按需求格式批量下载班级(或课程)作业。
⏹教师用户可以下载班级(或课程)统计图表。
⏹教师用户可以批量批改作业。
⏹教师用户可以将学生作业放入评优区。
⏹教师用户可以提醒未交作业的学生。
⏹教师用户可以下载评优区的作业。
1.2.2管理员管理部分
⏹处理管理员登录
⏹管理员可以查询、修改教师所教课程信息。
⏹管理员可以查询、修改班级与院系信息。
⏹管理员可以删除、插入、修改与查询学生的个人信息。
⏹管理员可以删除、插入、修改与查询教师的个人信息。
⏹管理员可以查看学生和教师的登陆密码。
⏹管理员可以修改管理员密码。
1.3 数据流图
登陆数据流图
图 1-3-1 登陆数据流图
学生个人信息数据流图
图 1-3-2 学生个人信息数据流图
教师个人信息数据流图
图 1-3-3 教师个人信息数据流图
班级信息数据流图
图 1-3-4 班级信息数据流图
课程信息数据流图
图 1-3-5 课程信息数据流图
教师发布作业信息数据流图
图 1-3-6 教师发布作业信息数据流图
学生上交作业信息数据流图
图 1-3-7 学生上交作业数据流图
评优区作业信息数据流图
图 1-3-8 评优区作业信息数据流图
院系信息数据流图
图 1-3-9 院系信息数据流图
班级课程信息数据流图
图 1-3-10 班级课程信息数据流图
1.4 数据字典
14.1数据项
在校教师数据字典:
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值和含义 |
教工号 | Id | char | 15 | 在校教师教工号 | 0000000000-9999999999 |
姓名 | Name | nchar | 20 | 在校学生姓名 | 10个字以内中文 |
性别 | Sex | nchar | 2 | 在校教师性别 | “男”或“女” |
密码 | Password | char | 20 | 教师登陆系统密码 | 数字、字符、下划线的组合,区分大小写 |
办公室 | Office | nchar | 20 | 教师办公室 | 10字以内中文 |
院系 | DeptId | int | 所在院系号 | 整数 | |
联系电话 | Tel | char | 11 | 教师联系方式 | 11位电话号码 |
邮箱 | char | 40 | 教师邮箱 | 邮箱标准格式 | |
宣言 | Declaration | nchar | 100 | 教师教学宣言 | 50字以内中文 |
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值含义 |
学号 | Id | char | 15 | 学生学号 | - |
姓名 | Name | nchar | 20 | 学生姓名 | 10字以下中文 |
性别 | Sex | nchar | 2 | 学生性别 | “男”或“女” |
密码 | Password | char | 20 | 学生登陆系统密码 | 同上表 |
签名 | Sign | nchar | 100 | 学生个性签名 | 50字以下中文 |
班级 | ClassId | int | 学生所在班级号 | - | |
院系 | DeptId | int | 学生所在院系号 | - | |
联系电话 | Tel | char | 11 | 学生联系方式 | 11位数字 |
邮箱 | char | 40 | 学生邮箱 | - |
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值含义 |
课程号 | CourseId | int | 学生上传作业课程号 | - | |
学号 | StudentId | char | 15 | 学生学号 | - |
附件索引 | SEnclosureIndex | char | 5 | 学生上传附件索引 | 5为字符 |
上传时间 | SubmitDate | date | 作业上传时间 | - | |
成绩 | Grade | float | 学生作业成绩 | -1-100间数字 | |
等级 | Level | int | 学生作业等级 | 0-5间数字 | |
存储路径 | SEnclosurePath | nchar | 100 | 学生上传附件存储路径 | 服务器存储路径 |
名称 | Name | nchar | 50 | 附件名称 | 25字以下中文 |
修正分 | CorrectGrade | float | 学生作业修正分 | 系统或老师给出对学生作业的主观评价分 | |
评语 | Remark | nchar | 100 | 教师对学生作业的评语 | 50字以下中文 |
是否作业完成 | IsOver | bit | 学生是否完成作业 | - |
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值含义 |
教工号 | TeacherId | char | 15 | 教师教工号 | - |
课程号 | CourseId | Int | 教师所教某一课程号 | - | |
附件索引 | TEnclosureIndex | char | 5 | 教师发布作业索引 | - |
发布时间 | AssigenDate | date | 教师发布作业日期 | - | |
截止日期 | Deadline | date | 作业上交截止日期 | - | |
名称 | Name | nchar | 50 | 附件名称 | - |
存储路径 | TEnclosurePath | char | 100 | 教师发布作业存储路径 | - |
备注 | Message | nchar | 1000 | 教师对发布作业的备注 | 500字以下中文 |
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值含义 |
班级号 | Id | int | 班级号 | - | |
名称 | Name | nchar | 30 | 班级名称 | 15字以下中文 |
班主任 | HeadTeacherId | char | 15 | 班级班主任教工号 | - |
院系 | DeptId | int | 院系号 | - |
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值含义 |
院系号 | Id | int | 院系号 | - | |
名称 | Name | nchar | 30 | 院系名称 | 15字以下中文 |
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值含义 |
课程号 | Id | int | 课程号 | - | |
院系 | DeptId | int | 开课院系 | - | |
名称 | Name | nchar | 30 | 课程名称 | 15字内中文 |
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值含义 |
课程号 | CourseId | int | 课程号 | - | |
班级号 | ClassId | int | 班级号 | - | |
教工号 | TeacherId | char | 15 | 教工号 | - |
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值含义 |
用户ID | Id | char | 15 | 用户ID | - |
用户密码 | Password | char | 20 | 用户密码 | - |
用户类型 | Type | tnyint | 1 | 普通用户或超级用户 | - |
属性名 | 存储代码 | 类型 | 长度 | 备注 | 取值含义 |
学号 | StudentId | char | 15 | 学生学号 | - |
附件索引 | SEnclosureIndex | int | 5 | 学生作业附件索引 | - |
课程号 | CourseId | int | 学生作业所属课程 | - |
数据结构名 | 组成 |
用户信息 | 用户ID,用户密码,用户类型(普通用户,管理员) |
在校学生信息 | 学号,姓名,性别,班级,密码,是否完成作业,个性签名,院系,联系电话,邮箱 |
在校教师信息 | 教工号,性别,姓名,密码,院系,办公室,教学宣言,联系电话,邮箱 |
学生作业信息 | 作业号,课程号,学号,上传日期,存储路径,分数,等级,修正分,附件名称,评语 |
教师发布作业信息 | 教工号,课程号,发布时间,截止日期,作业号,备注信息,存储路径,附件名称 |
专业班级信息 | 班级号,院系号,班主任教工号 |
院系信息 | 院系号,院系名称 |
班级课程信息 | 班级号,课程号,教工号 |
评优区作业信息 | 作业号,学号,课程号 |
课程信息 | 课程号,开课院系号,课程名 |
数据流名 | 数据流来源 | 数据流去向 | 组成 |
教师下发作业信息 | 教师 | 教师发布作业表 学生作业表 | 教师下发作业信息 |
查询教师下发作业信息 | 教师下发作业信息 | 学生 教师 | 教师下发作业信息 |
学生上传作业信息 | 学生 | 学生作业表 | 学生作业信息 |
查询学生上传作业信息 | 学生作业表 | 教师 学生 | 学生作业信息 |
下载(统计)学生作业信息 | 学生作业表 学生个人信息表 班级信息表 课程信息表 | 教师 | 学生作业信息 |
作业评优信息 | 教师 | 评优作业表 | 学生作业信息 |
查询(下载)评优作业信息 | 评优作业表 | 教师 学生 | 学生作业信息 |
查询学生个人信息 | 学生个人信息表 | 教师 学生 管理员 | 学生个人信息 |
查询教师个人(联系)信息 | 教师个人信息表 | 教师 学生 管理员 | 教师个人信息 |
修改学生固有信息 | 管理员 | 学生个人信息表 | 学生信息 |
修改教师固有信息 | 管理员 | 教师个人信息表 | 教师信息 |
修改学生个人信息 | 学生 | 学生个人信息表 | 学生个人信息 |
修改教师个人信息 | 教师 | 教师个人信息表 | 教师个人信息 |
数据存储名 | 输入的数据流 | 输出的数据流 | 组成 |
学生作业表 | 教师发布作业信息 学生上交作业信息 教师批改作业信息 | 学生作业信息 | 学生上交作业信息 教师批改作业信息 |
评优区作业表 | 学生上传作业表 教师选定 | 评优区作业信息 | 评优区作业信息 |
教师发布作业表 | 教师发布作业信息 | 教师发布作业信息 | 教师发布作业信息 |
处理过程名 | 输入数据流 | 输出数据流 |
学生上交作业 | 学生上交作业信息 | 学生上交作业信息 |
教师批改作业 | 作业成绩信息 | 学生作业成绩信息 |
查询学生作业信息 | 学生作业信息 | 学生作业信息 |
教师发布作业 | 教师发布作业信息 | 教师发布作业信息 |
查询教师发布作业信息 | 教师发布作业信息 | 教师发布作业信息 |
学生作业评优 | 学生作业信息 | 学生作业信息 |
查询个人信息 | 学生、教师个人信息 | 学生、教师个人信息 |
评优区作业查询 | 评优区作业信息 | 评优区作业信息 |
根据需求分析说明书设计ER图,设计完成的ER图为:
图 2-1 学生属性
图 2-2 教师属性
图 2-3 教师下发作业属性
图 2-4 学生作业属性
图2-5 院系、班级、评优区作业属性
图 2-6 班级课程、课程属性
图 2-7 系统E-R设计
3.逻辑设计
3.1 关系表设计
将ER图转换为关系模式、要求设计出数据库所有关系表
表3.1.1 在校学生(T_student)
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
学号 | Id | char | 15 | 主键 |
姓名 | Name | nchar | 20 | 非空 |
性别 | Sex | nchar | 2 | 值为“男”或“女” |
签名 | Sign | nchar | 100 | 无 |
班级 | ClassId | int | 外键 | |
院系 | DeptId | int | 外键 | |
联系电话 | Tel | char | 11 | 无 |
邮箱 | char | 40 | 无 | |
密码 | Password | char | 20 | 非空 |
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
教工号 | Id | char | 15 | 主键 |
姓名 | Name | nchar | 20 | 非空 |
性别 | Sex | nchar | 2 | 值为“男”或“女” |
宣言 | Declaration | nchar | 100 | 无 |
办公室 | Office | nchar | 20 | 非空 |
院系 | DeptId | int | 外键 | |
联系电话 | Tel | char | 11 | 无 |
邮箱 | char | 40 | 无 | |
密码 | Password | char | 20 | 非空 |
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
课程号 | CourseId | int | 主键 | |
学号 | StudentId | char | 15 | 主键 |
附件索引 | SEnclosureIndex | char | 5 | 主键 |
上传时间 | SubmitDate | date | 无 | |
成绩 | Grade | float | 值为-1~100 | |
等级 | SLevel | int | 值为0~5 | |
存储路径 | SEnclosurePath | nchar | 100 | 无 |
名称 | Name | nchar | 50 | 非空 |
是否完成作业 | IsOver | bit | 值为0或1 | |
评语 | Remark | nchar | 100 | 无 |
修正分 | CorrectGrade | float | 值为数字 |
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
教工号 | TeacherId | char | 15 | 主键 |
课程号 | CourseId | int | 主键 | |
附件索引 | SEnclosureIndex | char | 5 | 主键 |
发布时间 | AssignDate | date | 无 | |
截止日期 | Deadline | date | 值大于发布时间 | |
名称 | Name | nchar | 50 | 非空 |
存储路径 | SEnclosurePath | nchar | 100 | 无 |
备注 | Message | nchar | 100 | 无 |
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
班级号 | Id | int | 主键 | |
名称 | Name | nchar | 30 | 非空 |
班主任 | HeadTeacherId | char | 15 | 外键 |
院系 | DeptId | int | 外键 |
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
院系号 | Id | int | 主键 | |
名称 | Name | nchar | 30 | 非空 |
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
课程号 | Id | int | 主键 | |
院系 | DeptId | int | 外键 | |
名称 | Name | nchar | 30 | 非空 |
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
课程号 | CourseId | int | 主键 | |
班级号 | ClassId | int | 主键 | |
教工号 | TeacherId | char | 15 | 外键 |
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
学号 | StudentId | char | 15 | 主键 |
课程号 | CourseId | int | 主键 | |
作业索引 | SEnclosureIndex | char | 5 | 主键 |
属性中文名称 | 属性名 | 类型 | 长度 | 完整性约束 |
用户号 | Id | char | 15 | 主键 |
用户密码 | Password | char | 20 | 非空 |
用户类型 | Type | bit | 值为0或1 |
为了方便程序查询,建立了如下用户视图:
学生信息视图(学号,姓名,性别,院系,班级,个性签名,联系电话,邮箱,密码)
定义:
CREATE VIEW CS_Student(Id,Name,Sex,DeptName,ClassName,
Signs,Tel,Email,Password) AS SELECT s.Id,s.Name,Sex,d.Name,
c.Name,Sign,Tel,Email,Password from T_student s,T_class c,T_dept d WHERE s.ClassId = c.Id AND s.DeptId = d.Id
教师信息视图(教师名,性别,办公室,院系,联系电话,邮箱,宣言,密码)
定义:
CREATE VIEW CS_Teacher(Name,Sex,Office,DeptName,Tel,Email,
Declaration,Password) AS SELECT t.Name,Sex,Office,d.Name,
Tel, Email,Declaration,Password from T_teacher t,T_dept d WHERE t.DeptId = d.Id
班级信息视图(班级名称,班级人数,班主任,院系)
定义:
CREATE VIEW CS_Class(Name,number,HeadTeacher,DeptName)
AS SELECT c.Name,COUNT(*),t.Name,d.Name from T_class c,T_teacher t,
T_dept d where c.DeptId = d.Id AND c.HeadTeacherId = t.Id GROUP BY c.Id,c.Name,t.Name,d.Name
教师发布作业信息视图(课程名,作业名,班级名,存储路径,教师名,截止日期,发布日期,备注)
定义:
CREATE VIEW CS_TEnclosure(CourseName,EnclosureName,ClassName,
EnclosurePath,TeacherName,Deadline,AssignDate,Message) AS
SELECT course.Name,e.Name,c.Name,TEnclosurePath,t.Name,Deadline,
AssignDate,Message FROM T_enclosureFT e,T_course course,T_class c,R_course_class cc,
T_teacher t WHERE e.courseId = course.Id AND e.TeacherId = t.Id AND cc.ClassId = c.Id
AND cc.CourseId = e.courseId AND cc.TeacherId = t.Id
学生作业信息视图(班级名,课程名,学生名,学号,作业名称,存储路径,是否完成,分数,等级,修正分,评语)
定义:
CREATE VIEW CS_SEnclosure(ClassName,CourseName,StudentName,
StudentId,EnclosureName,EnclosurePath,IsOver,Grade,SLevel,
CorrectGrade,Remark) AS SELECT c.Name,course.Name,s.Name,e.StudentId,e.Name,SEnclosurePath,IsOver,Grade,SLevel,CorrectGrade,
Remark from T_class c,T_course course,T_enclosureFS e,T_teacher t,T_student s WHERE e.StudentId = s.Id AND e.CourseId = course.Id
AND s.ClassId = c.Id
评优区作业信息视图(学生名,学号,课程名,作业名称,存储路径,班级名,分数,等级,修正分,评语)
定义:
CREATE VIEW CS_Excellent(StudentName,StudentId,CourseName,
SEnclosureName,EnclosurePath,ClassName,Grade,SLevel,CorrectGrade,
Remark) AS SELECT s.Name,s.Id,course.Name,e.Name,SEnclosurePath,
c.Name,Grade,SLevel,CorrectGrade,Remark FROM T_student s,
T_enclosureFS e,T_class c,T_course course WHERE s.Id = e.StudentId
AND e.CourseId = course.Id AND s.ClassId = c.Id
班级课程信息视图(班级名称,课程名称,教师)
定义:
CREATE VIEW [dbo].[CS_Course_Class]
AS
SELECT dbo.T_class.Name, dbo.T_course.Name AS Expr1, dbo.T_teacher.Name AS Expr2
FROM dbo.R_course_class INNER JOIN
dbo.T_course ON dbo.R_course_class.CourseId = dbo.T_course.Id INNER JOIN
dbo.T_teacher ON dbo.R_course_class.TeacherId = dbo.T_teacher.Id INNER JOIN
dbo.T_class ON dbo.R_course_class.ClassId = dbo.T_class.Id
班级作业统计信息视图(作业名,班级名,最高分,平均分,最低分,及格率,优秀率,不及格人数)
定义:
CREATE VIEW [dbo].[CS_Sta]
AS
SELECT dbo.T_enclosureFS.Name AS taskName, dbo.T_class.Name AS className, derivedtbl_1.max, derivedtbl_1.min, derivedtbl_1.avg
FROM dbo.T_enclosureFS CROSS JOIN
dbo.T_class CROSS JOIN
(SELECT dbo.T_student.ClassId, MAX(T_enclosureFS_1.Grade) AS max, MIN(T_enclosureFS_1.Grade) AS min, AVG(T_enclosureFS_1.Grade) AS avg
FROM dbo.T_enclosureFS AS T_enclosureFS_1 INNER JOIN
dbo.T_student ON T_enclosureFS_1.StudentId = dbo.T_student.Id
GROUP BY dbo.T_student.ClassId) AS derivedtbl_1
4.物理设计
确定数据库物理结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。
1、系统自动在每个表的主码上建立索引。
2、在T_class表Name列上建立IX_T_class_Name索引,因为查询操作很多都使通过班级名进行的。
3、在 T_course表Name列上建立IX_T_course_Name索引,因为查询操作很多通过课程名进行的。
4、在T_enclosureFS表Grade列上建立IX_T_enclosureFS_Grade和IX_T_enclosureFS_Name索引,因为查询很多操作通过作业分数和作业名进行。
5、在T_enclosureFT表Name列上建立IX_T_enclosureFT_Name索引,因为查询操作很多通过附件名来进行的。
6、在T_student表Name列上建立IX_T_student_Name索引,因为查询操作很多通过学生姓名来进行的。
7、在T_teacher表Name列上建立IX_T_teacher_Name索引,因为查询操作很多通过教师姓名来进行的。
5、课程设计总结
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,数据库应用到计算机应用的各个领域。因此作为二十一世纪的大学生来说掌握数据库技术是十分重要的。
回顾起这次数据库课程设计,我感慨颇多。的确,从选题到定稿,从理论到时间,在接近一周的时间里,可以说是苦多于甜,但是同时也学到了很多的东西,并巩固了很多以前学过的知识,也接触到了很多书本上没有的东西,在实践过程中,遇到的困难也是很多的,比如说设计数据字典这一环节,由于对数据字典的概念了解的不够深刻,在书写数据项、数据结构、数据存储等时觉得很抽象,以及后来的概念设计和视图设计过程,都觉得不太熟悉,但是通过查阅资料等手段都把这些问题一一解决了。
通过这次课程设计使我懂得了理论与实践相结合是很重要的,只有理论知识是远远不够的,只有把理论知识与实践结合起来,才能提高自己的动手能力和思考能力,很多问题看似简单,思路也很清晰,但是当真正动手设计的时候才发现其中的难度,这次课设中印象最深的是经常突然发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善数据库的设计。总而言之,这次数据库课程设计让我学到了很多在书本上学不到的东西,也从中学到了许多解决实际问题的经验,也让我明白无论遇到怎么的难题,只要有耐心并坚持,就一定能解决好问题。
四、参考文献
[1] 萨师煊,王珊数据库系统概论. 高等教育出版社, 第3版. 2000年2月
[2] 黄维通 SQL Server 2000简明教材. 清华大学版社, 第1版. 2002年3月