当前位置:文档之家› 华北科技学院数据库系统综合实验报告

华北科技学院数据库系统综合实验报告

允许空
主键/外键
索引
备注
dno
varchar
2

主键
升序
系编号
dname
varchar
10


系名
dtea
varchar
10

外键:teacher.tno
系教学秘书
专业表:subject
列名
数据类型
长度
允许空
主键/外键
索引
备注
sbno
varchar
2



升序
专业编号
department
varchar
select @score1=score1 from inserted
select @score2=score2 from inserted
if @score is not null and @score1 is not null and @score2 is not null
begin
uo
升序
所属系部
sbname
varchar
10


专业名
班级表:class
列名
数据类型
长度
允许空
主键/外键
索引

clname
varchar
20

主键
升序
班级名
subject
varchar
2


升序
所属专业
department
varchar
2

外键:department.dno
9


重修/补考1
score2
numernic
9


重修/补考2
term
varchar
1


学期
xyear
varchar
4


学年
type
varchar
6


课程类型
2、根据系统需要设计索引
(1)查询学生信息时经常要根据学生所在班级进行查询,为“学生表”的“班级”字段创建聚簇索引。
(2)查询教师信息时经常要根据教师所在系进行查询,为“教工表”的“所在系”
(3)为教学秘书查询成绩设计视图:
成绩3(学号,姓名,课程名,总评,必修选修,学年,学期,班级)
(4)为教师上传成绩设计视图:
成绩4(学号,姓名,课程名,成绩)
(四)物理设计
1、根据逻辑结构所设计的关系模式创建基本表,并创建主键。系统自动为主键字段创建索引。
系部表:department
列名
数据类型
长度
因为关系模式“就职”和“系部”具有相同的码,所以将两个关系模式合并,得到关系模式:
系部(系编号,系名称,系教学秘书)
2、设计视图:
(1)为学生查询成绩设计视图:
成绩1(课程名,期末,总评,重修1/补考1,重修2/补考2,学分,必修/选修,学年,学期)。
(2)为教师查询成绩设计视图:
成绩2(学号,姓名,课程名,期末,总评,必修/选修,学年,学期,班级)
o references o
(3)自定义完整性
student表的ssex属性只允许取“男”或“女”:check(ssex=’男’ or ssex=’女’);
sc表的score、sl、score1、score2属性值应该在0~100之间:check(score>=0 and score<=100)、check(sl>=0 and sl<=100)、check(score1>=0 and score1<=100)
2、功能需求:
教务管理系统的用户分为:学生、教师、管理员。
学生可以查询成绩、修改密码、选修课程。
教师又分为普通教师和教学秘书,普通教师可以登记成绩、查询成绩;教学秘书可以查询成绩、为某个班级指定必修课、为教师指定其教授的课程及授课班级。
管理员具有管理系统的所有权利。
数据流图:
(二)概念结构设计
(三)逻辑结构设计
2


性别
department
varchar
2

外键:department.dno
所属系部
教授表:tc
列名
数据类型
长度
允许空
主键/外键
索引
备注
tno
varchar
10



外键:teacher.tno
升序
教工号
cno
varchar
4

外键:o
升序
课程号
class
varchar
20

1、根据系统的概念结构分析,得出其关系模式如下:
系部(系编号,系名称)
专业(专业编号,所属系部,专业名称)
班级(班级名称,所属专业,所属系部)
学生(学号,姓名,性别,班级)
课程(课程号,课程名,学分)
教工(教工号,姓名,所属系部)
就职(系编号,系教学秘书)
教授(教工号,课程号,教授班级)
学习(学号,课程号,期末,总评,补考1,补考2,学期,学年,课程类型)
as
if update(score) or update(score1) or update(score2)
begin
declare @score numeric(18,1),@score1 numeric(18,1),@score2 numeric(18,1)
select @score=score from inserted
set sl=(
case when @score>@score1 and @score>@score2 then @score
when @score1>@score and @score1>@score2 then @score1
else @score2 end
)
where sno=(select sno from inserted) and cno=(select cno from inserted)
、check(score2>=0 and score2<=100)
系部名称、专业名称、班级名称都取唯一值:UNIQUE
创建触发器T2,作用:添加学生信息时自动根据其学号生成其登录密码
create trigger T2
on student
for insert
as
if update(sno)
begin
declare @spsw char(12)
(6)以上内容,请详细描述,并有必要抓图.
四、实验结果及分析
(一)需求分析
1、信息需求:教务管理系统涉及的实体有:
学生:学号、姓名、性别;班级:班级名称、学制、入学年份;专业:专业编号、专业名称;系部:系编号、系名称;教师:教工号、姓名;课程:课程号、课程名、学分。
实体间的联系:一个系有若干专业,每个专业有若干个班级,每个班有若干个学生;每个系有若干教师,教师分为两种:授课教师和教学秘书,每个系有一名教学秘书;一名教师可以教授多门课程,可以教授多个班级;每个学生可以学习多名课程,每门课程可以被若干个学生学习。学生选修课程分为必修和选修,每门课程都有一个期末成绩,可以重修或补考两次,总评取3个成绩中最高的,还有选修课程的年份和学期。
所属系部
grade
varchar
4


入学年份
课程表:course
列名
数据类型
长度
允许空
主键/外键
索引
备注
cno
varchar
20

主键
升序
班级名
cname
varchar
2


所属专业
credit
varchar
2


所属系部
学生表:student
列名
数据类型
长度
允许空
主键/外键
索引
备注
sno
varchar
teacher.department references department.dno
tc.tno references teacher.tno
o references o
tc.class references class.clname
sc.sno references student.sno
--创建教学秘书用户
EXEC sp_addlogin dtea,dtea
USE stu_course
EXEC sp_grantdbaccess dtea,dtea
4、其它功能设计
创建触发器T1:添加或更改学生成绩时,自动生成总评
create trigger T1
on sc
for insert,update
外键:class.clname
升序
授课班级
学习表:sc
列名
数据类型
长度
允许空
主键/外键
索引
备注
sno
varchar
12



外键:student.sno
升序
学号
cno
varchar
4

外键:o
升序
课程号
score
numernic
9


期末
sl
numernic
9


总评
score1
numernic
相关主题