数据库教务管理系统课程设计

  • 格式:doc
  • 大小:255.50 KB
  • 文档页数:12

数据库教务管理系统课程设计(总10页)

-本页仅作为预览文档封面,使用时请删除本页-

华北科技学院计算机系综合性实验

实 验 报 告

课程名称 《数据库原理与应用》

实验学期 2012 至 2013 学年 第 1 学期

学生所在系部 计算机学院

年级 2010 专业班级 计算机B10-3班

学生姓名 学号

任课教师 郭红

实验成绩

计算机系制 《数据库原理与应用》综合性实验报告

开课实验室:软件开发实验室(一) 2012 年 12月 7 日

实验题目 《教务成绩管理系统》数据库设计

一、实验目的

利用一种DBMS作为设计平台,理解并应用课程中关于数据库设计的相关理论,能按照数据库设计步骤完成完整的数据库设计,包括需求分析、概念设计、逻辑设计、物理设计和实施。同时能够正确应用各个阶段的典型工具进行表示。

二、设备与环境

(1) 硬件设备:PC机一台

(2) 软件环境:安装Windows操作系统,安装数据库管理系统SQL Server2008等。

三、实验内容

1.需求分析

功能需求:

系统管理员:(用户名:Administrator 密码:123456)

能够对所有信息进行增加,删除,修改,查询。

比如学生每门课程的成绩查询,老师所授课的情况,学生修学分的情况。能够维护数据库的正常运行。

教师:(用户名:教师 密码:职工号)

学生成绩的录入,修改,查询。

学生:(用户名:学号 密码:学号)

学生可以查询成绩,可以查看自己所学的得学分的情况,自己所学习的课程。

数据需求:

信息能够快速的输入到数据库里面,处理数据的方式是批处理,这样可以减轻系统的负担。姓名,性别,系部,课程名称,班级,是用字符串类型,成绩,学号,职工号,年龄,入学时间,课程号,运用的是整数型。

数据流图:

性能需求:

系统处理的准确性和及时性:系统应该保证在一定的时间内准确的处理完信息。 数据流名 数据流来源 数据流去向 组成

管理信息 管理员 学生表 学生信息

录入成绩 教师 学生表 学生信息

报表信息 学生表 成绩单 学生信息 系统的可扩充性:课程的增加,学生信息的增加,系统不会因为增加信息反映过慢,不能给系统增加负担。

系统的输入与输出:输入信息的时候能够快速的存储到数据库中,输出信息的时候要在短暂的时间内反应出来,否则的话就把错误信息反馈给用户。

2.概念结构设计

Student 表: 学号:Sno, 姓名:Sn 年龄:Age 性别:Sex 系部:Dept

专业:Major 年级:Grade

Course 表: 课程名:Cn 课程号:Cno 学分:Cs 学时Ct

SC 表: 学号:Sno 课程号:Cno 成绩:Score 职工号:Wno

Teacher 表: 职工号:Wno 职工姓名Wn 年龄:Age 职称:Prof 薪水:Salary

n

n

1 学 生 学 号 姓名

年级 性别

系部 专业 年龄

学 习

课 程 成 绩

课程名

课程号 学 分

学 时

授 课

3.逻辑结构设计

(1)关系模式的设计与优化

关系模式的转换:

Student(Sno ,Sn ,Age ,Sex ,Dept,Major, Grade)

学号 Sno是主码,Student关系模式中,Sno是唯一主码,也不存在部分依赖和传递依赖,所以Student关系也属于3NF,因为Student关系模式中,Sno是唯一决定因素,所以Student关系模式属于BCNF.

Teacher(Wno, Wn, Age, Prof , Salary)

职工号Wno 是主码,Teacher关系模式中,Wno是唯一主码,没有任何属性对Wno有部分依赖和传递依赖,所以Teacher关系属于3NF,因为Teacher关系模式中,Wno是唯一决定因素,所以Teacher关系模式也属于BCNF

Course(Cno,Cn, Cs,Ct)

课程号Cno是主码,Course关系模式中,Cno是唯一主码,不存在部分和传递依赖,Cno是唯一决定因素,所以Course关系模式属于BCNF.

SC ( Sno, Cno , Score)

学号Sno和课程号Cno是主码,Sno和Cno共同决定成绩,没有其他属性对码有部分依赖和传递依赖,除了Cn和Sno以外没有其他决定因素,所以SC关系模式属于BCNF.

关系模式的优化:

Student(Sno ,Sn ,Age ,Sex ,Dept,Major, Grade)

Teacher(Wno, Wn, Age, Prof , Salary)

Course(Cno,Cn, Cs,Ct)

(2)设计合适的视图

视图v1 :

create view v1(Sno,Sn,总学分,未修学分)

as

select ,, sum(Cs),24-sum(Cs)

from SC ,Course,Student

where = and = and >=60

group by ,

统计学生得到学分的情况,这样学生可以很清楚的看到自己所得到的学分的情况,能够时刻提醒自己还差多少分才修完课程,能够保证自己毕业前完成学业。

视图AvgS:学生可以直接查询自己的各科平均成绩。

create view AvgS(Sno,Sn,AvgScore) 教 师

职 称 职工号

姓 名 性 别 薪 水 as

select , ,avg(Score)

from SC,Student

where =

group by ,

4.物理设计

create unique index SCI on SC (Sno,Cno)

执行此命令后,为SC表建立一个索引名为SCI的唯一索引,此索引为Sno和Cno两列的复合索引,即对SC表中的行先按Sno的递增顺序索引,对于相同的Sno,又按Cno的递增顺序索引。系统本身已经有的索引是Student表是按照学号升序建立的唯一索引,Teacher表是按照职工号序建立的唯一索引,Course表是按照课程号的升序建立的唯一索引。

5.数据库的实现

(1)创建库、表

应包括参照完整性、实体完整性、自定义完整性的定义

create table Student

( Sno char(10) primary key not null,

Sn varchar(20) not null,

Sex char(2) check(Sex in('男','女')),

Dept varchar(20),

Major char(20),

Age int,

Grade int,

)

create table Course

(

Cno char(8) primary key not null,

Cn char(10),

Ct int,

Cs int,

) 6

(2)创建用户

包括创建用户或角色,并授予相应的权限(用户设计至少3个,且设置合理)

我为数据库创建了三个用户,分别是海艳,郭跃,系统管理员,对应的登录名分别是学生,老师,系统。

创建一个学生用户,授予海艳查询自己的所有信息的成绩,自己只能查询自己的信息,具有一定的保密性。

create login 学生 with password='123456' use cjb

Create user 海艳 for login 学生

create view v4

as

select *

from SC

where Sno=(

select Sno

from Student

where Sn='海艳')

grant select on v4 to 海艳

创建一个老师的用户,老师可以查询,修改学生的成绩。

create login 老师 with password='111111'

use cjb

create user 郭跃 for login 老师

grant select(Score),update(Score) on SC to 郭跃

创建系统管理员用户,可以对所有信息的查询,删除,修改,插入。

create login 系统 with password='112233'

use cjb

create user 系统管理员 for login 系统

grant select ,insert,update,delete on Course to 系统管理员

grant select, update,insert,delete on Student to 系统管理员

grant select, update,insert,delete on Teacher to 系统管理员

grant select, update,insert,delete on SC to 系统管理员

我还为数据库创建了一个角色,把学生表的查询权限给了李大伟,系统管理员,张丽