第一篇:SQL_Server2008数据库教案剖析
《SQL Server数据库》
教案
第1章 SQL Server 的安装和配置
一、教学目标: 1.了解课程要求。
2.了解SQL Server 的发展和特点。3.了解SQL Server 的安装和配置。4.了解系统数据库和系统表的作用.5.了解SQL Server 的9个常用工具。
二、教学重点和难点:
重点:熟悉企业管理器与查询分析器 难点:系统数据库和系统表的作用
三、教学方法与手段:
注重实例分析,采用一次理论一次实验的教学方式。理论教学使用多媒体投影室。
四、教学课时:
3课时
五、教学基本内容:
1、课程要求简介:共60课时,分为两部分,课堂教学30课时,实验教学30课时;课程培养目标:通过本课程的学习,掌握 SQL Server 环境下进行编程的知识,具备利用 SQL Server 进行数据库应用程序开发的基本能力;考核要求……(5分钟)
2、SQL Server的定义:是一个高性能的C/S结构的RDBMS,是为支持高容量的事务处理(如在线订购录入、存货目录、记帐或支付)以及数据仓库和决策支持系统而设计的。
3、SQL Server 的发展、特点和新特性。
4、SQL Server 的安装和配置。(操作演示一部分安装过程;30分钟)
5、了解系统数据库和系统表的作用:主数据库master、msdb、pubs等。演示:打开企业管理器,展开服务器,详细分析各个系统数据库和系统表
6、了解SQL Server 的主要管理工具,熟悉企业管理器、查询分析器。(1)讲授SQL Server 的主要管理工具,分别打开九个工具,演示分析企业管理器的功能。
演示:打开企业管理器,展开服务器,新建一个数据库sales。注意:可以由教师讲解,同时学生操作演示再创建一个数据库。(2)分析查询分析器的使用方法,演示打开查询分析器的两种方法。例:在查询分析器地命令行窗口中输入如下的SQL语句:
use pubs select * from jobs(3)了解SQL Server 服务管理器的使用方法。
(4)掌握创建SQL Server服务器组的方法及注册SQL Server服务器的方法。
注意:如果该服务器已成功注册,则显示具有改名称的服务器已存在,如果该服务器不能成功注册,则可能该服务器的服务没有启动,或者是现在的用户没有权限注册该服务器。
(5)打开服务器网络实用工具和客户端网络使用工具,分析它们的功能。(6)演示打开联机帮助文档的三种方法。如:SHIFT+F1;选择菜单栏“帮助”等。
7、小结
8、思考与练习
第2章 SQL Server 数据类型
一、教学目标:1.掌握各种数据类型的特点和基本用法 2.学会创建和删除用户自定义数据类型
二、教学重点和难点:
教学重点:掌握各种数据类型的用法 教学难点:用户自定义数据类型的创建
三、教学方法与手段:
采用互动式教学方法,理论教学使用多媒体投影室。
四、教学课时:
3课时
五、教学基本内容:
1、复习上次课内容,详细分析25个系统数据类型(50分钟)
在绝大多数编程环境中,数据类型由系统定义,这类数据类型通常称之为系统数据类型。
字符数据的类型:Char,Varchar和Text 数值型数据类型:bigint,int,smallint,tinyint,decimal,numeric,float和real 货币型数据类型:Money和Smallmoney 时间/日期数据类型: Datetime 和 Smalldatetime
二进制数据类型:Binary(固定长度)和Varbinary(可变长度)
2、创建用户自定义数据类型
用户定义的数据类型基于在 Microsoft SQL Server 中提供的数据类型。当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义的数据类型。请看例子
例2.1 Use Northwind Exec sp_addtype uname,'Varchar(8)', 'Not Null ' 例2.2 Use Sales Exec sp_addtype telephone,'varchar(24)','Not Null' Exec sp_addtype fax,'varchar(24)','Null'
3、删除用户定义的数据类型sp_droptype
注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认或者规则时,这种用户定义的数据类型不能删除。
4、小结:
本章重点介绍了SQL Server 数据类型的分类、使用方法和使用时的注意事项。课本19页表2.1列出了SQL Server常见的数据类型。
5、课堂练习:
创建一个数据类型,要求其为字符型,最大长度为12,不允许为空。
第3章 数据库和数据表
一、教学目标:
1、了解数据库的两种存储结构,以及文件和文件组的概念。
2、掌握创建数据库的三种方法。
3、学会修改数据库的属性和删除数据库。
2、掌握创建表的两种方法。
3、掌握创建、删除和修改约束的方法。
二、教学重点和难点:
教学重点:设计和创建各种约束 教学难点:文件和文件组的概念
三、教学方法与手段:
注重实例,采用一次理论一次实验的教学方法。理论教学使用多媒体投影室。
四、教学课时:
3课时
五、教学基本内容:
1、复习第二章内容。
2、数据库由数据库文件(数据和对象)和事务日志文件(操作日志)组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。
主文件.mdf辅助文件.ndf事务日志文件.ldf3、创建数据库的过程实际上就是为数据库设计名称、设计所占用的存储空间和存放文件位置的过程等。
演示操作: A.使用向导创建数据库 B.使用企业管理器创建数据库 C.使用Transact-SQL语言创建数据库
思考:请学生上讲台完成:使用默认参数用Transact-SQL语言创建数据库。
4、修改数据库的方法:重命名、收缩数据库等。
如:exec sp_renamedb 旧名,新名
5、表是包含数据库中所有数据的数据库对象,用来存储各种各样的信息。(30分钟)
演示操作:利用企业管理器创建表 实例:创建employees员工表… B、利用Transact-SQL语言创建表
实例:创建goods进货表…
注意:请学生上讲台完成sell表的建立。
6、约束是SQL Server提供的自动保持数据库完整性的一种方法。分析5种约束类型。分别使用2种方法创建以下约束:(40分钟)
主键约束、唯一性约束检查约束默认约束外键约束
关键字分别为:primary key、unique、check、default、foreign key。提示:教师讲解结束,请学生为sales数据库的各个表设计并创建各种约束。
7、分别使用2种方法增加、删除和修改employees的字段。
8、查看表、删除表的演示操作。
9、小结
10、课后作业
第4章 数据库的查询
一、教学目标:
1、掌握如何使用update、insert、delete命令操作表中数据。
2、掌握使用 Select 语句查询数据的方法。
二、教学重点和难点:
教学重点:多表联接查询 教学难点:嵌套查询的使用
三、教学方法与手段:
采用互动式教学方法。理论教学使用多媒体投影室。
四、教学课时:
6课时
五、教学基本内容:
1、复习上次课内容
2、请学生上讲台演示:为t_student输入相应数据,并修改和删除数据。提问思考:如何使用语句命令的方法完成学生演示的数据操作?
3、SELECT语句能够从数据库中检索出符合用户需求的数据,并将结果以表格的形式返回,是SQL Server中使用最频繁的语句之一。它功能强大,所以也有较多的子句,包含主要子句的基本语法结构如下:
SELECT 列名1 [ ,列名2 ]...[ INTO 新表名 ] FROM 表名1 [ ,表名2 ]...[ WHERE 条件 ] [ GROUP BY 列名列表 ] [ HAVING 条件 ] [ ORDER BY 列名列表 [ASC | DESC] ] 针对student数据库的3个表,举例,详细分析SELECT语句的各个子句。重点分析以下几方面的问题:
如何选择表中的列,列的别名,生成新的数据表等; 使用ORDER BY子句,进行数据排序; 使用比较运算符、逻辑运算符和LIKE、IN、BETWEEN等关键字过滤查询结果; 使用聚合函数,例如COUNT、AVG、MAX、MIN、SUN等汇总数据;
使用分组子句GROUP BY和HAVING,使用分组计算子句COMPUTE和COMPUTE BY; 联接查询的五种类型:内联接、左外联接、右外联接、完全外部联接、交叉联接;
使用UNION操作符,掌握联合查询的方法; 使用嵌套查询的方法。
4、用update、insert、delete命令操作表中数据。
提问:A、update语句中没有where会如何?
B、insert语句中没有字段名和有字段名的区别? C、delete语句中没有where语句会如何?
5、根据查询结果的不同将联接查询分为五种类型:内联接、左外联接、右外联接、完全外部联接、交叉联接。举例详细分析各种类型。
6、嵌套查询又叫子查询,嵌套查询是指在一个SELECT语句的WHERE子句或HAVING子句中,又嵌套有另外一个SELECT语句的查询。嵌套查询中上层的SELECT语句块称为父查询或外层查询,下层的SELECT语句块称为子查询或内层查询。例子:
SELECT * FROM employees WHERE 编号=ANY(SELECT 进货员工编号 FROM goods)注意:详细分析any和all的区别。
7、小结
8、课堂练习(50分钟)
注意:先由学生做课堂练习,后教师详细讲解
第5章 索引与数据完整性
一、教学目标:1.了解索引的定义、优点和分类
2.掌握创建、修改和删除索引的方法 3.理解数据完整性的概念
二、教学重点和难点:
重点:使用语句创建索引;
难点:聚集索引与非聚集索引的理解。
三、教学方法与手段:
注重实例,理论教学使用多媒体投影室。
四、教学课时:
3课时
五、教学基本内容:
1、复习。(5分钟)
2、数据库中的索引是一个列表,在这个列表中包含了某个表中一列或者若干列值的集合,以及这些值的记录在数据表中的存储位置的物理地址。
优点:可以大大加快数据检索速度可以保证数据记录的唯一性等。
3、索引的分类:clusterednonclustered复合索引唯一索引
注意:举例书本目录,分析聚集索引与非聚集索引的区别创建索引的三种方法:
A、使用企业管理器创建索引,举例:为employees表创建索引I_电话。B、使用Transact-SQL语句创建索引,实例:在goods表创建索引I_进货时间。C、使用向导创建视图查看、修改和删除索引
6、索引的分析与维护
创建索引后,必须对索引进行维护,确保索引的统计信息是的有效的,才能够提高查找速度。随着更新操作不断的执行,数据会变得支离破碎,这些数据碎片会导致额外的页读取,防碍数据的并行扫描。应该定期整理索引清除数据碎片,提高数据读取的性能。
7、数据完整性 为了维护数据库中的数据和现实世界的一致性,SQL Server提供了确保数据库的完整性的技术。数据完整性是指存储在数据库中的数据的一致性和准确性。数据完整性有3中类型:域完整性、实体完整性和参照完整性。
8、小节
为什么要使用索引,索引的特点是什么; 索引分类的依据是什么,了解各种索引的区别;
掌握创建索引的三种方法,在创建索引的过程中如何设定其属性和参数; 掌握删除和修改索引的方法; 了解数据完整性的概念和分类; 了解数据库完整性和约束的关系;
掌握实现域完整性、实体完整性和引用完整性的各种方法。
9、课堂练习
第7章 视图
一、教学目标:
1、了解视图和数据表之间的区别、视图的优点。
2、掌握创建、修改和删除视图的方法。
3、掌握通过视图修改数据表的方法。
二、教学重点和难点:
教学重点:使用命令创建视图; 教学难点:如何通过视图修改数据表。
三、教学方法与手段:
采用互动式教学方法。理论教学使用多媒体投影室。
四、教学课时:
3课时
五、教学基本内容:
1、复习:使用命令查询所有男学生的姓名、年龄、选修课程、成绩。(请学生上讲台演示,5分钟)
select t_student.s_name 姓名,year(getdate())-year(birthday)年龄,t_course.c_name 课程名称,t_score.score 成绩
from t_student,t_course,t_score where t_student.s_number=t_score.s_number and t_course.c_number=t_score.c_number 如果在以上程序前加命令:CREATE VIEW a AS,则可以生成一个虚拟的表——视图。
2、由以上引导出视图的概念:是从一个或者多个数据表或视图中导出的虚表,它的结构和数据是对数据表进行查询的结果。
3、视图的优点
视点集中、简化操作、定制数据、合并分割数据、安全性
4、创建视图的三种方法: A、使用企业管理器创建视图。
例如,现在需要建立一个视图,通过该视图能够方便快捷地知道笔记本电脑的销售情况,则可以将sell和goods两张表同时添加到视图中,在表sell中 选择“所有列”复选框,同时在表goods中选择“商品名称”字段对应的复选框。B、使用Transact-SQL语句创建视图,例如,创建一个新视图v1,要求基表选择goods,sell,employees,来源字段为sell表中的销售编号、商品编号和数量;goods表中的商品名称;employees表中编号和姓名,要求查询采购部的赵飞燕所采购商品的销售情况
C、使用向导创建视图。
5、修改和重命名视图
6、掌握通过视图修改数据表的方法,使用时应该注意以下几点: 修改视图中的数据时每次都只能影响一个基表。不能修改那些通过计算得到的字段。如果视图引用多个表时,无法用DELETE命令删除数据,若使用UPDATE命令则应与INSERT操作一样,被更新的列必须属于同一个表。执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。如果在创建视图时指定了WITH CHECK OPTION选项,那么所有使用视图修改数据库信息时,必须保证修改后的数据满足视图定义的范围。
7、举例:使用视图查询、修改数据
8、小结
9、课堂小练习。(10分钟)
第7章 Transact-SQL程序设计
一、教学目标:
1、了解批处理、全局与局部变量的概念。
2、掌握常用运算符及其优先级、常用函数的格式及用法。
3、掌握流程控制语句的种类及用法。
4、掌握游标的使用
二、教学重点和难点:
重点:流程控制语句的使用 难点:打开和使用游标
三、教学方法与手段:
注重举例,理论教学使用多媒体投影室。
四、教学课时:
3课时
五、教学基本内容:
1、两个GO之间的SQL语句作为一个批处理。两种类型的注释字符:单行注释:使用两个连在一起的减号“--”作为注释符
多行注释:使用“/* */”作为注释符
2、全局变量与局部变量的区别,定义局部变量的关键字为declare。
3、以复习方式提问:运算符及其优先级。
4、系统函数、时间日期函数(如:Day(), getdate(), month(), year()、数学函数、转换函数(如:cast、convert)等等。
举例:函数GETDATE()可以获得当前的日期和时间,使用YEAR(GETDATE())可以获得当年的年份,使用YEAR(birthday)可以获得学生的出生年份。
提问:如何通过出生年月字段求学生年龄?
5、流程控制语句
使用T-SQL语言编程的时候,常常要利用各种流程控制语句去进行顺序、分支控制转移、循环等操作。T-SQL提供了一组流程控制语句,包括:条件控制语句、无条件控制语句、循环语句和返回状态值给调用例程的语句等。
如:BEGIN…END语句块、IF…ELSE语句、WHILE语句、CASE语句、GOTO语 句、RETURN语句、WAITFOR语句
注意:通过教材例子详细分析流程控制语句
6、使用游标
通常情况下,关系数据库中的操作总会对整个记录集产生影响,而在实际应用中,应用程序有时只需要每次处理一条或一部分记录。在这种情况下,就需要使用游标在服务器内部处理结果集,游标可视为一种特殊的指针,它不但可以定位在结果集的特定记录上,还可以从结果集的当前位置查询一条或多条记录并对读取到的数据进行处理。
使用游标要遵循以下顺序:
声明游标→打开游标→读取数据→关闭游标→删除游标
7、(20分钟)思考与练习:学生课堂练习后,教师详细讲解。
8、小结
9、课后思考题(1)用一条查询语句从下列表中找出所有课程分数大于80分的学生姓名。
Name kecheng fenshu 张三 语文 92 张三 数学 75 王五 语文 80 王五 数学 85 王五 英语 91 李四 语文 100 李四 数据 79(2)删除除了自动编号不同以外所有都相同的冗余记录
自动编号 学号 姓名 课程编号 分数 1 99001 张三 D001 90 2 99002 李四 D001 89 3 99001 张三 D001 90 14
第8章 存储过程
一、教学目标:
1、了解存储过程的优点和分类。
2、掌握创建、修改和删除存储过程的方法。
3、学会使用存储过程。
二、教学重点和难点:
教学重点:使用命令创建存储过程 教学难点:带参数的存储过程
三、教学方法与手段:
注重实例,采用一次理论一次实验的教学方法。理论教学使用多媒体投影室。
四、教学课时:
3课时
五、教学基本内容:
1、复习,分析上次课布置的“课后思考题”。(10分钟)
2、在使用Transact-SQL语言编程的过程中,我们可以将某些需要多次调用的实现某个特定任务的代码段编写成一个过程,将其保存在数据库中,并由SQL Server服务器通过过程名来调用它们,这些过程就叫做存储过程。
3、存储过程的分类
A、系统存储过程:sp_help、sp_helptext、sp_depends B、用户自定义存储过程:简单实例
CREATE PROC dbo.Os AS SELECT * FROM t_score WHERE score< 60 创建存储过程的三种方法:
A、使用企业管理器创建存储过程,实例:创建一个存储过程pro_emp,用于显示employes表的所有信息。B、使用Transact-SQL语句创建存储过程,实例:创建一个带有输入参数的存储过程proc_goods,查询指定员工所进商品信息。
创建和执行存储过程的脚本内容如下: USE Sales GO CREATE PROC proc_goods @员工编号 char(6)='1001' AS SELECT 商品编号,商品名称,生产厂商,进货价,零售价,数量,进货时间 FROM Goods WHERE 进货员工编号=@员工编号
课堂练习:创建一个带有输入和输出参数的存储过程proc_GNO,查询指定厂商指定名称的商品所对应的商品编号。C、使用向导创建存储过程。
5、执行存储过程。
--执行存储过程,查询1001号员工所进的商品的信息 EXEC proc_goods @员工编号=default--或
EXEC proc_goods @员工编号='1001'执行字符串 本例是用EXECUTE语句执行字符串的示例。
USE Sales GO DECLARE @sqlstr VARCHAR(40)SET @sqlstr='SELECT * FROM Employees ORDER BY 姓名 ' EXEC(@sqlstr)
7、思考:
8、小结
第九章 触发器
一、教学目标:
1、理解触发器的概念以及分类。
2、掌握创建触发器的两种方法以及触发器的使用、修改和删除。
二、教学重点和难点:
教学重点:根据实际如何选择不同类型的触发器; 教学难点:触发器中临时表inserted与deleted的使用。
三、教学方法与手段:
注重实例,采用一次理论一次实验的教学方法。理论教学使用多媒体投影室。
四、教学课时:
3课时
五、教学基本内容:
1、复习,然后由存储过程的定义与优点引出触发器的定义,触发器与一般存储过程的区别:一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行。(5分钟)
2、触发器的优点:级联修改数据库中相关的表;实现比CHECK约束更为复杂的约束操作;拒绝或回滚违反引用完整性的约束操作;比较表修改前后数据之间的差别,并根据差别采取相应的操作。
3、触发器的两种类型(举例,详细分析两者的区别)
(1)AFTER触发器:将在数据变动(INSERT、UPDATE和DELETE操作)完成后才被激发。对变动数据进行检查,如果发现错误,将拒绝或回滚变动的数据。
(2)INSTEAD OF 触发器:将在数据变动以前被激发。并取代变动数据(INSERT、UPDATE和DELETE操作)的操作,转而去执行触发器定义的操作。
4、分别使用两种方法创建一个DELETE类型的触发器。
A、使用企业管理器创建触发器,举例:选择Sales数据库的Goods表,在下面的步骤中将在Goods表创建触发器。
使用Transact-SQL语言创建触发器
举例:创建一个简单的触发器,当有人试图更新Sales数据库的商品信息时,利用触发器产生提示信息。
--创建触发器 USE Sales GO CREATE TRIGGER tri_UpdateGoods ON Goods FOR UPDATE AS RAISERROR('更新表数据',16,10)--测试触发器 UPDATE Goods SET 数量=8 where 商品编号=5 结果如下:
服务器: 消息 50000,级别 16,状态 10,过程 tri_UpdateGoods,行 5 更新表数据
5、修改与删除触发器
注意:重命名触发器 EXEC sp_rename '原触发器名', '新触发器名'
6、小结与思考:A、存储过程与触发器有什么不同?
B、触发器与约束的区别是什么? C、触发器有几种类型,如何创建? D、什么是嵌套触发器、递归触发器 ?
第10章 用户自定义函数与事务
一、教学目标:
1、了解函数的概念。
2、掌握创建用户自定义函数的方法。
3、了解函数的执行、修改与删除的方法。
4、理解事务处理与锁的概念。
二、教学重点和难点:
教学重点:创建用户自定义函数的方法; 教学难点:理解事务处理与锁的理解。
三、教学方法与手段:
使用多媒体投影室,注重实例,采用互动式教学方式。
四、教学课时:
3课时
五、教学基本内容:
1、复习触发器。(5分钟)
2、函数的概念,用户自定义函数简介
3、创建用户自定义函数有两种方法:一种是使用企业管理器,另一种是使用查询分析器。
4、事务简介
事务是一个逻辑工作单元,其中包括了一系列的操作,这些操作要么全部执行,要么都不执行。
典型的事务实例是两个银行之间的转账,账号A转出1000元至账号B,这笔转账业务可分解为:(1)账号A减去1000元;(2)账号B增加1000元。当然,要求这两项操作要么同时成功(转账成功),要么同时失败(转账失败)。只有其中一项操作成功则是不可接受的事情。如果确实发生了只有其中一项操作成功的话,那么应该撤消所做的操作(回滚事务),就好象什么操作都没有发生一样。事务具有4个属性:原子性、一致性、隔离性、持久性。简称为ACID属性。
5、锁的概念
锁作为一种安全机制,用于控制多个用户的并发操作,防止用户读取正在由其他 用户更改的数据或者多个用户同时修改同一数据,确保事务的完整性和数据库的一致性。
6、死锁及其排除
7、小结
8、作业
第11章 SQL Server 管理
一、教学目标:
1、了解两种验证模式,掌握添加两种登录帐户的方法。
2、了解权限管理、服务器角色和数据库角色、。
3、掌握数据导入、导出的方法。
4、掌握数据库备份和恢复的方法。
二、教学重点和难点:
教学重点:数据库备份和恢复; 教学难点:角色与权限的理解。
三、教学方法与手段:
使用多媒体投影室,注重实例,教室讲解学生操作。
四、教学课时:
3课时
五、教学基本内容:
1、复习
2、分析网络、数据库服务器和数据库存在的安全性问题,提出解决方案,引出本章内容。(5分钟)
3使用企业管理器添加一个SQL Server登录帐户sa3,分三个步骤:(教师讲解演示,与教材稍有区别)
(1)设置SQL Server身份验证模式:在企业管理器中展开相应的服务器,右击服务器图标,选择“属性”,点击“安全性”选项卡,单击“SQL Server和Windows”,确定即可。
(2)添加SQL Server帐户:展开服务器节点下的“安全性”文件夹,右击“登录”,选择“新建登录”,在对话框中输入名称为“sa3”,单击“SQL Server身份验证”,输入密码“aaa”,单击“确定”按钮,再次输入确认密码即可。
(3)用帐户登录:右击服务器图标,选择“编辑SQL Server注册属性”,单击“使用SQL Server身份验证”,输入新建的用户名sa3和密码,然后单击“总是提示输入登录名和密码”,单击“确定”按钮,再次输入确认密码即可。
注意:请学生根据教师提示添加一个SQL Server登录帐户,名称为sa5,密 码也为sa5。再添加一个Windows登录帐户。(能否把“添加Windows登录帐户”说成“创建Windows登录帐户”呢?)
4、分析数据转换组件的构成:
DTS导入/导出向导、DTS设计器
5、举例导入、导出数据的方法
〈导出〉把student数据库中employees、goods、sell三个表同时导出到一个Access文档中,分析步骤:(教师讲解演示)
〈导入〉新建立一个EXCEL文档,并在Sheet1工作表中输入相应的数据,保存此新工作表。然后把Sheet1工作表中的数据导入SQL Server的student数据库中。(教师讲解演示)
学生操作:参照教师演示把student数据库中t_student、t_course表导出到一个EXCEL文档中。
6、SQL Server 对所要备份内容的选项设置,提供了四种不同的方式,举例分析四种方式的不同。
(1)完全数据库备份(2)差异备份或称增量备份(3)事务日志备份
(4)数据库文件和文件组备份
7、创建和删除备份设备可以用两种方法:(1)使用企业管理器管理备份设备(必须掌握)
备份设备backup1,完全备份sales数据库。(2)使用Transact-SQL语句创建、删除备份设备(了解)学生演示:备份并恢复pubs数据库。
8、小结
第二篇:图书管理系统的SQL_Server数据库设计
图书管理的SQL Server数据库设计
1、摘要:
一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学生,借阅、续借、归还的确认。
2、需求分析
针对一般图书管理信息系统的需求,通过对图书管理工作过程的内容和数据流程分析,设计如下面所示的数据项:
Ø 读者信息
属性:读者学号,读者姓名,读者性别,联系电话,所在系,生效日期,失效日期,违章状况,累计借书,备注
主键:读者学号
Ø 书籍信息
属性:ISBN,书名,作者,出版社,出版日期,简介,备注
主键:ISBN
Ø 管理员信息
属性:工作号,姓名,性别,电话,家庭住址,备注
主键:工作号
2.1 数据流程
通过对系统的调查和可行性分析,画出系统的数据流程图:
2.1.1 读者
学生对图书管理系统的要求有:
Ø 能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。
Ø 能够方便地借阅图书、续借图书、归还图书
Ø 能够查询自己的基本资料、图书情况
Ø 能够熟悉图书管理系统的使用。
读者进入系统工作的流程图为:
注册
查询
修改信息
借阅续借
图书
归还
注销
2.1.2 图书管理员
他们对图书管理系统的要求有:
1.能方便的对图书进行录入登记,注销陈旧的书籍。2.能够方便地对新生进行登记,或注销已经毕业的学生信息(基本信息,借阅信息)。
3.能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借情况等信息,以便各学院能够随时获知本院学生的一些借书信息。
图书管理员工作的流程图为:
注册
录入图书
录入新生
注销图书
注销学生
注销
修改个人信息
超期处理
3、概念模型设计
数据库需要表述的信息有以下几种:
(1)读者信息
(2)书籍信息
(3)管理员信息
(4)读者与书籍之间的关系(借阅关系E-R图)
(5)管理员与书籍之间的关系(管理员_书籍E-R图)
(6)管理员与学生之间的关系(管理员_学生 E-R图)
3.1管理员与读者之间的关系 3.3管理员与书刊之间的关系
3.3读者与书籍之间的关系(借阅三元关系)
4、逻辑设计
从理论‘E/R模型’到理论‘关系模型’的整理转换,通过E/R模型到关系模型的转化,可以得到如下关系模式:
借阅关系
属性:工作号,读者学号,ISBN,是否续借,借书日期,还书日期,备注。
主键:工作号,读者学号,ISBN 管理员_书籍关系
属性:工作号,ISBN,添加时间,是否在馆
主键:工作号,ISBN 管理员_学生关系
属性:工作号,读者学号,确认借还
主键:工作号,读者学号
5、数据库逻辑结构
5.1图书信息表 [Page] 字段名称数据类型是否可为空
ISBN(key)varchar(20)否
书名varchar(50)否
作者varchar(12)否
出版社varchar(50)是 出版日期datetime是
简介varchar(200)是
备注varchar(200)是
5.2 读者信息表
字段名称数据类型是否可为空
读者学号(key)varchar(12)否
读者姓名varchar(10)否
读者性别varchar(2)否
联系电话varchar(10)是
所在系varchar(12)否
生效时间datatime是
失效时间datatime是
违章状况varchar(2)是
累计借书int是
备注varchar(100)是
5.3 管理员信息表
字段名称数据类型是否可为空
工作号(key)varchar(12)否
姓名varchar(12)否
性别varchar(2)否
电话varchar(12)是
住址varchar(12)是
备注varchar(100)是
5.4 借阅表
字段名称数据类型是否可为空
工作号 char(10)否
ISBN char(10)否
读者学号 char(10)否
借书日期datetime否
还书日期datetime否
是否续借char(4)否
备注varchar(100)是
5.5 管理员_书籍
字段名称数据类型是否可为空
工作号char(10)否
ISBNchar(10)否
添加时间data time是
是否在馆char(14)是
5.6 管理员_学生
字段名称数据类型是否可为空
工作号char(10)否
读者学号char(10)否
借还确认char(4)否
6、物理设计
从理论‘关系模型’到实现实施‘数据库建立’,物理文件的安排和建立索引
6.1 建立索引
为了提高在表中搜索元组的速度,在实际实现的时候应该基于键码建立索引是各表中建立索引的表项:
(1)读者信息(读者学号)
(2)书籍信息(ISBN)
(3)管理员信息(工作号)
(4)借阅(工作号,读者学号,ISBN)
(5)管理员_书籍(工作号,ISBN)
(6)管理员_学生(工作号,读者学号)
6.2 用SQL实现设计
实现该设计的环境为Windows 2000 Perfessinal+MSSQLServer 2000.0 6.2.1建立图书信息表
create table 图书
(ISBN varchar(20)not null primary key,书名 varchar(50)not null,作者 varchar(12)not null,出版社 varchar(50),出版日期 datetime,简介 varchar(200), 备注 varchar(200),)6.2.2建立读者信息表
create table 读者
(读者学号 varchar(12)not null primary key,读者姓名 varchar(10)not null,读者性别 varchar(2)not null,联系电话 varchar(12),所在系 varchar(20)not null,生效日期 datetime,失效日期 datetime,违章状态 char(2), [Page] 累计借书 int,备注 varchar(100),)6.2.3建立管理员信息表
create table 管理员
(工作号 varchar(12)not null primary key, 姓名 varchar(12)not null, 性别 varchar(2)not null, 电话 varchar(12), 家庭住址 varchar(50), 备注 varchar(100))6.2.4建立借阅表
create table 借阅
(工作号 char(10)not null, ISBN char(10)not null, 读者学号 char(10)not null, 借书日期 datetime not null, 还书日期 datetime not null, 是否续借 char(4)not null,备注 varchar(100))6.2.5建立管理员_书籍表
create table 管理员_书籍
(工作号 char(10)not null, ISBN char(10)not null, 添加时间 datetime, 是否在馆 char(4))
6.2.6建立管理员_学生表
create table 管理员_学生
(工作号 char(10)not null, 读者学号 char(10)not null, ISBN char(10)not null, 借还确认 char(4)not null)
6.2.7建立索引
CREATE UNIQUE INDEX 图书索引 ON 图书(ISBN)CREATE UNIQUE INDEX 读者索引 ON 读者(读者学号)CREATE UNIQUE INDEX 管理员索引 ON 读者(工作号)
CREATE UNIQUE INDEX借阅索引 ON 借阅(工作号,读者学号,ISBN)
CREATE UNIQUE INDEX管理员_书籍索引 ON 管理员_书籍(工作号,ISBN读者学号)CREATE UNIQUE INDEX管理员_学生ON管理员_学生(工作号,读者学号)6.2.8定义视图
(1)读者表视图
CREATE VIEW 读者视图
AS SELECT * FROM 读者
(2)图书表视图
CREATE VIEW 图书视图
AS SELECT * FROM 图书
(3)管理员表视图
CREATE VIEW 管理员视图
AS SELECT *
FROM 管理员者
6.2.9管理员操作
(1)注册(register)
INSERT INTO 管理员(工作号,姓名,性别,电话,家庭住址,备注)[Page] VALUES(#工作号,#姓名,#性别,#电话,#家庭住址,#备注)说明:在登记操作后,管理员得到一个唯一的工作号,可以根据这个工作号采查询和修改数据。
(2)注销(unregister)
DELETE
FROM Provider
WHERE(工作号=#工作号);
(3)修改个人信息(update)UPdate 管理员
Set(工作号=#工作号,姓名=#姓名,性别=#性别,电话=#电话,家庭住址=#家庭住址,备注=#备注)
WHERE(工作号=#工作号)(4)增加书籍(addbooks)
INSERT INTO 图书(ISBN,书名,作者,出版社,出版日期,简介,备注)
VALUES(#ISBN,#书名,#作者,#出版社,#出版日期,#简介,#备注)INSERT INTO 管理员_书籍表(工作号,ISBN,添加时间,是否在馆)
VALUES(#工作号,#ISBN,#添加时间,#是否在馆)
(5)删除书籍(deletebooks)
DELETE 图书
WHERE(ISBN =# ISBN)(6)修改书籍(updatebooks)
UPDATE 图书(书名=#书名, 作者=#作者, 出版社=#出版社, 出版日期= #出版日期, 简介=#简介, 备注=#备注)WHERE(ISBN =# ISBN)6.2.10读者操作
(1)注册(register)
INSERT INTO 读者(读者学号,读者姓名,读者性别,联系电话,所在系, 生效日期,失效日期,违章状况,累计借书,备注)
VALUES(#读者学号,#读者姓名,#读者性别,#联系电话,#所在系, #生效日期,#失效日期,#违章状况,#累计借书,#备注)
说明:在登记操作后,读者得到一个唯一的ID,可以根据这个ID来查询和修改自己的信息。
(2)注销(unregister)DELETE 读者
WHERE(读者学号=#读者学号)(3)修改个人信息(update)
UPDATE 读者 Set(读者姓名=#读者姓名,联系电话=#联系电话, 所在系=#所在系,生效日期=#生效日期,失效日期=#失效日期, 违章状况=#违章状况,累计借书=#累计借书,备注=#备注)WHERE(读者学号=#读者学号)(4)查询(select)
SELECT ISBN,书名,作者,出版社FROM图书
WHERE ISBN=#ISBN OR书名=#书名
6.2.11管理员对借阅关系的操作
(1)插入读者的信息(insert)
INSERT INTO 借阅(工作号,读者学号,ISBN,是否续借,借书日期,还书日期,备注)VALUES(#工作号,#读者学号,#ISBN,#是否续借,#借书日期, #还书日期,#备注)
(2)更新信息(update)
①更新借出信息
UPDATE借阅
SET(借书日期=#借书日期,还书日期=借书日期+30,是否续借=0)
WHERE(工作号=#工作号 AND 读者学号=#读者学号 AND ISBN =#ISBN)UPDATE管理员_图书
SET(是否在馆=0)
WHERE(ISBN=#ISBN)UPDATA 学生
SET(累积借书=累积借书+1)WHERE(读者学号=#读者学号)
INSERT INTO管理员_学生(工作号,读者学号,确认借还,ISBN)VALUES(#工作号,#读者学号,”0”, #ISBN))
②更新续借信息
UPDATE 借阅
SET(是否续借=#是否续借)
WHERE(工作号=#工作号 AND 读者学号=#读者学号 AND ISBN =#ISBN)[Page] ③更新还书信息
UPDATE管理员_图书
SET(是否在馆=1)
WHERE(ISBN=#ISBN)UPDATE管理员_学生
SET(确认借还=”1”)
WHERE(工作号=#工作号 AND 读者学号=#读者学号 AND ISBN=#ISBN)6.2.12触发器的建立
(1)时间触发器:
Create Trigger 时间
On 借阅
For update,insert,delete As
while(select datename(weekday,getdate()))=’星期天’ begin
print ’时间错误’
end
(2)update触发器:
Create Trigger 续借
On 借阅
for Update As
If Update(是否续借)begin
Update 借阅
Set 还书日期=还书日期+30 Where 工作号=#工作号
end
7、实验数据示例:测试阶段(代码调试)
7.1 输入数据设计
(1)插入管理员
INSERT INTO 管理员(工作号,姓名,性别,电话,家庭住址,备注)VALUES(1001,’张三’,’男’,02885965555,’成都市’,’呵呵’)(2)插入读者
INSERT INTO 读者(读者学号,读者姓名,读者性别,联系电话,所在系, 生效日期,失效日期,违章状态,累计借书,备注)
VALUES(20050222,’李瑞’,’男’,02888994456,’环境’,’2007-05-06’,’2010-05-06’,’1’,10,’哈’)(3)插入图书
INSERT INTO 图书(ISBN,书名,作者,出版社,出版日期,简介,备注)
VALUES(’730203009x’,’数据库原理教程’,’王珊’,’清华大学出版社’,’2006-05-05’,’数据库教程’,’哈’)
INSERT INTO 图书(ISBN,书名,作者,出版社,出版日期,简介,备注)
VALUES(’7302030091’,’数据库教程’,’王书’,’清华大学出版社’,’2006-05-05’,’数据库教程’,’哈’)
(4)插入管理员_书籍表
INSERT INTO 管理员_书籍(工作号,ISBN,添加时间,是否在馆)VALUES(1001,’730203009x’,’2007-7-7’,’0’)
INSERT INTO 管理员_书籍(工作号,ISBN,添加时间,是否在馆)VALUES(1001,’7302030091’,’2007-7-8’,’1’)
(5)插入借阅信息
INSERT INTO 借阅(工作号,读者学号,ISBN,是否续借,借书日期,还书日期,备注)VALUES(1001,20050222,’730203009x’,’0’,’2007-7-6’,’2007-8-6’,’哈’)INSERT INTO 管理员_学生(工作号,读者学号,借还确认,ISBN)VALUES(1001,’20050222’,’0’, ’730203009x’)7.2 完成借阅、续借、归还的操作设计
假设读者想借书籍名为《数据库教程》且不知道ISBN(1)借阅操作如下:
if((select 书名 from 图书 where ISBN=’7302030091’)= ’数据库教程’)[Page] begin
INSERT INTO 借阅(工作号,读者学号,ISBN,是否续借,借书日期,还书日期,备注)VALUES(1001,20050222,’7302030091’,’0’,’2007-7-7’,’2007-8-7’,’哈’)UPDATE 管理员_书籍
SET 是否在馆=’0’
WHERE ISBN=’7302030091’ UPDATE 读者
SET 累计借书=累计借书+1 WHERE 读者学号=20050222
INSERT INTO 管理员_学生(工作号,读者学号,借还确认,ISBN)VALUES(1001,20050222,’0’,’7302030091’)print ’借阅成功!’
end else
print ’借阅失败!’(2)续借操作如下:
if((SELECT 是否续借
FROM 借阅
WHERE 工作号=1001 AND 读者学号=20050222 AND ISBN =’7302030091’)=’0’)begin
UPDATE 借阅
SET 是否续借=’1’
WHERE 工作号=1001 AND 读者学号=20050222 AND ISBN =’7302030091’ print ’续借成功!’
end else
print ’续借失败!’(3)还书操作如下:
If((SELECT 借还确认
FROM 管理员_学生
WHERE 工作号=1001 AND 读者学号=20050222 AND ISBN=’7302030091’)=’0’)BEGIN UPDATE 管理员_书籍
SET 是否在馆=’1’
WHERE ISBN=’7302030091’ print ’还书成功!’ end else
print ’还书失败!’
8、安全性设计
后台数据库应安装在指定服务器上,用户只能通过登录软件访问数据库表中的数据。
除上述方法外,不应提供用户其他访问数据库数据的直接或间接途径。
9、数据库管理与维护说明 对于本数据的管理与维护,例如数据库的备份与恢复,可以使用T-SQL的BACKUP DATABASE命令和RESTORE DATABASE命令,也可以用企业管理器中的备份与恢复
第三篇:数据库教案
任务引入 [4分钟]
布置任务 [4分钟] 任务分析 [6分钟] 任务实施 [35分钟]
在手机商城中,当用户注册时,要填写用户注册表单,那么,我们填写的数据就要保存在后台数据库中,当注册成功后用户登
录时,就可以直接从后台数据库的注册信息进行信息验证。现在,教师引导 我们就在MOBILE数据库中创建一个用户注册的数据表吧。
任务:
在MOBILE数据库中创建数据表,并为表中各列设置恰当 的数据类型,设置主键。
要完成手机商城数据库中数据表创建,可按照前面设计阶段 的各表结构建立相关数据表,并按照设计阶段的分析为表中各列 设置恰当的数据类型以及设置主键。
一、使用MySQL界面方式创建手机商城数据库中的数据表。学生操作 具体见任务书
教师指导
二、使用SQL命令创建数据表。
(商品大类别表)CREATE TABLE class
(复习数据classID INT PRIMARY KEY, 类型 classNAME CHAR(20)NULL);
三、修改表
ALTER TABLE用于更改原有表的结构。例如,可以增加或 删减列,创建或取消索引,更改原有列的类型,重新命名列或表,还可以更改表的评注和表的类型。
语法格式:
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification]...相关知识 [13分钟] alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
/*添加列*/
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
/*修改默认值*/
| CHANGE [COLUMN] old_col_name column_definition
/*对列重命名*/
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
/*修改列类型*/
| DROP [COLUMN] col_name /*删除列*/
| RENAME [TO] new_tbl_name
/*重命名该表*/
| ORDER BY col_name
/*排序*/
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] /*将字符集转换为二进制*/
|
[DEFAULT]
CHARACTER
SET
charset_name [COLLATE collation_name]
/*修改默认字符集*/
| table_options
| 列或表中索引项的增、删、改
四、复制表 语法格式:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[()LIKE old_tbl_name [ ] ]
| [AS(select_statement)];说明:
学生练习
学生练习[25分钟] 小结 [3分钟]
使用LIKE关键字创建一个与old_table_name表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用AS关键字可以复制表的内容,但索引和完整性约束是不会复制的。select_statement表示一个表达式,例如,可以是一条SELECT语句。
完善表的设计,并输入记录数据。
本次课我们学习了创建数据表的另一种方法,以及表的修改和复制等方法,同学们要在课后多加练习。
第四篇:数据库教案
任务引入 [4分钟]
请同学们回忆在设计关系时定义了哪些主键? 引导学生思考:
学生浏览相关资料
有的关系中的某些字段是需要参考另外一个关系中的主键,布置任务 [4分钟] 任务实施 [45分钟]
相关知识 [34分钟]
怎样在MySQL中实现这些?
任务:正确设置相关表的主键、外键等约束,部分实现表的数据完整性。
实施步骤:
1.教师将学生分组,每个小组经商讨后,进一步明确需在表中实现的数据完整性。
2.小组成员先尝试实现主键约束;再尝试实现外键约束、UNQUE约束、CHECK约束、默认值等。3.学生访问参考网址,自行搜索所需资料:
http://www.xiexiebang.com http://www.xiexiebang.com ……
4.在实现过程中,教师提示引导同学们参考教材,最后整理设计结果并形成文件,上交到指定位置。相关知识
二、数据的完整性
数据库完整性就是确保数据库中数据的一致性和正确性。MySQL通过各种约束、默认值、规则等数据库对象来保证数据库的完整性。
1.约束
(1)PRIMARY KEY约束
表的一列或多列称为表的主键,通过它可强制表的实体完整性。
教师引导
学生分组
学生讨论
主键是在创建表时进行创建的,添加到表中还没有创建主键 约束的数据表中,一个表只能有一个PRIMARY KEY约束。如 果已经创建了一个PRIMARY KEY约束,则可以对其进行修改或删除。在一个表中,不能有两行包含相同的主键值。不能在主键内的任何列中输入NULL值。
(2)FOREIGN KEY约束
FOREIGN KEY约束标识表之间的关系,用于强制参照完整性,为表中一列或者多列数据提供参照完整性。
FOREIGN KEY作为表定义的一部分在创建表时创建。如果FOREIGN KEY约束与另一个表(或同一表)已有的PRIMARY KEY约束或UNQUE约束相关联,则可向现有表添加FOREIGN KEY约束。一个表可以有多个FOREIGN KEY约束。可以对已有的FOREIGN KEY约束进行修改或删除。
(3)UNQUE约束
实施实体完整性。确保在非主键列中不输入重复的值。想要强制一列或多列组合的唯一性时使用该约束而不是PRIMARY KEY约束,可以对一个表声明多个UNIQUE约束,且允许NULL值。
(4)CHECK约束
CHECK约束通过限制用户输入的值来加强域完整性。它指定应用于列中输入的所有值的布乐搜索条件,拒绝所有不取值为TRUE的值。可以为每列指定多个CHECK约束。
(5)列约束和表约束
约束可以是列约束和表约束。列约束被定为列定义的一部分,并且仅适用于那个列,表约束的声明与列的定义无关,可以适用于表中一个以上的列。当一个约束中必须包含一个以上的列时,必须使用表约束。
2.默认值
在设计表结构时可根据需要为某列设置默认值,也可以创建默认值对象并绑定到某一列。
小结 [3分钟]
本次课我们了解了B2C网站应该具有的会员在线订购功能及流程,并且设计了结构合理的数据表,存储相关信息。
第五篇:数据库原理-教案
第一章 绪论
内容概述
阐述数据库的基本概念,介绍数据管理技术的进展情况、数据库技术产生和发展的背景,数据模型的基本概念、组成要素和主要的数据模型,概念模型的基本概念及ER方法,数据库系统的3级模式结构以及数据库系统的组成。
本章目标
本章讲解的数据库基本概念和基本知识是学习后续各个章节的基础。学习本章的目的在于了解基本知识,掌握基本概念,为以后的学习打好扎实的基础。
重点和难点
重点:牢固掌握概念模型的基本概念及其主要建模方法ER方法;掌握关系数据模型的相关概念、数据库系统三级模式和两层映像的体系结构、数据库系统的逻辑独立性和物理独立性等;对于如何通过ER方法描述现实世界的概念模型要做到能够举一反三的程度。
难点:本章的难点是需要掌握数据库领域大量的基本概念。有些概念一开始接触会感到比较抽象,但不要紧,随着学习的逐渐推进,在后续章节中,这些抽象的概念会逐渐变得清晰具体起来。此外,数据模型及数据库系统的体系结构也是本章的难点。
第二章 关系数据库
内容概述
系统地讲解关系数据库的重要概念,并着重对关系模型进行讲解。关系模型包括关系数据结构、关系操作集合、以及关系完整性约束三个组成部分。讲解关系代数、元组关系演算和域关系演算。从具体到抽象,先讲解实际的语言ALPHA(元组关系演算语言)和QBE(域关系演算语言),然后讲解抽象的元组关系演算。本章目标
掌握关系模型的三个组成部分及各部分所包括的主要内容;牢固掌握关系数据结构及其定义;关系的三类完整性约束的概念。为学习后面关系数据库系统打好基础。
重点和难点
重点:掌握关系数据结构及其定义;关系的三类完整性约束的概念。需要举一反三的是:关系代数(包括抽象的语言及具体的语言);关系代数中的各种运算(包括并、交、差、选择、投影、连接、除、及广义笛卡尔积等)、元组关系演算语言ALPHA及域关系演算语言QBE等,能够使用这些语言完成各种数据操纵。
难点:由于关系代数较为抽象,因此在学习的过程中一定要结合具体的实例进行学习。同时,要注意把握由具体语言到抽象语言的原则,即通过对具体语言如ALPHA和QBE的学习过渡到对抽象的关系演算的把握。
实验内容
实验1 学习安装某一个数据库管理系统,通过对某个商用数据库管理系统的安装使用,初步了解DBMS的工作环境和系统构架,熟悉对DBMS的安装,为后面的实验做准备。
第三章 关系数据库标准语言SQL
内容概述
详细介绍关系数据库语言SQL。SQL是关系数据库的标准语言。它内容十分丰富,功能非常强大。因为关系数据库系统的主要功能是通过SQL来实现的,因此讲解SQL的同时要进一步讲述关系数据库的基本概念。
本章目标 牢固掌握SQL,达到举一反三的掌握SQL的功能。同时通过实践,体会面向过程的语言和SQL的区别和优点。体会关系数据库系统为数据库应用系统的开发提供良好环境,减轻用户负担,提高用户生产率的原因。
重点和难点
重点:关系模型和关系数据库是《数据库系统概论》课程的重点,第3章又是重点中的重点。要熟练正确的使用SQL完成对数据库的查询、插入、删除、更新操作。在使用具体的SQL时,能有意识地和关系代数、关系演算等语言进行比较,了解他们各自的特点。
难点:用SQL语言正确完成复杂查询,掌握SQL语言强大的查询功能。因此在学习过程中一定要多练习,要在安装好的数据库系统上进行实际操作,检查你的答案,你查询的结果是否正确。只有通过大量练习才能真正达到举一反三的熟练程度。
实验内容
实验2 在安装好的数据库系统下创建数据库、创建表、创建索引;使用SQL对数据库进行各类查询操作(单表查询,连接查询,嵌套查询,集合查询)和更新操作(插入数据,修改数据,删除数据)。练习数据定义操作,包括基本表的创建、修改及删除;索引的创建和删除;视图的创建和删除。对视图的查询,更新(注意更新的条件)。完成书后作业的SQL练习
第四章 数据库安全性
内容概述
介绍计算机以及信息安全技术标准的进展。详细讲解数据库安全性问题和实现技术。RDBMS实现数据库系统安全性的技术和方法有多种,本章讲解最重要的存取控制技术、视图技术和审计技术。讲解存取控制机制中用户权限的授权与回收,合法权限检查。数据库角色的概念和定义等。本章目标
掌握什么是数据库的安全性问题,牢固掌握数据库管理系统实现数据库安全性控制的常用方法和技术。
重点和难点
重点:使用SQL中的GRANT 语句和 REVOKE 语句来实现数据库的实现自主存取控制功能。使用SQL中CREATE ROLE语句创建角色,用GRANT 语句给角色授权。掌握视图机制在数据库安全保护中的作用。
难点:强制存取控制(MAC)机制中确定主体能否存取客体的存取规则,同学们要理解并掌握存取规则为什么要这样规定。
实验内容
实验3 在安装好的数据库系统下对已经建立的数据库创建用户、角色、视图;使用SQL对数据进行安全性控制,包括:授权和权力回收。操作完成后看看已授权的用户是否真正具有授予的数据操作的权力了;权力收回操作之后的用户是否确实丧失了收回的数据操作的权力。本实验可以分小组完成。例如,用户A登录、建表、建视图等,授权一些数据操作权限用户B,然后用户B登录,检查是否具有授予的数据操作权限。也可以一个人建2个用户来完成。
第五章 数据库完整性
内容概述
详细讲解数据库的完整性概念。包括,什么是数据库的完整性,数据库的完整性概念与数据库的安全性概念的区别和联系,RDBMS的数据库完整性实现机制,包括实体完整性、参照完整性和用户自己定义的完整性约束的定义机制、完整性检查机制和违背完整性约束条件时RDBMS采取的预防措施。触发器的概念和在数据库完整性检查中的应用。本章目标
掌握什么是数据库的完整性,掌握用SQL语言定义关系模式的完整性约束条件。
重点和难点
重点:牢固掌握DBMS完整性控制机制的三个方面,即完整性约束条件的定义、完整性约束条件的检查和违约反应。需要举一反三的:用SQL语言定义关系模式的完整性约束条件。包括定义每个模式的主码;定义参照完整性;定义与应用有关的完整性。
难点:RDBMS如何实现完整性的策略,即当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,RDBMS如何进行处理,以确保数据的正确与有效。其中比较复杂的是参照完整性的实现机制。
实验内容
实验4 在安装好的数据库系统下对已经建立的数据库使用SQL对数据进行完整性控制(三类完整性、CHECK短语、CONSTRAIN子句、触发器)。进行违约操作,用实验证实,当操作违反了完整性约束条件时,系统是如何进行违约处理的
第六章 关系数据理论
内容概述
详细讲解关系数据理论,主要是关系数据库规范化理论。包括关系数据库逻辑设计可能出现的问题,数据依赖的基本概念(包括,函数依赖、平凡函数依赖、非平凡的函数依赖、部分函数依赖、完全函数依赖、传递函数依赖的概念;码、候选码、外码的概念;多值依赖的概念),范式的概念、1NF、2NF、3NF、BCNF、4NF的概念和判定方法。数据依赖的Armstrong公理系统。本章内容分为基本要求部分(《概论》6.1-6.3)和高级部分(《概论》6.4)。前者是计算机大学本科学生应该掌握的内容。后者是研究生应该学习掌握的内容。本章目标
关系数据理论既是关系数据库的重要理论基础也是数据库逻辑设计的理论指南和有力工具。要掌握规范化理论和优化数据库模式设计的方法。
重点和难点
重点:了解什么是一个“不好”的数据库模式。什么是模式的插入异常和删除异常。规范化理论的重要意义。牢固掌握数据依赖的基本概念,范式的概念,从1NF到4NF的定义,规范化的含义和作用。需要举一反三的:四个范式的理解与应用,各个级别范式中存在的问题(插入异常、删除异常、数据冗余)和解决方法。
难点:能够根据应用语义,完整地写出关系模式的数据依赖集合,并能根据数据依赖分析某一个关系模式属于第几范式。各个级别范式的关系及其证明。
本章内容的理论性较强。要通过具体例子和习题练习理解和掌握理论知识
第七章 数据库设计
内容概述
讲解数据库设计方法和技术。数据库设计的特点,数据库设计的基本步骤,数据库设计过程中数据字典的内容,数据库设计各个阶段的设计目标、具体设计内容、设计描述、设计方法等。本章内容的实践性较强,教师可以少讲,让学生多读书并进行实践。
本章目标
了解数据库设计的重要性和数据库设计在信息系统开发和建设中的核心地位。掌握数据库设计方法和步骤,使学生具有设计数据库模式以及开发数据库应用系统的基本能力,能在实际工作中运用这些知识、技术和方法,设计符合应用需求的数据库及其应用系统。重点和难点
重点:掌握数据库设计步骤和数据库设计过程中的各级模式设计方法。特别是数据库概念结构的设计和逻辑结构的设计,这是数据库设计过程中最重要的两个环节。牢固掌握用E-R图来表示概念模型的方法,掌握E-R图的设计,E-R图向关系模型的转换。
难点: 技术上的难点是E-R图的设计和数据模型的优化,包括对现实世界进行抽象的能力,提取实体、属性、实体型之间的联系,正确划分实体与属性的能力。如何把第6章关系数据理论与本章结合,用关系数据理论指导数据库的逻辑设计。真正的难点是理论与实际的结合。同学们一般缺乏实际经验,缺乏对实际问题解决的能力。特别是缺乏应用领域的知识。而数据库设计需要设计人员对应用环境、专业业务有具体深入的了解,这样才能设计出符合具体领域要求的数据库及其应用系统。要在完成本章习题的基础上认真完成大作业。体会这些要点,从而真正掌握本章讲解的知识、方法和技术。
课程大作业 《数据库设计与应用开发》
在某个RDBMS产品上,选择合适的应用系统开发工具为某个部门或单位开发一个数据库应用系统。通过实践,掌握本章介绍的数据库设计方法,同时培养团队合作精神。要求5~6位同学组成一个开发小组,每位同学承担不同角色(例如:项目管理员、DBA、系统分析员、系统设计员、系统开发员、系统测试员)。具体要求:
* 给出数据库设计各个阶段的详细设计报告;
* 写出系统的主要功能和使用说明;
* 提交运行的系统;
* 写出收获和体会,包括已解决和尚未解决的问题,进一步完善的设想与建议;
每个小组进行60分钟的报告和答辩,讲解设计方案,演示系统运行,汇报分工与合作情况
第八章 数据库编程 内容概述
在数据库应用系统的开发中常常使用编程方法对数据库进行操纵。本章讲解这些编程技术涉及的概念和使用的方法。主要包括嵌入式SQL、游标的概念;SQL的过程化扩展PL/SQL和存储过程;使用ODBC设计开发数据库应用程序的方法。
因为JDBC编程、OLEDB编程与ODBC编程的思路基本相同,限于篇幅本章就不讲解JDBC和OLEDB编程,学生可以通过上机实验了解这些技术。本章内容的实践性较强,教师可以少讲,让学生多读书并进行实践。
本章目标
掌握开发数据库应用系统的各种编程方法,具有正确选择不同的方法和技术开发应用程序的能力。
重点和难点
重点:了解SQL编程技术可以有效克服SQL实现复杂应用方面的不足,提高应用系统和RDBMS间的互操作性。掌握嵌入SQL中游标的概念和使用方法;掌握PL/SQL和存储过程的基本概念,基本结构,语句语法和用法。了解使用ODBC开发应用系统的体系结构,掌握ODBC API和ODBC的应用程序的工作流程。
难点:理论联系实际,能够在实际安装的RDBMS上通过编程的方式开发应用程序,完成对数据库的各种操作。能够使用ODBC来进行数据库应用程序的设计,使设计的应用系统可移植性好,并且能同时访问不同的数据库,共享数据资源。
实验内容
《数据库系统概论》第4版给出了4个实验,教师可以根据情况选择其中部分实验让学生完成。具体实验要求请参见教科书。实验
5通过嵌入式SQL访问数据库 实验6
使用PL/SQL编写存储过程访问数据库 实验7
通过ODBC访问数据库
实验8
通过JDBC访问数据库(注:因为JDBC编程与ODBC编程的思路基本相同,限于篇幅本章没有讲解JDBC,同学可以自学,也可以参考中国人民大学 数据库系统概论精品课程教学网站:http://www.xiexiebang.com/ 中的课程实验)。
第九章 关系查询处理和查询优化
内容概述
通过实例讲解关系数据库查询优化的重要性和可能性。讲解RDBMS的查询处理步骤,即查询分析、查询检查、查询优化和查询执行;查询优化的基本概念,查询优化包括代数优化和物理优化;代数优化是指关系代数表达式的优化;物理优化则是指存取路径和底层操作算法的选择,所以先讲解实现查询操作的主要算法,主要是选择操作和连接操作的主要算法思想,然后讲解关系代数表达式等价变换规则,关系代数表达式的优化,物理优化方法(基于启发式规则的存取路径选择优化,操作算法的执行代价估算方法,基于代价的优化方法)。
本章目标
本章并不要求学生掌握RDBMS查询处理和查询优化的内部实现技术,因此没有详细讲解技术细节。
本章的目的是希望学生了解RDBMS查询处理的基本步骤,查询优化的概念、基本方法和技术,为数据库应用开发中利用查询优化技术提高查询效率和系统性能打下基础。
重点和难点
重点:了解关系数据库查询优化的重要性。掌握查询处理各个步骤的主要功能。能够把SQL语句转换成查询树,对查询树进行代数优化,转换成优化的查询树。掌握物理优化的基本方法。难点:能运用本章学习的查询优化知识,对于比较复杂的查询,尤其是涉及连接和嵌套的查询,写出适合RDBMS自动优化的SQL语句。对于RDBMS不能优化的查询需要重写查询语句,进行手工调整以优化性能。不要把优化的任务全部放在RDBMS上。
实验内容
实验9 查询优化 通过本章实验,了解你安装使用的RDBMS的查询优化方法和查询计划表示,能够利用它分析查询语句的实际执行方案和查询代价,进而通过建立索引或者修改SQL语句来降低查询代价,达到优化系统性能的目标。
具体实验内容: 对单表查询
例如以下的查询(可以自己给出查询语句)select * from student
where age>20 ; 2.连接查询,普通的两表连接查询或多表连接查询
3.嵌套查询,自己写几个带有子查询的例子,主要考虑带有IN和EXISTS谓词的子查询,包括相关子查询和不相关子查询。也可以使用《数据库系统概论》书上列举的例子。
对以上各种查询,通过建立索引或者删除索引(单表查询语句)、修改连接顺序(连接查询语句)、重写SQL语句即查询重写(嵌套查询);比较不同查询计划执行的性能差异,达到降低查询代价,优化性能的目标。
第十章 数据库恢复技术
内容概述
事务处理技术主要包括数据库恢复技术和并发控制技术。因为事务是数据库恢复和并发控制的基本单位,所以首先讲解事务的基本概念和事务的ACID性质。
本章讲解数据库恢复技术。包括数据库运行中可能发生的故障类型,数据库恢复中最经常使用的技术—数据转储和登录日志文件。讲解日志文件的内容及作用,登记日志文件所要遵循的原则,针对事务故障、系统故障和介质故障等不同故障的恢复策略和恢复方法。具有检查点的恢复技术。数据库镜像功能。
本章目标
掌握事务的基本概念和事务的ACID性质。了解数据库恢复技术的重要性,针对不同的故障类型,掌握恢复数据库的策略和方法。
重点和难点
重点:牢固掌握事务的基本概念和事务的ACID性质。要掌握数据库故障恢复的策略和方法。数据库恢复的基本原理是数据备份,它貌似简单,实际却很复杂。数据库的事务管理策略(不仅有数据库恢复策略,还有并发控制策略)和DBMS缓冲区管理策略、事务一致性级别密切相关,同学们要在学习完这些知识后把这些问题联系起来,提升对这些技术的理解和掌握。
难点:掌握日志文件的使用,系统故障、介质故障的恢复方法。对于刚刚学习数据库的学生来讲并不体会数据库故障恢复的复杂性和重要性。在实际工作中,则必须正确了解所用的DBMS产品提供的恢复技术和恢复方法,并且能够根据这些机制正确制定系统的恢复策略,以保证数据库系统7*24小时正确运行。保证数据库系统在遇到故障时能及时恢复正常运行,提高抗故障抗灾难的能力。
实验内容
在安装好的数据库系统下对已经建立的数据库人为地制造事务内部故障和系统故障,检查系统是否进行了恢复。
第十一章 并发控制
内容概述 数据库管理系统必须提供并发控制机制来协调并发用户的并发操作以保证并发事务的隔离性和一致性,保证数据库的一致性。本章讨论数据库并发控制的基本概念和实现技术。包括封锁技术、封锁协议、活锁和死锁的概念、并发调度的可串行性、冲突可串行化调度、两段锁协议、封锁的粒度、意向锁。
本章目标
了解的数据库并发控制技术的必要性和重要性。牢固掌握并发控制的基本概念。
重点和难点
重点:掌握并发操作产生的数据不一致性(丢失修改、不可重复读、读“脏数据”)的确切含义。封锁协议与数据一致性的关系;并发调度的可串行性概念。
难点:两段锁协议与串行性的关系、与死锁的关系。具有意向锁的多粒度封锁方法的封锁过程。
本章内容有一定的深度和难度,可以通过对实例的学习和习题的练习来正确理解和掌握基本概念