数据库系统原理实验
图1-1
3)双击创建的实体符号,打开图1-2所示窗口,在此窗口“General”标签中可以输入实体的名称、代码、描述等信息。
图1-2
4)添加实体属性:上述窗口的“Attributes”选项标签可以添加属性,如图1-3所示。
图1-3
其中:P列表示该属性是否为主标识符;D列表示该属性是否在图形窗口中显示;M列表示该属性是否为强制的,即该列是否为空值。
图1-6
如果联系具有属性则使用association Link工具。
7)验证CDM的正确性
toolsCheckModel,打开图1-7所示窗口,选择要检测的内容,单击确定。检查结果包括警告和错误,警告不影响生成PDM(物理模型),有错误则不能生成PDM。
图1-7
实验二学籍管理逻辑结构和物理结构设计
1、实验目的
参考:
Create procedure p_averagescore @trem varchar(11) --入口参数:学期
As
Begin
Declare @cno varchar(5) --课程编号
Declare @clname varchar(30) --班级名称
Declare @clno varchar(6) --班级编号
--根据班级平均成绩判断该班的成绩是否登记,如果平均成绩>0,则计算每名学生的平均成绩
If @avgscore>0
Begin
Print @term+’学期’+@clname+’各门课程总平均成绩为’+str(@avgscore,5,1)
--每个学生的平均成绩和获得的学分
Print‘该班每个学生的平均成绩如下:’
end
实验五存储过程设计
1、实验目的
熟练掌握存储过程的编写、调试与使用方法。
2、实验内容
1)编写汇总平均成绩的存储过程,实现自动汇总某学期各班平均成绩、每个同学的平均成绩及所获得学分。
3、实验步骤
1)汇总平均成绩的存储过程
入口参数:学期
算法:建立班级的游标,使用循环结构,根据班级编号中的入学年份和入口参数(如“2010-2011-1”表示的学期),通过学期转换函数,使用选课表、课程表、班级表和学生表查询班级在本学期开设的所有课程的平均成绩。如果平均成绩是0,说明本班所有课程成绩没有登记;否则汇总本班级每个学生在本学期的所有课程平均成绩。处理完一个班级后,通过游标处理下一个班级。
《数据库系统原理》实验指导
信息管理系
2010.9
背景知识介绍
学籍管理是学校管理中一项繁琐的工作,管理人员需要建立学生的学籍,汇总每学期没有拿到规定学分的学生以及这些学生的详细情况;学生完成一门课程的学习后,教师需要录入学生的考试成绩,计算平均成绩、汇总各分数段的人数,学生需要查询已结业的各门课程的成绩;班主任需要查询本班学生学习情况,包括各门课程的平均成绩和每个学生的考试通过情况,为此,设计一套实用的学籍管理系统就可以大大简化管理人员、班主任和任课教师的工作,方便学生查询自己的学习情况。该系统主要实现的功能如表1所示。
入口参数:成绩和课程学分。
返回值:应得学分。
参考:
Create function creditconvert(@score numeric(3,1),@ccredits numeric(3,1) )
--@score:考试成绩
--@numeric课程规定学分
Returns numeric(5,2) --应得学分
2)设计用户自模式(视图)。
为学籍管理人员建立如下子模式:
学生基本情况(学号,姓名,性别,班级,学院,获取总学分)
为学生建立如下子模式:
考试通过基本情况(学号,姓名,班级,课程名称,成绩)
为教师建立如下子模式:
选修学生情况(课程编号,学号,姓名,班级,学院,平均成绩)
授课效果(课程编号,选修学期,平均成绩)
1)选择filenew modelConceptualDataModel,建立CDM模型(即概念数据模型)。
2)创建实体,在CDM的图形窗口中,单击设计元素面板上Entity工具(实体),再单击图形窗口的空白处,在单击的位置就出现一个实体符号。点击Pointer工具或右击鼠标,释放Entitiy工具。如图1-1所示。
1)熟练掌握E-R图转换为关系模式的方法
2)掌握使用PowerDesigner将CDM转化为PDM的方法
3)掌握设计视图的方法
2、实验内容
1)PowerDesigner中的PDM可以描述逻辑结构和物理结构,选择SQL Server 2000为DBMS,使用PowerDesigner进行学籍管理PDM的设计。两种方法可以实现,一种方法是直接使用PDM设计元素进行设计,另一种方法是直接将CDM转换为PDM。
3、实验步骤:
1)toolsGenerate Physical Data Model。如图2-1所示。从DBMS下拉列表框选择Microsoft SQL Server 2000,选择Share单选按钮,单击OK即可。
图2-1
2)创建视图
从设计元素面板上选择视图(view),在设计区创建一个视图,双击该视图,进入如图2-2所示界面,创建视图一般需要设置“General”选项卡中的属性和图2-3所示“SQL Query”选项卡中的SQL语句。
Open class_cursor
Fetch next from class_cursor into@clname, @clno , @cterm
While @@fetch_status=0
Begin
Set @avgscore=(select isnull(avg(score),0) from sc a,student b,class c,course d where a.sno=b.sno and b.clno=c.clno and b.clno=@clno and o=o and d.cterm=@cterm)
Declare @avgscore numeric(10,2) --平均成绩
Declare @cterm int --学期
--定义班级游标
Declare class_cursor cursor for select clname,clno,dbo.termconvert(@term,clno) from class where dbo.termconvert(@term,clno)<=8 --过滤掉已经毕业的班级
Select e.sname,d.avgscore,totalcredit from
3)通过控制面板管理工具中的ODBC数据源先创建好数据源,然后Database->connect,如图3-2所示,下拉列表中选择创建好的数据源名称,单击connect。
图3-2
4)Database->execute SQL,如图3-3所示。
图3-3
打开要执行的脚本文件,单击run即可。
5)产生测试数据。Database->generate test data。
5)设置检查约束
如果需要给某些属性设置检查约束,首先选中某属性,然后鼠标点击图1-4红色矩形框所示按钮,或者双击属性,打开对话框,选Standard Checks标签,如图1-5所示。
图1-4
图1-5
在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如表2所示。
表2 对话框中参数的含义
图2-2
图2-3
实验三学籍管理数据库实施
1、实验目的
1)熟练掌握数据库实施的内容。
2)使用PowerDesigner生成数据库脚本并自动创建数据库,熟练掌握利用PowerDesigner进行数据库实施的方法。
2、实验内容
使用PowerDesigner生成学籍管理数据库及其对象的创建脚本并自动创建数据库,进行学籍管理数据库实施。
List Of Values
属性赋值列表,除列表中的值,不能有其他的值
Label
属性列表值的标签
6)建立联系:在图形窗口中创建两个实体后,单击Relationship工具,单击一个实体,在按下鼠标左键的同时把光标拖至别一个实体上并释放鼠标左键,这样就在两个实体之间创建了联系,右键单击图形窗口,释放工具。双击联系图标,打开窗口如图1-6所示。
实验四学分学期转换函数设计
1、实验目的
通过韩式的编写与调试,熟练掌握SQL函数的编写、调试与使用方法。
2、实验内容
1)编写学分转换函数,将考试成绩转换为学分。
2)编写学期转换函数。
3、实验步骤
1)学分转换函数
功能要求:在学籍管理中,根据学生选修课程的成绩,查询所获得学分情况。如果成绩大于等于60,则可以获得该课程的学分,否则所得学分为0。
3、实验步骤
1)选择Database-> Generate Database。如图3-1所示。设置directory和filename,单击确定。
图3-1
2)执行脚本,生成数据库对象。首先启动SQL Server2000,建立数据库。PowerDesigner提供两种方法执行脚本,一种是在SQL Server2000中手工执行脚本,生成数据库对象,还有一种是通过ODBC连接数据库口自动执行。前一种方法很简单,我们重点说一下后一种方法。
入口参数:学年和入学年份
返回值:数字表示的学期。
参考:
Create function termconvert(@trem char(11),@clno char(6) )
--@trem:学年
--@clno:班级编号
Returns int --在校第几学期
As
Begin return(convert( numeric,substring(@trem,1,4))-convert( numeric,’20’+substring(@clno,1,2)))*2+convert( numeric,substring(@trem,11,1))