没有合适的资源?快使用搜索试试~ 我知道了~
首页VB开发SQL Server数据库应用系统实例分析
资源详情
资源评论
资源推荐

数据库课程设计
通过这个课程设计可以加深对这些 SQL Server 数据库知识的学习、理解并掌握使用应
用软件开发工具开发数据库管理系统的基本方法。
本课程设计的主要目的是学习和练习 SQL Server 数据库的实际应用,所以选择
SQLServer 2000 作为数据库服务器。
一、系统功能设计
本课程设计模拟一个小型的教学管理系统。本系统要求实现以下主要功能:
1. 安全控制
假设我们将系统的用户分为如下几类:
¾ 系统管理员:有系统的全部权限。
¾ 教务部门:具有对学生基本数据、课程基本数据以及对教师授课数据的维护权。
¾ 人事部门:具有对教师基本数据的维护权。
¾ 各个系:具有对学生的选课情况的维护权。
¾ 普通用户:具有对数据的查询权。
在实现时,将每一类用户作为一个角色实现,这样在授权时只需对角色授权,而无需
对每个具体的用户授权。
2. 数据操作功能
数据操作功能包括对这些数据进行录入、删除、修改功能。具体如下:
1) 数据录入
本系统提供学生、教师、课程以及选课与授课情况的数据录入功能。且只有具有相应权
限的用户才能录入相应的数据。
可以录入学生的学号、姓名、系、专业、班。
可以录入教师的教师号、教师名、系、研究室。
可以录入课程的课程号、课程名、讲授学期、学时数。
还可以录入学生选课与教师授课的相关信息。
2) 数据删除
只有具有相应权限的用户才能删除相应的数据。删除数据时要注意表之间的关联关系,
比如当某个学生退学时,在删除学生基本信息之前,应先删除此学生的全部选课情况。另外,
在实际进行删除之前应该提醒用户确认是否真的要删除此数据。
3) 数据修改
当某些数据发生变化和某些数据录入不正确时,应该允许用户对数据库中的数据进行修
改。修改数据的操作时,一般先根据一定条件查询要修改的记录,然后在对其中的某些记录
进行修改,修改完后再写回到数据库中去。同数据的录入与删除一样,只有具有相应权限的
用户才能修改相应的数据。
4) 数据查询
本系统提供以下查询功能:
¾ 根据系、专业、班等信息查询学生的基本信息。
¾ 根据学期查询课程的基本信息。
¾ 根据部门查询教师的基本信息。

¾ 根据课程查询学生的选课及考试情况。
¾ 根据班查询学生的选课及考试情况。
¾ 根据部门、职称查询教师的授课情况。
5) 数据统计
¾ 统计每个部门的各职称的教师人数。
¾ 统计每门课程的选课人数。
¾ 按班统计每个学生的总选课分数。
二、概念结构设计
分析前面的系统功能要求,对于这个教学管理系统,其核心活动是课程,学生与课程之
间是通过学生选课发生联系的,教师与课程之间是通过教师授课发生联系的。因此,此系统
所包含的实体有:
¾ 课程:用于描述一门课程的基本信息,用课程号来标识此实体。
¾ 学生:用于描述一个学生的基本信息,用学号来标识。它与课程是多对多的联系。
¾ 教师:用于描述一个教师的基本信息,用教师号来标识。它与课程是多对多的联
系。
1. 实体及其属性
课程号 课程名
课 程
讲授学期
学分数
姓名
学 号 系
学 生
专 业
班
教 师
教师号
教师名
系
教研室
2. 实体及联系

m n m n
课程 教师 学生
选课 授课
三、数据库设计
1. 数据库与数据表设计
1) 课程表
Course(Cno
,Cname,Semester,Period)
课程表的结构定义如下表所示:
列名 数据类型 大小 空值 键 说明
Cno char 10 非空 主键 课程号
Cname char 24 非空 课程名
Ccredit Tinyint 1 非空 学分数
Semester tinyint 1 非空 讲授学期
其中,讲授学期的取值范围为 1~8(假设共 8 个学期),学分数的取值范围为 1~
10(假设学分最多为 10)。
2) 学生表
Student(Sno
,Sname,Sdept,Major,Class)
学生表的结构定义如下表所示:
列名 数据类型 大小 空值 键 说明
Sno char 8 非空 主键 学号
Sname char 10 非空 姓名
Sdept char 20 非空 所在系
Major char 20 非空 专业
Class char 5 非空 班
3) 教师表
Teacher(Tno,Tname,Tdept,Staffroom,Title)
教师表的结构定义如下表所示:
列名 数据类型 大小 空值 键 说明
Tno char 10 非空 主键(标识列) 教师号
Tname char 10 非空 教师名
Tdept char 20 非空 所在部门
Staffroom char 10 非空 教研室
Title char 10 非空 职称
其中,职称的取值范围为{教授,副教授,讲师,助教}。
4) 选课表
Elective(Sno,Cno,Etype,Pgrade,Jgrade,Tgrade)
选课表的结构定义如下表所示:
列名 数据类型 大小 空值 键 说明
Sno char 7 非空 主键(标识列) 学号
Cno char 10 非空 主键(标识列) 课程号

Etpye char 4 非空 选课类别
Pgrade tinyint 1 平时成绩
Jgrade tinyint 1 卷面成绩
Tgrade 总评成绩
其中,学号是引用学生表的外码,课程号是引用课程表的外码,选课类别的取值
范围为{必修,选修,重修},默认值为“必修”,平时成绩和卷面成绩的取值范围均为
0~100,总评成绩由平时成绩乘平时比例加卷面成绩计算得到,公式为:0.3×Pgrade
+0.7×Jgrade。
5) 授课表
Teaching(Cno,Tno,Ttype,Tnum)
授课表的结构定义如下表所示:
列名 数据类型 大小 空值 键 说明
Cno char 10 非空 主键(标识列) 课程号
Tno char 10 非空 主键(标识列) 教师号
Ttype char 6 非空 授课类型
Tnum Numeric(2,1) 非空 班数
其中,课程号是引用课程表的外码,教师号是引用教师表的外码,授课类别的取值
范围为{主讲,辅导,带实验},默认值为“主讲”。
6) 用户表
Land(Usertype,password)
用户表的结构定义如下表所示:
列名 数据类型 大小 空值 键 说明
Usertype char 10 主键 用户类型
password char 10 密码
2. 数据完整性设计

1) 主键约束、非空值约束
在以上各表的定义当中已经对各表进行了主键的申明以及非空值约束申明。
2) CHECK 约束
对于 Course 表,Semester 的取值范围为 1~8,Period 的取值范围为 1~10。因此
在约束表达式中分别输入:([Semester] >= 0 and [Semester] <= 8)和([Ccredit] >= 1 and
[Ccredit] <= 10) 。
对于 Teacher 表,Title 的取值范围为{教授,副教授,讲师,助教},因此在约束表
达式中输入:([Title] = '助教' or ([Title] = '讲师' or ([Title] = '副教授' or [Title] = '教授')))。
(我原本输入为 :Title in (‘教授’,’副教授’,’讲师’,’助教’),系统自动改为以上形式)
对于 Elective 表,Etype 的取值范围为{必修,选修,重修},因此在约束表达式中
输入:([Etype] = '重修' or ([Etype] = '选修' or [Etype] = '必修'))。Pgrade、Jgrade 和 Tgrade
的取值范围均为 0~100,所以在约束表达式中分别输入:([Pgrade] >= 0 and [Pgrade] <=
100)、([Jgrade] >= 0 and [Jgrade] <= 100)和([Tgrade] >= 0 and [Tgrade] <= 100)。
对于 Teaching 表,Ttype 的取值范围为{主讲,辅导,带实验},因此在约束表达式
中输入:([Ttype] = '带实验' or ([Ttype] = '辅导' or [Ttype] = '主讲'))。
3) 使用缺省值
Elective(选课表)中 Etype 的默认值设为‘必修’。
Teaching(授课表)中 Ttype 的默认值设为‘主讲’。
4) 外键约束
Elective(选课表)中学号是引用学生表的外码,课程号是引用课程表的外码。
Teaching(授课表)中课程号是引用课程表的外码,教师号是引用教师表的外码。
因此分别建立关系。
5) 规则
假设学生的学号统一为 8 位,教师的教师号统一为 5 位,为了检查录入的有效性
则分别创建学号 Sno 和教师号 Tno 的规则,然后分别绑定到学生表和教师表中的对应
列上。规则的定义语句分别为:len(@Sno)=8 和 len(@Tno)=5。
完成数据完整性设计后录入模拟数据。
3. 视图、触发器和存储过程设计
1) 按课程查询学生选课信息
要求输入课程号和类别(可选)后查出选该课的学生的学号、姓名以及总评成绩,
所以建立一个基于 Student 表和 Elective 表的视图,命名为 SE。
2) 按专业班查询学生选课信息
要求输入专业和班级(可选)后查出该专业该班级学生的学号、姓名、选课的课
程号、课程名以及选课的类别,所以建立一个基于 Student 表、Elective 表和 Course 表
的视图,命名为 SEC。
3) 按班级统计学生总学分数
要求输入专业和班级(可选)后查出该专业该班级学生的学号、姓名以及总学分,
所以建立另一个基于 Student 表、Elective 表和 Course 表的视图,命名为 SEC2。
4) 按所在部门及职称查询教师授课信息
要求输入所在部门和职称(可选)后查出该部门该职称教师的教师号、姓名、授
课的课程号、课程名以及类别,所以建立另一个基于 Teacher 表、Teaching 表和 Course
表的视图,命名为 TTC。
剩余34页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0