数据库原理及应用实验教案

更新时间:2024-04-07 20:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

攀枝花学院

Panzhihua University

教 案

2011 ~2012 学年度第 2 学期

课 程 名 称 数据库原理 学 时(学 分) 14

适 用 班 级 09网络、09信本 授 课 教 师 刘继光 教 师 职 务 教 学 单 位 计算机学院

教 务 处 制

实验教案编写说明

1、实验教案的编写要求参照《攀枝花学院教案编写规范》(攀院教[2007]04号)执行。

2、实验教案格式可按附后“实验教案”格式采用手写或打印。 3、实验教案的基本内容可包括:教学目的与要求、教学重点与难点、仪器设备及用具、教学过程(含①实验预习检查②实验原理及方法③仪器设备介绍④实验内容及注意事项⑤实验指导要点⑥检查实验结果)、实验预做记录(含①原始实验数据记录②数据处理及结果分析)、实验预习要求、实验报告要求、参考书目、后记等相关内容。 4、实验教案编写应在坚持教案编写基本要求的基础上,充分考虑教师自身条件和学科的差异,针对教师、学科、学生以及教学情景的不同,编写出形式多样,能体现教学风格、具有特色的教案,促进教案的创新。

5、教案编写水平的高低,很大程度上取决于教师钻研教材与实验方法,研究学生实际状况和设计教学方法的水平,取决于教师对本学科知识掌握的深度和广度以及教师教育思想的端正更新。因此,教师应努力提高自身素质,提高教师教案编写水平。

实验教案

实验课程名称 实验课类别 任课教师 授课对象 教材 和 主要参考资料 教学目的和 教学要求 数据库原理及应用 实验学时 16 □独立设课 □非独立设课 1.基础□ 2.专业基础□ 3.专业□ 4.其它□ 刘继光 职称 高级工程师 □本科 □专科 年级:09 专业:信本 网络 班级:09 教材:《数据库系统概论》(第三版),萨师煊等著,高等教育出版社,2000 主要参考书:《数据库系统及应用》,崔巍等,高等教育出版社,2005 通过本课程的学习,主要巩固课堂的理论教学成果,并加强学生动手实践能力培养,为今后的进一步学习或工作奠定一定的实践基础。 学生应初步具备数据库的分析、设计、实现能力,能够运用所学的数据库知识编写小型的基于数据库的应用系统。 重点:数据库基础理论知识的学习; 数据库设计理论知识的学习; 数据库SQL语句的学习与应用。 难点:数据库基础理论知识的学习; 数据库设计理论知识的学习; 数据库SQL语句的学习与应用; 数据库的分析、设计能力的培养。 教学进程安排 教学重点和 教学难点 课次 1 2 3 4 5 6 7 8 实验项目(实验内容) 数据库基本操作实验 数据库完整性约束实验 简单数据查询 连接数据查询 数据库DML语句操作实验 数据库事务及并发控制 数据库设计 学生成绩管理系统 学时 2 2 2 2 2 2 2 2 备 注

课题(项目)名称: 数据库基本操作实验 计划学时: 实验类型: 1.演示性□ 2.验证性□ 3.综合性□ 4.设计性□ 5.其它□ 授课日期: 年 月 日 第 周 星期 第 节 实验一 实验名称:数据库基本操作实验 实验学时:2 实验目的: 1、通过实验,加深学生对数据库基本概念和理论的理解与掌握,能够更好的理论联系实际。 2、通过实验,使学生掌握如下的数据库操作的基本技能与方法: ? 创建、修改、删除数据库 ? 创建、修改、删除数据库表; ? 创建数、删除数据库表的索引; 实验内容及要求(用企业管理期或查询分析器完成): 一、创建、修改、删除数据库;(分别用企业管理器、查询分析器完成) 1、 创建数据库“MyDB”,该数据库有两个数据文件,一个日志文件。数据文件中的一个件初始大小30M,最大值50M,文件属性为自动增长,另一个固定尺寸为20M。日志文件初始大小为50M,每次增长10M。 2、 修改数据库“MyDB”,删除固定大小的数据文件,将数据库名称改为“TESTDB”,增加一个数据文件,数据文件位于E:\\,其他参数默认。 3、 删除创建的数据库。 二、熟悉数据库表的定义、修改操作 1、在Northwind数据库下建立数据库表TEST,表结构为 2、将数据表名称更改为TEST1。 3、将CompanyName的字段长度缩小为30。 4、添加ShippID为主键。 5、将ShippID数据类型改为CHAR(4)。 6、将ShippID列名改为SID。 7、添加列名TestCol,数据类型为VARCHAR(32)。 8、删除列TestCol 9、调换CompanyName、Phone列的顺序。 三、熟悉数据库表索引的建立 1、为上述表建立聚簇索引(ShipperID)与非聚簇(CompanyName)唯一升序索引。输入如下两条数据进行测试(观察现象)。 1 A 3332223 2 A 3352223 2、删除CompanyName列上的索引,在CompanyName建立聚簇索引。 3、删除该数据库表 四、思考与练习 1. 唯一性索引有何作用?聚簇索引与非聚簇有何区别? 2. 创建数据库时,如何创建多个文件组? 第 页

3. 更改数据库表结构可能导致哪些问题? 实验报告要求: 1. 实验目的 2. 实验内容及步骤 3. 实验习题的源程序清单 4. 写出在实验过程中遇到的问题及解决方法 5. 要求字迹端正、条理清晰、概念正确

第 页

课题(项目)名称: 数据库完整性约束实验 计划学时: 实验类型: 1.演示性□ 2.验证性□ 3.综合性□ 4.设计性□ 5.其它□ 授课日期: 年 月 日 第 周 星期 第 节 实验二 实验名称:数据库完整性约束实验 实验学时:2 实验目的: 数据库完整性是保证数据库中数据正确性的重要手段,通过实验,使学生加深对数据库完整性的基本概念的理解与掌握,并能够熟练创建、修改、删除各类完整性约束,从而达到灵活应用的目的。 ? 实体完整性约束验证; ? 引用完整性验证; ? 唯一约束; ? 非空约束; ? 缺省值; ? 检查约束; 实验内容及要求: 五、数据库完整性约束试验。 试验所使用的数据库表结构如下: Student(学生记录表) SNO(学号) CHAR(10) PRIMARY KEY SNAME(姓名) VARCHAR(16) SEX(性别) VARCHAR(2) DEPT(专业号) VARCHAR() AGE(年龄) SMALLINT Course(课程表) CNO(课程号) CHAR(4) PRIMARY KEY CNAME(课程名) VARCHAR(32) SCORE(学分) SMALLINT SC(学生选课成绩表) SNO(学号) CHAR(7) PRIMARY KEY CNO(课程号) CHAR(4) PRIMARY KEY GRADE(成绩) INT 使用查询分析器,建立数据库SC,数据库参数默认。建立Student、Course、SC数据库表,并完成下面题目: 1、“课程名”属性必须取唯一值。插入重复值,出现什么现象,为什么? 2、“课程名”也不能取空值。插入空值,出现什么现象,为什么? 3、“学分”属性只能取值{1,2,3,4},如果没有输入学分信息,学分的缺省值为3。插入非{1,2,3,4}的值,出现什么现象,为什么? 4、“学号”的前两位为“20”,第三位与第四位为数字。插入前两位不是“20”的学号,出现什么现象,为什么? 5、“GRADE”大于等于0并且小于等于100。插入分数不在0~100之间的值,出现什么现象,为什么? 6、SC中,SNO、CNO为外键,请建立外键约束。插入SNO或CNO没有在Student和Course中出现的记第 页

录,出现什么现象,为什么? 六、思考与练习。 1. 外键约束约束有何作用?外键取值有何要求? 2. 实体完整性通过什么机制保证? 3. 唯一性约束与主键有何区别? 4. SQL Server中唯一性约束通过什么机制保证? 实验报告要求: 6. 实验目的 7. 实验内容及步骤 8. 实验习题的源程序清单 9. 写出在实验过程中遇到的问题及解决方法 10. 要求字迹端正、条理清晰、概念正确 第 页

课题(项目)名称: 数据库DML语句操作实验 计划学时: 实验类型: 1.演示性□ 2.验证性□ 3.综合性□ 4.设计性□ 5.其它□ 授课日期: 年 月 日 第 周 星期 第 节 实验三 实验名称:数据库DML语句操作实验 实验学时:2 实验目的: 数据库更新操作是SQL语句的重要组成部分,通过试验,加深学生对数据更新操作基本概念的理解与掌握,从而达到灵活应用的目的。 实验内容及要求: 试验所使用的数据库表结构如下: Student(学生记录表) SNO(学号) CHAR(10) PRIMARY KEY CHECK LEFT(SNO, 7) = '20073210' SNAME(姓名) VARCHAR(16) NOT NULL SEX(性别) VARCHAR(2) NOT NULL DEPT(专业号) VARCHAR(16) NOT NULL AGE(年龄) SMALLINT NOT NULL Course(课程表) CNO(课程号) CHAR(4) PRIMARY KEY CNAME(课程名) VARCHAR(32) NOT NULL UNIQUE SCORE(学分) SMALLINT NOT NULL DEFAULT 4 SC(学生选课成绩表) SNO(学号) CHAR(7) PRIMARY KEY FOREIGN KEY CNO(课程号) CHAR(4) PRIMARY KEY FOREIGN KEY GRADE(成绩) INT CHECK (Grade >= 0 and Grade <= 100) 七、Insert 1、 向Student表插入下面5单条记录 2007321001 张三 男 CS 17 2007321002 李四 男 CS 18 2007321003 王武 男 CS 18 2007321004 郑艳 女 CS 16 2007321005 刘莉 女 CS 18 2、 向Course插入4门课程信息 C001 数据库原理 NULL C002 自动控制原理 3 C003 专业英语 2 C004 数字电路 3 3、 向SC表插入 2007321001 C001 80 2007321001 C002 79 2007321001 C003 69 2007321001 C004 88 第 页

2007321002 C001 68 2007321002 C002 73 2007321002 C003 99 2007321002 C004 82 2007321003 C001 70 2007321003 C002 72 2007321003 C003 87 2007321003 C004 45 2007321004 C001 NULL 2007321004 C002 NULL 2007321004 C003 87 2007321004 C004 93 4、 将Student表的数据批量插入##Student中 insert into ##student select * from student 5、 向Student表插入一条记录 学号:2007321006 姓名:李新 性别:男 专业:与2007321003在同一专业 年龄:与2007321002的年龄相同 6、 学号为2007321005的学生,选修了所有的课程,每门功课都还没有成绩,请将该同学的选课记录插入到选课表中。 八、Update 1、 单条记录更新:将student表中,学号为2007321003的记录年龄更新19,系编码更2007321004新为MA update student set age=19 where sno='2007321003' update student set dept='MA' where sno='2007321004' 2、 单条记录更新:将student表中,学号为2007321003的记录年龄更新为学号为2007321004的年龄减1,性别更新成与2007321005的性别相同 update student set age=(select age from student where sno ='2007321004')-1 where sno='2007321003' update student set sex=(select age from student where sno ='2007321005') where sno='2007321003' 3、 批量更新:将student表中,所有年龄大于18岁的男同学的专业信息更改成MA,年龄更新成20岁 4、 5、 带子查询的更新:将SC表中, Student中计算机系的学生的所有考试成绩更新为60 Update sc set grade = 60 where sno in (select sno from student where dept = ‘CS’) Update sc set grade = 60 where sno in (select sno from student where sc.sno = student.sno and dept = ‘CS’) Update sc set grade = 60 from student s where s.sno = sc.sno and dept = ‘CS’ 九、Delete 1、单条记录删除: 删除student中,学号为2007321005的记录(想想应该如何删除) 2、批量删除: 删除SC中,学号为2007321004的记录 第 页

3、带子查询的删除:删除Student表中存在,但是在SC表中不存在选课记录的学生。 十、思考与练习 1. 临时表分为哪两种?有什么区别? 实验报告要求: 11. 实验目的 12. 实验内容及步骤 13. 实验习题的源程序清单 14. 写出在实验过程中遇到的问题及解决方法 15. 要求字迹端正、条理清晰、概念正确 附1:表创建语句 create table student ( SNO CHAR (10) PRIMARY KEY check (left(sno, 8) = '20073210'), SNAME VARCHAR(16) not null, SEX VARCHAR(2) not null, DEPT VARCHAR(16) not null, AGE SMALLINT not null ) create table course ( CNO CHAR(4) PRIMARY KEY, CNAME VARCHAR(32) unique, SCORE SMALLINT not null default 4 check (score in (1, 2, 3, 4)) ) create table sc ( SNO CHAR(10) foreign key references student(sno), CNO CHAR(4) foreign key references course(cno), GRADE INT check (grade >= 0 and grade <= 100), PRIMARY KEY (sno, cno), ) 第 页

实验六 实验名称:视图的使用 实验内容及要求: 一、创建视图 1、创建信息系学生的视图(注意with check option的用途) 2、创建信息系选修了1号课程的学生的视图 3、创建信息系选修了3号课程并且该课程的考试成绩大于90分的学生视图 4、创建反映学生出生年份的视图 5、创建视图,该视图包含学号、姓名、所在系、性别、课程名称、考试成绩 6、为所有考试成绩都大于85的学生创建视图,该视图包含学号、姓名、所在系、课程名称、考试成绩 7、为选修了3门以上课程的学生信息创建视图 8、依据(1)创建信息系的女生信息视图 9、创建信息系学生的视图,信息包括学生姓名、性别、年龄、系别 二、视图查询 1、在信息系学生的视图中,查询年龄小于20的学生 2、查询选修了1号课程的计算机系的学生 3、创建信息系选修了3号课程并且该课程的考试成绩大于90分的数学系的学生信息 4、查询信息系学生出生年份信息 5、查询信息系的女生的考试情况,包括学号、姓名、课程名称、考试成绩 6、查询信息系,考试成绩都大于85的学生考试成绩信息 三、更新视图 1、将信息系的学生“张三”名字更改为“李四” 2、向信息系插入一条新的学生记录:学号为2007321015,姓名为赵兴,年龄为23 3、删除信息系中,学号为2007321015的学生 4、对创建视图中的9创建的视图,进行插入操作,出现什么情况,为什么? 四、删除视图 对上述创建的视图进行删除(注意,删除视图1时,对视图8进行查询,出现什么情况,为什么?。 五、思考与练习 1、with check option的作用? 2、那些视图能够被更新? 课题(项目)名称: 存储过程 计划学时: 实验类型: 1.演示性□ 2.验证性□ 3.综合性□ 4.设计性□ 5.其它□ 授课日期: 年 月 日 第 周 星期 第 节 第 页

实验七 实验名称:存储过程 实验学时:2 实验目的: 一、 试验目的 事务处理及其并发控制是所有数据库产品的一个关键问题,是提供数据一致性和可恢复性的重要保障,事务处理方式的不同会导致数据库性能和功能上的巨大差异,熟练掌握数据库事务处理和并发控制的基本原理对于后续的学习和工作有着重要的帮助。 1). 通过试验,加深学生对事务的基本概念理解语掌握; 2). 通过试验,加深学生对并发控制的基本概念理解,认识不正确的并发控制所带来的危害; 3). 通过试验,加深学生对锁的基本概念的掌握与理解,认识锁带来的问题; 二、 实验环境 硬件: 奔腾4 处理器,1.8GHz,512M内存 操作系统软件: WindowsXP 数据库系统: SQLServer 2000 桌面版 数据库用户帐号:sa 数据库用户口令: 使用的数据库: Northwind 数据库表: ##temp 数据库工具: 企业管理器、查询分析器 实验内容及要求: 一、存储过程的创建和使用 i. 使用带有复杂 SELECT 语句的简单过程 下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。该存储过程不使用任何参数。 USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = 'au_info_all' AND type = 'P') DROP PROCEDURE au_info_all GO CREATE PROCEDURE au_info_all AS SELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_id GO au_info_all 存储过程可以通过以下方法执行: EXECUTE au_info_all -- Or EXEC au_info_all 第 页

如果该过程是批处理中的第一条语句,则可使用: au_info_all ii. 使用带有参数的简单过程 下面的存储过程从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程接受与传递的参数精确匹配的值。 USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = 'au_info' AND type = 'P') DROP PROCEDURE au_info GO USE pubs GO CREATE PROCEDURE au_info @lastname varchar(40), @firstname varchar(20) AS SELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_id WHERE au_fname = @firstname AND au_lname = @lastname GO au_info 存储过程可以通过以下方法执行: EXECUTE au_info 'Dull', 'Ann' -- Or EXECUTE au_info @lastname = 'Dull', @firstname = 'Ann' -- Or EXECUTE au_info @firstname = 'Ann', @lastname = 'Dull' -- Or EXEC au_info 'Dull', 'Ann' -- Or EXEC au_info @lastname = 'Dull', @firstname = 'Ann' -- Or EXEC au_info @firstname = 'Ann', @lastname = 'Dull' 如果该过程是批处理中的第一条语句,则可使用: au_info 'Dull', 'Ann' 第 页

-- Or au_info @lastname = 'Dull', @firstname = 'Ann' -- Or au_info @firstname = 'Ann', @lastname = 'Dull' iii. 使用带有通配符参数的简单过程 下面的存储过程从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程对传递的参数进行模式匹配,如果没有提供参数,则使用预设的默认值。 USE pubs IF EXISTS (SELECT name FROM sysobjects WHERE name = 'au_info2' AND type = 'P') DROP PROCEDURE au_info2 GO USE pubs GO CREATE PROCEDURE au_info2 @lastname varchar(30) = 'D%', @firstname varchar(18) = '%' AS SELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_id WHERE au_fname LIKE @firstname AND au_lname LIKE @lastname GO au_info2 存储过程可以用多种组合执行。下面只列出了部分组合: EXECUTE au_info2 -- Or EXECUTE au_info2 'Wh%' -- Or EXECUTE au_info2 @firstname = 'A%' -- Or EXECUTE au_info2 '[CK]ars[OE]n' -- Or EXECUTE au_info2 'Hunter', 'Sheryl' -- Or EXECUTE au_info2 'H%', 'S%' iv. 使用 OUTPUT 参数 OUTPUT 参数允许外部过程、批处理或多条 Transact-SQL 语句访问在过程执行期间设置的某个值。下面的示例创建一个存储过程 (titles_sum),并使用一个可选的输入参数和一个输出参数。 第 页

USE pubs GO IF EXISTS(SELECT name FROM sysobjects WHERE name = 'titles_sum' AND type = 'P') DROP PROCEDURE titles_sum GO USE pubs GO CREATE PROCEDURE titles_sum @@TITLE varchar(40) = '%', @@SUM money OUTPUT AS SELECT 'Title Name' = title FROM titles WHERE title LIKE @@TITLE SELECT @@SUM = SUM(price) FROM titles WHERE title LIKE @@TITLE GO 接下来,将该 OUTPUT 参数用于控制流语言。 说明 OUTPUT 变量必须在创建表和使用该变量时都进行定义。 参数名和变量名不一定要匹配,不过数据类型和参数位置必须匹配(除非使用 @@SUM = variable 形式)。 DECLARE @@TOTALCOST money EXECUTE titles_sum 'The%', @@TOTALCOST OUTPUT IF @@TOTALCOST < 200 BEGIN PRINT ' ' PRINT 'All of these titles can be purchased for less than $200.' END ELSE SELECT 'The total cost of these titles is $' + RTRIM(CAST(@@TOTALCOST AS varchar(20))) 二、 触发器 1、对SC表进行删除和更新的时候,要求对删除和更新之前的数据进行备份,备份到His_SC中。 2、对SC表进行更新的时候,将Inserted和Deleted数据插入His_SC,观察两条记录的实际情况。 3、向SC表插入或修改一记录时,通过触发器检查课号和学号是否存在,若不存在,则取消插入或修改操作。 4、更改Student的SNO字段值时,该字段在SC表中的对应值也做相应修改; 5、删除Student表中一记录的同时删除该记录SNO字段值在SC表中对应的记录; 第 页

试验3、4、5分别在启用外键约束和不启用外键约束的两种条件下进行,看看执行结果有什么不同 三、 思考与联系 v. 创建存储过程,通过该存储过程添加学生记录。 vi. 创建存储过程,通过该存储过程修改学生记录。 vii. 创建存储过程,通过该存储过程删除学生记录。 课题(项目)名称: 数据库事务及并发控制 计划学时: 实验类型: 1.演示性□ 2.验证性□ 3.综合性□ 4.设计性□ 5.其它□ 授课日期: 年 月 日 第 周 星期 第 节 第 页

实验八 实验名称:数据库事务及并发控制 实验学时:2 实验目的: 三、 试验目的 事务处理及其并发控制是所有数据库产品的一个关键问题,是提供数据一致性和可恢复性的重要保障,事务处理方式的不同会导致数据库性能和功能上的巨大差异,熟练掌握数据库事务处理和并发控制的基本原理对于后续的学习和工作有着重要的帮助。 1). 通过试验,加深学生对事务的基本概念理解语掌握; 2). 通过试验,加深学生对并发控制的基本概念理解,认识不正确的并发控制所带来的危害; 3). 通过试验,加深学生对锁的基本概念的掌握与理解,认识锁带来的问题; 四、 实验环境 硬件: 奔腾4 处理器,1.8GHz,512M内存 操作系统软件: WindowsXP 数据库系统: SQLServer 2000 桌面版 数据库用户帐号:sa 数据库用户口令: 使用的数据库: Northwind 数据库表: ##temp 数据库工具: 企业管理器、查询分析器 五、 试验内容 1、内容:事务的控制 2、内容:事务的隔离级别试验 3、内容:锁的模拟 六、 试验步骤 开机后,打开企业管理器,连接到数据库后,进入查询分析器。 1、 事务的控制 数据准备:执行如下命令Select * into ##temp from Customers,将Customers的数据倒入到##temp表中。 ? 启动事务,执行删除后,回滚事务 ? 选择##temp的数据,察看记录总数 ? 显式启动事务 ? 删除##temp表的数据 ? 选择##temp数据,察看记录总数 ? 回滚事务 ? 选择##temp数据,察看记录总数 ? 启动事务,执行删除后,提交事务 ? ? 选择##temp数据,察看记录总数 显式启动事务 ? 删除##temp表的数据 ? 选择##temp的数据,察看记录总数 ? ? ? 回滚事务 选择##temp数据,察看记录总数 比较这两次执行效果的差异,为什么会有这些差异? 2、 事务的隔离级别试验 第 页

数据准备:执行如下命令Select * into ##temp from Customers,将Customers的数据倒入到##temp表中。 ? 脏读 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3、 锁的模拟 ? ? ? ? ? ? ? 启动两个查询分析器,分别叫(A,B) 在A中,显式启动事务,察看customerid = 'ANTON'的记录 在B中,将customerid = 'ANTON’地址更新为’AAAAAA’ 在A中,将customerid = 'ANTON’地址更新为’BBBBBB’ 观察A窗口的结果,为什么? 在B中,提交事务 观察A窗口的结果,为什么? 启动两个查询分析器,分别叫(A,B) 在A中,选择##temp表中数据,察看记录总数 在A中,显式启动事务 在B中,将事务隔离级别设为UNCOMMITTED 在该查询分析器中选择##temp表数据,察看记录总数 回到先前窗口 回滚事务 选择##temp数据,察看记录总数 再次切查询分析器窗口 选择##temp数据,察看记录总数 观察结果,为什么会有这些现象? 启动两个查询分析器,分别叫(A,B) 在A中,显式启动事务,察看customerid = 'ANTON'的记录(注意地址中的数据) 在B中,将customerid = 'ANTON’地址更新为’AAAAAA’ 在B中,再次察看customerid = 'ANTON'的记录(注意地址中的数据) 在B中,提交事务 在A中,再次察看customerid = 'ANTON'的记录(注意地址中的数据) 在A中,提交事务 观察结果,为什么会有这些现象? 启动两个查询分析器,分别叫(A,B) 在A中,显式启动事务,察看customerid = 'ANTON'的记录(注意地址中的数据) 在B中,将customerid = 'ANTON’地址更新为’AAAAAA’ 在B中,再次察看customerid = 'ANTON'的记录(注意地址中的数据) 在B中,提交事务 在A中,再次察看customerid = 'ANTON'的记录(注意地址中的数据) 在A中,将customerid = 'ANTON’地址更新为’BBBBBB’ 在A中,提交事务 在A,B窗口分别察看customerid = 'ANTON’的记录,结果如何,为什么? ? 在A中,删除##temp表的数据 ? 不可重复读 ? 在B中,显式启动事务,察看customerid = 'ANTON'的记录(注意地址中的数据) ? 丢失修改 ? 在B中,显式启动事务,察看customerid = 'ANTON'的记录(注意地址中的数据) ? 在B中,显式启动事务,察看customerid = 'ANTON'的记录 第 页

? 附常用命令: 启动事:begin transaction 启动事务:commit 回滚事务:rollback 事务隔离级别设置:set transaction isolation level {read committed, read uncommitted, repeatable read, serializable} 在A窗口,再次察看customerid = 'ANTON'的记录,结果如何,为什么? 课题(项目)名称: 数据库设计 计划学时: 实验类型: 1.演示性□ 2.验证性□ 3.综合性□ 4.设计性□ 5.其它□ 授课日期: 年 月 日 第 周 星期 第 节 第 页

试验9 实验名称:数据库设计 一、实验目的: 本章实验通过给学生一个设计实例,要求设计E-R模型,并分析。然后选择熟悉的DBMS将给出的E-R模型转换为关系模型,并按要求实现创建数据库、数据表、表间关系等(修改表结构)。 二、实验准备: 数据库设计 数据库设计的一个最基本的问题是如何建立一个好的数据库模式。即给出一组数据,如何构造一个适合于它们的数据模式,使数据库系统无论是在数据存储方面,还是在数据操纵方面都有较好的性能。E-R模型方法讨论了实体与实体之间的数据联系,现在来讨论实体内部属性与属性之间的数据关联,目标是要设计一个“好”的数据库模型。 概念结构设计 在需求基础上,用数据模型表示数据及其联系。 设计E—R图步骤: 1、设计局部E-R图。概念结构设计依据是需求分析阶段的DFD/DD。在DFD中选择适当层次的DFD,作为设计局部E-R图的出发点。中层允许有一定的重叠。 (1)确定实体集合 第一步(关键一步)数据流 / 数据源 / 目的 / 数据存储 根据具体情况决定,常作为实体集合。 (2)联系 标明:1:1,1:N,N:M。原则上:与处理框相关的输入流(数据流),输出流(数据目的地),输入或输出的工作之间的可能存在的联系。 (3)属性 属性名尽量和数据流中数据项名相同。为简化E-R图,属性可仅在DFD中描述。 (4)主关键字 属性中标明作为PK(primary key)的属性集合. (5)其它 建E-R图,要完善DD(DD:包括实体集,联系,属性的描述)某些情况:描述产生频率(每年/月/季),是否长期保存,变化快慢,保密级别,存在的约束。 2、集成局部E-R图 在设计局部E-R图的基础上,将局部E-R图集成为全局E-R图。集成时要解决的问题:消除冲突、消除冗余 3、合并局部E-R图 合并局部E-R图中相同部分,尽可能的保留特殊部分,删除冗余部分,用累加的方式一次集成两个局部E-R图。 4、优化全局E-R图必要时应对全局E-R图进行修改,重构和优化得到最佳的全局E-R图方案。 三、实验内容: 1、数据模型分析 设计一个教学管理系统 各部门对教学管理系统的要求: 学生处:管理各院系班级学生的基本情况 教务处:掌握学生各门课程的成绩情况 计财处:管理学生每学期的学费收缴情况 各院系:登录本院系学生各门课程的成绩 2、建立E—R模型 3、E-R模型转换为关系模型 4、创建数据库表

第 页

课题(项目)名称: 学生成绩管理系统 计划学时: 实验类型: 1.演示性□ 2.验证性□ 3.综合性□ 4.设计性□ 5.其它□ 授课日期: 年 月 日 试验10 实验名称:学生成绩管理系统 实验学时:4 一、 试验目的 综合性实验目的是培养学生分析问题和解决问题的实际动手能力,本次试验要求学生利用所学的数据库基础理论第 周 星期 第 节 知识,结合编程技术完成简单学生成绩管理系统,从而加深对数据库系统基本概念的理解与掌握,认识数据库系统重要作用,为将来学习工作奠定一定基础。 二、 实验环境 硬件: 奔腾4 处理器,1.8GHz,512M内存 操作系统软件: WindowsXP 数据库系统: SQLServer 2000 桌面版 数据库用户帐号:sa 数据库用户口令: 使用的数据库: Northwind 数据库表: Student(学生基本信息表)、Course(课程基本信息表)、SC(成 绩表) 开发工具: C# 三、 试验内容及要求 1、建立Student、Course、SC表结构及其约束关系 2、利用C#开发学生基本信息维护(录入、修改、删除、查询)模块 3、利用C#开发课程基本信息维护(录入、修改、删除、查询)模块 4、利用C#开发选课信息维护(录入、修改、删除、查询)模块 5、利用C#开发学生成绩维护(录入、修改、删除、查询)模块 四、 试验内容及要求 1. 实验目的 2. 实验内容及步骤 3. 实验习题的源程序清单 4. 写出在实验过程中遇到的问题及解决方法 5. 要求字迹端正、条理清晰、概念正确 第 页

第 页

本文来源:https://www.bwwdw.com/article/rr8r.html

Top