教 案
教 案(首页)
课程
名称 《数据库原理与应用》 课程编码 总计:64学时
讲课:32学时
实验:32学时 学 分 2 类别 公共基础课()专业基础课(√ ) 专业课()选修课( ) 基本
教材
和主
要参
考资
料 1、教材
[1] 数据库原理与出版社,20.
2、参考书
[1] 《数据库原理及应用(MySQL版)》.李月军,付良廷.北京:清华大学出版社,2019.
[2] 《数据库系统概论(第5版).王珊.北京:高等教育出版社,2014[3] 《数据库系统原理及MySQL应用教程(第2版)机械工业出版社2019。
[4] 《数据库系统工程师考试全程指导.丁宝康,陈坚.北京:清华大学出版社,2006
2、数据定义、增删改查、索引与视图的SQL语句实现
3、数据库完整性及SQL语句实现与关系代数运算
4、数据库的安全性及MySQL语句实现
5、并发控制及封锁
6、数据库备份及恢复策略
7、使用E-R模型实现数据库的概念设计
8、关系模型的规范化
9、数据库设计
教学难点:
1、SQL语言实现数据复杂查询
2、关系代数组合运算
3、并发控制
4、关系规范化:最小函数依赖集、函数依赖关系、求候选键、关系模式的规范化
5、数据库设计:逻辑结构向关系模型的转换 《数据库原理与应用》 课程教案(第1-2章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第一章 数据库系统的基本原理
第二章 MySQL安装与使用 目的、要求(分了解、熟悉、掌握三个层次):
了解并学会数据库系统总体特点、结构、组成及基本概念
掌握下述内容:数据、数据库、数据库管理系统、数据库系统的概念;数据管理技术的产生和发展;数据库系统的特点;数据模型(数据模型的组成要素、常用数据模型、概念模型、层次模型、网状模型、关系模型)
掌握MySQL的安装、卸载、服务启动和登录
重点:
概念模型
数据模型 难点:
关系模型的概念 教学步骤:
课程介绍
课程导入
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
作业:
习题三---(1)题
练习:
教材第1章课后习题
思考题:
概念模型三个组成部分是什么,分别用什么图形表示?
教 学 内 容(含时间分配) 板书或旁注 教学环节
课程介绍
新课讲解
课堂实践
每课小结
布置作业
时间分配
10
65
10
3
2
一、课程介绍:
数据库是现代信息社会的基石。几乎所有的计算机应用软件都构建于数据库系统之上。
数据库原理与应用是一门理论性较强的专业核心课程。本课程的主要任务是,掌握数据库系统的基本概念、基本原理 、基本方法以及有关的应用,同时介绍一种大型的数据库管理系统(MySQL)。重点掌握关系数据库的基本理论与基本操作,通过对关系数据库标准语言SQL的学习,了解掌握关系数据库的基本的使用,培养学生对有关实际问题的系统分析能力和设计能力。主要内容有:数据库系统、数据库管理系统、概念模型与E-R图;关系数据库、关系模型、关系代数方法、关系数据库标准语言SQL、关系数据理论;数据库设计、实施与维护、数据库恢复技术、数据库安全性、数据库完整性和并发控制等。通过上机实践, 进一步加深理论知识,使学生能针对具体问题编制相应的数据库应用程序,今后能独立开发面向应用的数据库系统的应用程序,进一步提高学生的程序设计和调试能力。
二、成绩考核方法:
本课程为考试课程,其成绩组成为平时成绩(包括出勤10、测验20、团队项目20)占50%,期末考试占50%。
第1章 数据库系统的基本原理
【课程导入】
问题:QQ系统中登录用户名及密码如何存放,并能快速比对出合法或非法用户?
【讲授内容】
1.1 数据库系统概述
1.1.1 数据库概念
1.数据(Data)
数据是数据库存储的基本对象。是描述现实世界中各种具体事物或抽象概念的、可存储并具有明确意义的符号记录。
2.数据库(DataBase,简称为DB)
简单的说,数据库就是相互关联的数据集合。严格的说,数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性。
3.数据库管理系统(DataBase Manage System,DBMS)
它的主要功能包括以下几个方面:数据定义功能数据操纵功能数据控制功能数据组织、存储和管理4.数据库系统(DataBase System,DBS)
数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库DB)、数据库管理系统DBMS)、应用系统和数据库管理员DBA)构成。
5.数据库应用系统(DataBase Application System,DBAS)
1.1. 数据管理技术的发展阶段
1.人工管理阶段
特点数据不保存数据不具有独立性数据不共享
2.文件管理系统阶段
文件管理系统阶段存储组织信息的主要弊端:数据的冗余和不一致2)数据独立性差数据孤立
3.数据库系统阶段
数据库系统的特点数据结构化数据的共享性高,冗余度低,易扩充数据独立性高数据由DBMS统一管理和控制1.1.3 数据系统的1. 计算机硬件、2. 计算机软件
3. 人员:DBA的具体职责包括:1)参与数据库的设计2)定义数据的安全性要求和完整性约束条件3)日常维护4)数据库的改进和重组重构.数据库用户最终用户、专业用户、数据库设计人员、应用程序员。
1)模式模式又称为概念模式或逻辑模式,一个数据库只有一个模式
2外模式外模式又称为子模式。一个数据库可以有多个外模式。
3内模式又称为存储模式。一个数据库只有一个内模式。
外模式/模式映射模式/内模式.物理独立性物理独立性通过模式/内模式映射来实现的。
2逻辑独立性逻辑独立性是通过外模式/模式映射来实现的。1.3.1 数据抽象的过程
1.概念模型
现在采用的概念模型主要是实体联系模型E-R模型。
两个实体之间的联系可以分为三种:1)一对一联系(1:1)2)一对多联系(1:n)3)多对多联系(m:n)
2.逻辑模型
逻辑模型有层次、网状关系3种。
3.外部模型
外部反映了用户使用数据库的观点。
4.内部模型
内部模型又称为物理模型,是数据库最层的抽象,它描述数据在磁盘上存储方式、存取设备和存取方法。
1..2 数据模型
1.数据模型的三要素
1)数据结构是对系统静态特性的描述。
2数据操作是对系统动态特性的描述。
3数据的完整性约束条件在关系模型中,任何关系都必须满足实体完整性和参照完整性。
关系名(属性1,属性2,属性3,……,属性n)
【课程小结】
本次课主要掌握数据库的基本概念、数据库发展各阶段的特点、数据模型,和数据库的三级模式两级映射,及数据的两种独立性的实现。
【课后自我总结分析】
因为数据库系统总体结构和概念比较抽象,学生对此有些模糊。需要在后面的课上反复提到,不断加深印象。
在线资源:
云班课APP:
黑板画三级模式结构图
在黑板上通过画图讲解抽象过程
本章内容可根据学时情况移至实践课讲解并演示。
《数据库原理与应用》 课程教案(第3章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第3章 MySQL数据库基本操作
(第1节+第2节+第3节+第4节) 目的、要求(分了解、熟悉、掌握三个层次):
1、熟练掌握关系数据库标准语言SQL,其功能强大,对数据库具有数据定义、数据查询、数据更新与数据控制功能。
2、熟练掌握SQL语言,提高对数据库操作的能力。
3、数据定义是使用数据的基础。要求掌握下述内容:数据定义(数据库创建、删除,表的创建、修改和删除) 重点:
1、数据库的创建、删除
2、常用数据类型
3、表的创建、修改与删除。 难点:
表的定义、修改及删除语句 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第3章课后选择题
思考题:
常用的数据类型包括哪几种?各数据类型的关键字是什么? 教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第3章 MySQL数据库基本操作
【课程导入】
问题:QQ拥有的用户很多,如何将数亿条用户信息存储到计算机中哪?
【讲授内容】
3.1 关系数据库标准语言SQL
1. SQL的特点
1)综合统一2)高度非过程化3)面向集合的操作方式4)同一种语法结构提供两种使用方式5)语言简洁、易学易用
2. SQL的1)数据定义语言用定义、修改、删除数据库对象。
2数据操纵语言查询、插入、修改、删除数据库中数据。
3数据控制语言用于事务控制、并发控制、完整性和安全性控制。
数据库的管理※※※
1) 创建数据库
CREATE DATABASE 数据库名;
2)选择数据库
USE 数据库名;
3.)删除数据库
DROP DATABASE 数据库名;
3.3 MySQL存储引擎
1)InnoDB:是事务型数据库的首选引擎,MySQL8.0版本默认的存储引擎。
2)MyISAM:拥有较高的插入、查询速度,但不支持事务。
3)MEMORY:表数据存储在内存中,访问速度非常快。
4)选择存储引擎:InnoDB存储引擎适用于需要事务支持的场景,其行级锁定的特性对事务的高并发有很好的适应能力。由于可以实现事务的提交(Commit)和回滚(Rollback),所以也适用于需要频繁地进行更新、删除操作的数据库。MyISAM存储引擎适用于不需要事务支持、并发相对较低、数据修改相对较少、以读为主、数据一致性要求不是非常高的场景。MEMORY存储引擎适用于需要很快的读写速度,对数据的安全性要求较低的场景。MEMORY存储引擎对表的大小有要求,不能建立太大的表。
3.4 表的管理
1.数据类型※※※
1)字符类型CHAR、VARCHAR类型。
2)数类型类型。3)日期类型类型。
1)创建表
CREATE TABLE 表名
( <列名> <数据类型> [DEFAULT <默认值>] [,…]);
2)利用子查询来创建表
CREATE TABLE <表名>
SELECT语句
3)修改表的结构
1)在一个表中增加一个新列
ALTER TABLE <表名>
ADD [COLUMN] <列名> <数据类型> [DEFAULT <默认值>] 2)修改一个表中已有的列
ALTER TABLE <表名>
MODIFY <列名> <数据类型> [DEFAULT <默认值>]
3)从一个表中删除一列
ALTER TABLE <表名>
DROP [COLUMN] <列名>
(4)修改字段名
ALTER TABLE 表名
名
(5)删除字段
ALTER TABLE 表名
DROP 列名
ALTER TABLE 旧表名
(7) 更改表的存储引擎
ALTER TABLE 表名 ENGINE=更改后的存储引擎;
4.删除表
当不仅要删除表中的数据而且还要删除表的结构,可以使用DROP TABLE语句。该语句的格式为:
DROP TABLE <表名>
本次课主要掌握MySQL下的常用数据类型,并能通过SQL语句实现数据库的创建及删除、表的创建、修改及删除。
【课后自我总结分析】
学生第一次接触SQL语句,需将每个语句所用关键词分析透彻帮助学生记忆,督促学生课上书写练习、课下在MySQL环境下多加敲练,另要强调和注意书写格式,如建表时,的使用。
平台操作演示
课上学生进行练习
《数据库原理与应用》 课程教案(第3章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第3章 MySQL数据库基本操作
(第5节+第6节) 目的、要求(分了解、熟悉、掌握三个层次):
熟练掌握SQL语言,提高对数据库操作的能力。
掌握对表中数据插入、删除和更新的维护操作。
3、熟练掌握数据查询SELECT语句(单表查询;连接查询) 重点:
1、表数据的插入、删除和更新操作。
2、数据查询(单表查询;连接查询;SELECT语句的一般格式)。 难点:
1、表数据的插入、删除和更新语句
2、数据查询(连接查询) 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第2章课后选择题
思考题:
多表连接查询,各表间连接的字段名必须要求相同吗?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第3章 MySQL数据库基本操作
【课程导入】
问题:用户登录界面注册新的用户,怎么将数据添加到数据库中?怎么样实现用户密码的修改?
3.5 表的数据维护 ※※※
1 插入数据
1)INSERT语句
当往一个表中添加一行新的数据时,需要使用DML语言中的INSERT语句。该语句的基本语法格式如下:
INSERT INTO 表名 [ (列名1[,列名2……]) ]
VALUES (值1[,值2……])
2)利用子查询向表中插入数据
INSERT INTO 表名 [ (列名1[,列名2……]) ] SELECT语句
2 更新数据
UPDATE语句的基本语法格式如下:
UPDATE 表名
SET 列名=值[,列名=值,……] [WHERE <条件>]
3 删除数据
DELETE语句的基本语法格式如下:
DELETE [ FROM ] 表名 [WHERE <条件>]
3.6 数据查询 ※※※
SELECT语句基本的语法如下:
SELECT | <列名 | 列表达式>[,<列名 | 列表达式>]……
FROM <表名或视图名>[,<表名或视图名>]……
[ WHERE <行条件表达式> ]
[ GROUP BY <分组列名1][,<分组列名2>]…… [ HAVING <组条件表达式> ] ]
[ ORDER BY <排序列名1 [ ASC| DESC ]> [,<排序列名2 [ ASC| DESC ]>]……]
1 基本查询
1.SELECT子句的规定
SELECT子句用于描述输出值的列名或表达式,其形式如下:
SELECT [ ALL | DISTINCT] | <列名或列名表达式序列>
.使用WHERE子句指定查询条件
运算符名称
符号及格式
说 明
算术比较判断
<表达式1> θ <表达式2>
θ代表的符号有:<、<=、>、>=、<>或!=、=
比较两个表达式的值
逻辑比较判断
<比较表达式1> θ <比较表达式2>
θ代表的符号按其优先级由高到低的顺序为:NOT、AND、OR
两个比较表达式进行非、与、或的运算
之间判断
<表达式> [NOT] BETWEEN <值1> AND <值2>
搜索(不)在给定范围内的数据
字符串模糊判断
<字符串> [NOT] LIKE <匹配模式>
查找(不)包含给定模式的值
空值判断
<表达式> IS [NOT] NULL
判断某值是否为空值
之内判断
<表达式> IN (<集合>)
判断表达式的值是否在集合内
分组查询
聚合函数
函 数
说 明
COUNT()
COUNT(<列名>)
计算记录的个数
对一列中的值计算个数
SUM(<列名>)
求某一列值的总和
AVG(<列名>)
求某一列值的平均值
MAX(<列名>)
求一列值的最大值
MIN(<列名>)
求一列值的最小值
使用聚合函数时,需要注意以下几点:
聚合函数只能出现在所查询的列、ORDER BY子句、HAVING子句中,而不能出现在WHERE子句、GROUP BY子句中。
除了COUNT()之外,其他聚合函数(包括COUNT(<列名>))都忽略对列值为NULL值的统计。
连接查询
连接查询时的一些注意事项:
要连接的表都要放在FROM子句中,表名之间用逗号分开,比如FROM detp,emp。
为了书写方便,可以为表起别名,表的别名在FROM子句中定义,别名放在表名之后,它们之间用空格隔开。注意,别名一经定义,在整个查询语句中就只能使用表的别名而不能再使用表名。
连接的条件放在WHERE子句中,比如WHERE emp.deptno=dept.deptno。
如果多个表中有相同列名的列时,在使用这些列时,必须在这些列的前面冠以表名来区别,表名和列名之间用句号隔开。
本次课主要掌握通过SQL语句实现表数据的插入、删除和更新操作,以及对表中数据的基本查询、分组查询和连接查询。
【课后自我总结分析】
数据库语句并不困难,要严格遵从语句格式要求。要引领学生学会分析,尤其是多表连接查询时,需要用到哪些表,及这些间的连接字段。另外就是要多加练习,促进灵活应用。
平台操作演示+练习
《数据库原理与应用》 课程教案(第3章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第3章 MySQL数据库基本操作
(第6节+第7节) 目的、要求(分了解、熟悉、掌握三个层次):
1、掌握数据查询(嵌套查询;集合查询)
2、掌握索引创建与删除
3、掌握视图(定义、查询、更新视图)
重点:
1、数据查询(嵌套查询;集合查询)
2、索引
3、视图 难点:
数据查询(嵌套查询;集合查询);索引的作用;视图的使用。 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
作业题:
课后习题二---(1、2)
练习题:
教材第2章课后习题
思考题:
什么情况下不能使用视图完成对表的插入、删除和更新操作?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第3章 MySQL数据库基本操作
【课程导入】
问题:QQ注册用户有上亿条,如何能快速的查找到指定用户的信息哪?怎样让用户只能看到允许他能查看的数据哪?
3.6 数据查询 ※※※
4. 子查询
1)使用IN操作符的多值子查询
比较运算符IN的含义为子查询返回列表中的任何一个。IN操作符比较子查询返回列表中的每一个值,并且显示任何相等的数据行。
2)使用ALL操作符的多值子查询
ALL操作符比较子查询返回列表中的每一个值。ALL为大于最大的。
3)使用ANY操作符的多值子查询
ANY操作符比较子查询返回列表中每一个值。ANY为大于最小的。
4)使用EXISTS操作符的多行查询
EXISTS操作符比较子查询返回列表的每一行。使用EXISTS时应注意:外层查询的WHERE子句格式为:WHERE EXISTS;在内层子查询中必须有WHERE子句,给出外层查询和内层子查询所使用表的连接条件。
集合查询
当两个SELECT查询结果的结构完全一致时,可以对这两个查询执行并、交、差的运算,运算符为UNION、INTERSECT和MINUS。
集合运算的格式为:
SELECT 语句1
UNION|INTERSECT|MINUS
SELECT 语句2
3.7 索引和视图 ※※※
1. 索引的创建与删除
1
创建索引的语句格式如下:
CREATE INDEX <索引名> ON <表名>(<列名>[,<列名>]……)
2)创建表时直接创建索引
CREATE TABLE 表名
(名 数据类型 数据类型
,[UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名(字段名 [ASC|DESC][,字段名 [ASC|DESC][,……]
);
3).
DROP INDEX <索引名>
ALTER TABLE 表名
DROP INDEX 索引名;
2. 视图
视图(View)是由SELECT子查询语句定义的一个逻辑表,只有定义而无数据,是一个虚表。
.创建视图
CREATE [OR REPLACE] VIEW <视图名> [(<别名>[,<别名>]…)]
AS
<子查询语句>
[WITH CHECK OPTION [CONSTRAINT <约束名>]]
[WITH READ ONLY]
对视图的更新实际上是对表中数据的更新,更新视图是指通过视图对表中的数据进行插入、删除和修改。
【课程小结】
本次课主要掌握嵌套查询和合并查询,索引的创建与删除,视图的创建、修改和删除,及对数据的增、删、改的操作。
【课后自我总结分析】
1)要让学生能够理解为什么要建索引,因为索引是优化查询的一种方式。
2)视图对应着数据库系统的外模式,是实现数据安全性的一种方式。
这两点一定要让学生知道,对以后数据库的管理有帮助。
平台操作演示+练习
《数据库原理与应用》 课程教案(第4章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第4章 关系模型基本原理(第1节+第2节) 目的、要求(分了解、熟悉、掌握三个层次):
1、了解关系数据库中的关系模型
2、熟悉关系数据结构及形式化定义的基本概念(关系、关系模式、关系数据库)3、
3、掌握关系的完整性。
重点:
1、关系的概念
2、关系模式的概念
3、关系的完整性 难点:
关系完整性实现 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
作业题:
课后习题四
练习:
教材第4章课后习题
思考题:
关系完整性包括哪三种?分别使用哪些命令短语实现? 教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第4章 关系模型基本原理
【课程导入】
问题:如果表中有多条重复记录会有什么影响?如何控制?
【讲授内容】
4.1 关系模型基本概念
4.1.1 基本术语
关系:是用于描述数据的一张二维表,组成表的行称为元组,组成表的列称为属性。
域(Domain):指列(或属性)的取值范围。
候选键(Candidate Key):也称为候选码。能唯一的标识关系中每一个元组的最小属性集。
主键(Priamary Key,PK):也称为主码。一个唯一识别关系中元组的最小属性集合。
主属性:候选键中所有的属性均称为主属性。
非主属性:不包含在任何候选键中的属性称为非主属性。
全码:关系中所有属性的组合是该关系的一个候选码,则该候选码称为全码。
外键(Foreign Key,FK):关系R中的某个属性K是另一个关系S中的主键,则称该属性K是关系R的外键。通过外键可以建立两表间的联系。
4.1.2 关系的特征
列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
各列的顺序在理论上是无序的,即列的次序可以任意互换,但使用时按习惯考虑列的顺序。
任意两个元组的侯选码不能相同。
行的顺序无所谓,即行的次序可以任意交换。
分量必须取原子值,即每一个分量都必须是不可分的数据项。
4.2 数据库完整性※※※
4.2.1 三类完整性规则
1.实体完整性规则
实体完整性给出了主键的取值的最低约束条件。
规则4.1 主键的各个属性都不能为空值。
2.参照完整性
参照完整性给出了在关系之间建立正确的联系的约束条件。
定义4.1 设F是关系R的一个或一组属性(但F不是R的主键),K是关系S的主键。如果F与K相对应,则称F是关系R的外键,并称关系R为参照关系,关系S为被参照关系。而关系R和关系S可以是同一个关系。
规则4.2 外键或者取空值(要求外键的每个属性均为空值),或者等于被参照关系中的主键的某个值。
参照完整性规则就是定义外键与主键之间的引用规则。
3.用户定义的完整性
根据应用环境的特殊要求,关系数据库应用系统中的关系往往还应该满足一些特殊的约束条件。
规则4.3 属性的取值应当满足用户定义的约束条件。
4.2.2 MySQL约束控制
1. 非空(NOT NULL)约束
字段名 数据类型 NOT NULL|NULL
2.主键(PRIMARY KEY)约束
主键约束主要是针对主键,以保证主键值的完整性。主键约束要求主键值必须满足两个条件:
(1)值唯一;
(2)不能为空值。
3.唯一约束
唯一约束主要是针对于候选键,以保证候选键值的完整性。唯一约束要求候选键满足2个条件:
(1)值唯一;
(2)可有一个且仅有一个空值。
4.检查约束
检查约束是通过检查输入到表中的数据来维护用户定义的完整性的,即检查输入的每一个数据,只有符合条件的数据才允许输入到表中。
5.外键约束
外键约束涉及到两个表,即主表和从表,从表是指外键所在的表,主表是指外键在另一张表中作为主键的表。
6. 自增(AUTO_INCREMENT)约束
默认情况下,在MySQL中AUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1。一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型,如TINYINT、SMALLINT、INT、BIGINT等。
7. 默认值(DEFAULT)约束
默认值约束是为表中某列指定默认值。
【课程小结】
本次课主要掌握数据的三种完整性及其实现。
平台操作演示+练习
《数据库原理与应用》 课程教案(第4章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第4章 关系模型基本理论(第3节+第4节) 目的、要求(分了解、熟悉、掌握三个层次):
1、掌握关系代数传统的集合运算
2、掌握关系代数专门的关系运算
重点:
关系代数的运算 难点:
组合的关系代数运算 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
作业题:
课后习题三
练习:
教材第4章课后习题
思考题:
关系代数五种基本操作的运行符号分别是什么? 教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第4章 关系模型基本原理
【课程导入】
问题:代数中的集合运算包括有什么?它们是实现关系运算增、删、改、查的数据理论基础。
【讲授内容】
4.3 关系代数
4.3.1 关系代数的基本操作
1.并(Union)
设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的所有元组构成的集合,记为R∪S。形式定义如下:
R∪S={t | t∈R∨t∈S}
关系的并操作对应于关系的插入记录的操作,俗称为+”操作。
2.差(Difference)
设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的元组构成的集合,记为R-S。形式定义如下:
R-S={t | t∈R∧t S}
关系的差操作对应于关系的删除记录的操作,俗称为-操作。
3.笛卡儿集(Cartesian Product)
设关系R和S的属性个数(即列数)分别为r和s,R和S的笛卡儿积是一个(r+s)列的元组集合,每个元组的前r个列来自R的一个元组,后s个列来自S的一个元组,记为R×S。形式定义如下:
R×S={ tr ts | t∈R∧ts∈S}
关系的笛卡儿积操作对应于两个关系记录横向合并的操作,俗称×”操作。
4.投影(Projection)
关系R上的投影是从R中选择出若干属性列组成新的关系。形式定义如下:
∏A(R)={ t[A] | t∈R}
其中,A为R中的属性列。
5.选择(Selection)
关系R上的选择操作是从R中选择符合条件的元组。形式定义如下:
(R)={t | t∈R∧F(t)=true}
.3.2 关系代数的4个组合操作
1.交(Intersection)
设关系R和S具有相同的关系模式,R和S的交是由属于R又属于S的元组构成的集合,记为R∩S。形式定义如下:
R∩S={ t | t∈R∧t∈S}
关系的交可以用差来表示,即R∩S=R-{R-S}。
关系的交操作对应于寻找两关系共有记录的操作,是一种关系查询操作。2.连接(Join)
连接也称为θ连接。它是从两个关系的笛卡儿积中选取属性值满足某一θ操作的元组。形式定义如下:
R ∞ S={ tr ts | tr∈R∧ts∈S∧tr[A] θts[B]}
也可写成: R ∞ S= eAθB(R×S)
3.除(Division)
关系的除操作能用其他基本操作表示,即
R÷S=∏X (R)-∏X (∏X (R)×∏Y (S)-R)
.4 元组关系演算
1.原子公式三种形式
(1)R(t)
(2)t[i] θ s[j]
(3)t[i]θc 或 cθ t[i]
2.公式的递归定义
(1)每个原子公式是公式。其中的元组变量是自由元组变量。
(2)如果P1和P2是公式,那么下面3个也为公式。
﹁P1,如果P1为真,则﹁P1为假。
P1∨P2,如果P1和P2中有一个为真或者同时为真,则P1∨P2为真,仅当P1和P2同时为假时,P1∨P2为假。
P1∧P2,如果P1和P2同时为真,则P1∧P2才为真,否则为假。t)( P)和(t)( P)也是公式。其中t是公式P中的自由元组变量,在(t)( P)和(t)( P)中称为约束元组变量。
(t)( P)表示存在一个元组t使得公式P为真;(t)( P)表示对于所有元组t都使得公式P为真。
(4)公式中各种运算符的优先级从高到低依次为:θ、和、﹁、∧和∨。在公式外还可以加括号,以改变上述优先顺序。
(5)公式只能由上述4种形式构成,除此之外构成的都不是公式。
3.关系代数中5种基本运算用元组关系演算表达式的表达※※※
(1)并
R∪S={t | R(t)∨S(t)}
(2)交
R∩S={t | R(t) ∧S(t)}
(3)投影
∏i1,i2,…,ik(R)={t | (u)(R(u)∧t[1]=u[i1]∧t[2]=u[i2]∧… ∧t[k]=u[ik]) }
例如,投影操作是∏2,3(R),那么元组表达式可写成:
{t | (u)(R(u)∧t[1]=u[2]∧t[2]=u[3]) }。
(4)笛卡尔积
R×S={t | (u)(v)( R(u)∧S(v)∧t[1]=u[1]∧t[2]=u[2]∧t[3]=u[3]∧t[4]=v[1]∧t[5]=v[2]∧t[6]=v[3]) }
(5)选择
σF(R)={t | R(t) ∧F’}
F’是F的等价表示形式。
例如,σ2=‘d’(R) 可写成{t | R(t)∧t[2]=’d’}。
因为差运算也常用,所以下面给出差运算的元组关系演算表达式。
(6)差
R-S={t | R(t)∧﹁S(t)}
【课程小结】
本次课主要掌握通过关系代数的四个组合操作写出关系代数表达式,掌握关系代数,会更有利于对SQL语句的理解记忆。
平台操作演示
黑板讲解
《数据库原理与应用》 课程教案(第5章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第5章 存储函数与存储过程(第1节+第2节+第3节) 目的、要求(分了解、熟悉、掌握三个层次):
1、熟悉常用的系统函数
2、掌握MySQL的常量的表示及变量的定义及使用;
3、掌握使用控制流语句实现简单及复杂的存储函数; 难点:
条件及循环语句在存储函数中的使用 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
作业题:
课后习题三(1)
练习:
教材第5章课后习题
思考题:
存储函数的参数区分输入和输出参数吗? 教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第5章 存储函数与存储过程
【课程导入】
问题:C或Java语言的判断结构和循环结构及函数作用?
【讲授内容】
5.1 常用系统函数
1)字符串函数
(1)计算字符串字符数的函数和字符串长度的函数
CHAR_LENGTH(str)返回字符串str所包含的字符个数。
(2)合并字符串函数
CONCAT(s1,s2,……)返回结果为连接参数产生的字符串,如果任何一个参数为NULL,则返回值为NULL。
(3)字符串大小写转换函数
LOWER(str)是将字符串str中的字母字符全部转换成小写字母。
UPPER(str)是将字符串str中的字母字符全部转换成大写字母。
(4)删除空格函数
LTRIM(str)返回删除前导空格的字符串str;
RTRIM(str)返回删除尾部空格的字符串str;
TRIM(str)返回删除两侧空格的字符串str。
(5)取子串函数
SUBSTRING(str,start,length)返回字符串str从start开始长度为length的子串。
2)数学函数
ABS(x)返回x的绝对值。
PI()返回圆周率π的值。
SQRT
1. 常量与变量
1)常量
(1)字符串常量
字符串常量指用单引号或双引号括起来的字符序列。在MySQL中推荐使用单引号。
(2)数值常量
数值常量可以分为整数常量和小数常量。
(3)日期和时间常量
日期和时间常量使用特定格式的字符日期值表示,用单引号括起来。如''2018/07/17'' 、 ''2018-07-17 10:30:20'' 。
(4)布尔值常量
布尔值只有true和false两个值,SQL命令运行结果用1代表true,用0代表false。
(5)NULL值
NULL值适用于各种字段类型,通常表示“不确定的值”,NULL值参与的运算,结果仍为NULL值。
2) 变量
(1)局部变量的定义与赋值
使用SET语句定义局部变量,并为其赋值。SET语句的语法格式如下:
SET @局部变量名=表达式1[,@局部变量名=表达式2,……]
【注意】SET语句可以同时定义多个变量,中间用逗号隔开即可。
(2)局部变量的显示
使用SELECT语句显示局部变量。SELECT语句的语法格式如下:
SELECT @局部变量名[,@局部变量名,……]
2)全局变量
全局变量是MySQL系统提供并赋值的变量。用户不能定义全局变量,只能使用。
2. 语句块、注释和重置命令结束标记
1)语句块
BEGIN…END用于定义SQL语句块,其语法格式如下:
BEGIN
SQL语句 | SQL语句块
END
2)注释
(1)单行注释
使用“##”符号作为单行语句的注释符,写在需要注释的行或语句后方。
(2)多行注释
使用/和/括起来可以连续书写多行的注释语句。
3)重置命令结束标记
DELIMITER语句的语法格式如下:
DELIMITER 符号
3. 存储函数
1)存储函数的创建
创建存储函数,需要使用CREATE FUNCTION语句,其语法格式如下:
CREATE FUNCTION 函数名([参数名 参数数据类型[,…]])
RETURNS 函数返回值的数据类型
BEGIN
函数体;
RETURN 语句;
END
2)调用存储函数
新创建的存储函数,调用方法与系统函数相同,其语法格式如下:
SELECT 函数名([参数值[,…]])
3) 删除存储函数
当不再需要某个存储函数时,可用DROP FUNCTION语句进行删除,其语法格式如下:
DROP FUNCTION 函数名;
5.3 程序流程控制语句
1. 条件判断语句
1)程序中变量的使用
(1)声明变量
在存储程序(如存储函数、存储过程、触发器等)中需使用DECLARE语句声明局部变量,其语法格式如下:
DECLARE 局部变量名[,局部变量名,……] 数据类型 [DEFAULT 默认值];
(2)为变量赋值
声明变量后,可用SET命令为变量赋值,其语法格式如下:
SET 局部变量名=表达式1[,局部变量名=表达式2,……];
2)IF语句
(1)形式一
IF <条件> THEN
SQL语句块1;
[ELSE
SQL语句块2; ]
END IF;
(2)形式二
IF <条件1> THEN
SQL语句块1;
ELSEIF <条件2> THEN
SQL语句块2;
……
ELSE
SQL语句块n;
END IF;
3)CASE语句
(1)形式一
CASE <表达式>
WHEN <表达式值1> THEN SQL语句块1;
WHEN <表达式值2> THEN SQL语句块2;
……
WHEN <表达式值n> THEN SQL语句块n;
[ ELSE SQL语句块n+1; ]
END;
(2)形式二
CASE
WHEN <条件1> THEN SQL语句块1;
WHEN <条件2> THEN SQL语句块2;
……
WHEN <条件n> THEN SQL语句块n;
ELSE SQL语句块n+1;
END;
2. 循环语句
1)LOOP循环
标签:LOOP
SQL语句块;
IF <条件表达式> THEN
LEAVE 标签;
END IF;
END LOOP;
2)WHILE循环
WHILE <条件表达式> DO
SQL语句块;
END WHILE;
3.REPEAT循环
REPEAT
SQL语句块;
UNTILE <条件表达式>
END REPEAT;
【课程小结】
本次课主要掌握MySQL下的常量、变量及常用的系统函数,使用程序控制流语句实现存储函数。
【课后自我总结分析】
注重学生编程逻辑思维能力培养,分析问题的逻辑处理过程,并能用语句编程解决实现。
平台操作演示
《数据库原理与应用》 课程教案(第5章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第5章 存储函数与存储过程(第4节+第5节) 目的、要求(分了解、熟悉、掌握三个层次):
1、了解存储过程的优点及游标的作用;
2、掌握存储过程的创建及调用;
3、掌握游标的使用步骤,通过游标实现对每条记录的不同操作。
重点:
1、存储过程的创建、调用及删除
2、游标的定义与使用
难点:
带参数的存储过程的创建及调用;
结合异常处理的游标应用。 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
作业:
课后习题三(2)
练习:
教材第5章课后习题
思考题:
存储过程和存储函数有哪些区别?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第5章 存储函数与存储过程
【课程导入】
问题:Select查询结果为一批记录,如何实现对查询结果逐条进行处理哪?
【讲授内容】
5.4 存储过程
1. 创建存储过程
CREATE PROCEDURE 存储过程名()
BEGIN
过程体;
END
2.调用存储过程
CALL 存储过程名();
3. 存储过程的参数
CREATE PROCEDURE 存储过程名(
[ IN | OUT | INOUT] 参数1 数据类型,
[ IN | OUT | INOUT] 参数2 数据类型,……
)
BEGIN
过程体;
END
IN参数
IN参数为输入参数,该参数值由调用者传入,并且只能够被存储过程读取。
OUT参数
OUT参数为输出参数,该类型的参数值由存储过程写入。OUT类型的参数适用于存储过程向调用者返回多条信息的情况。
INOUT参数
INOUT类型的参数同时具有IN参数和OUT参数的特性,在过程中可以读取和写入该类型参数。
4. 删除存储过程
DROP PROCEDURE 存储过程名;
5.5 游标
1.声明游标
在存储程序中,声明游标与声明变量一样,都需要使用DECLARE语句,其语法形式如下。
DECLARE 游标名 CURSOR FOR SELECT语句;
【说明】
(1)声明游标的作用是得到一个SELECT查询结果集,该结果集中包含了应用程序中要处理的数据,从而为用户提供逐行处理的途径。
(2)SELECT语句是对表或视图的查询语句。可以带WHERE条件、ORDER BY或GROUP BY等子句,但不能使用INTO子句。
2.打开游标
OPEN 游标名;
游标必须先声明后打开。打开游标时,SELECT语句的查询结果就被传送到了游标工作区,以便供用户读取。
3.提取数据
FETCH 游标名 INTO 变量名1[,变量名2……];
成功打开游标后,游标指针指向结果集的第一行之前。
4.关闭游标
CLOSE 游标名;
游标一旦关闭,游标占用的资源就被释放,用户不能再从结果集中检索数据,如果想重新检索,必须重新打开游标才能使用。
5. 异常处理
DECLARE 错误处理类型HANDLER FOR 错误触发条件 自定义错误处理程序;
【说明】
(1)一般情况下,异常处理语句置于存储程序(存储过程或存储函数)中才有意义;
(2)异常处理语句必须放在所有变量及游标定义之后,所有MySQL表达式之前;
(3)错误处理类型。错误处理类型只有CONTINUE和EXIT两种,CONTINUE表示错误发生后,MySQL立即执行自定义错误处理程序,然后忽略该错误继续执行其它MySQL语句。EXIT表示错误发生后,MySQL立即执行自定义错误处理程序,然后立刻停止其它MySQL语句的执行。
(4)错误触发条件。错误触发条件定义了自定义错误处理程序运行的时机。错误触发条件的形式如下:
SQLSTATE ''ANSI标准错误代码''
|MySQL错误代码
|SQLWARNING
|NOT FOUND
|SQLEXCEPION
错误触发条件支持标准的SQLSTATE定义,也支持MySQL的错误代码;
SQLWARNING表示对所有以01开头的SQLSTATE代码的速记;
NOT FOUND表示对所有以02开头的SQLSTATE代码的速记;
SQLEXCEPTION表示对所有没有被SQLWARNING或NOT FOUND捕获的SQLSTATE代码的速记;
(5)自定义错误处理程序。错误发生后,MySQL会立即执行自定义错误处理程序中的MySQL语句。
【课程小结】
本次课主要掌握存储过程的创建、调用及删除,尤其需灵活掌握带参数的存储过程的定义及使用。游标的声明、打开、读取、关闭过程,及使用异常处理提高代码的鲁棒性。
【课后自我总结分析】
存储过程是开发时的常用重点内容。游标可以实现逐条提取记录并进行不同的处理,过程易于理解,与存储过程结合实现不同功能。需多加练习。
《数据库原理与应用》 课程教案(第6章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第6章 触发器与事务处理(第1节+第2节+第3节) 目的、要求(分了解、熟悉、掌握三个层次):
了解事务的基本概念
熟悉事务的四个特性
掌握触发器的创建和删除
掌握并发控制会引发的问题及设置事务隔离级别处理方法
重点:
触发器的应用
事务概念
ACID特性
并发控制引发的问题
难点:
判断并发控制问题类型 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第6章课后习题
思考题:
事务的四个特性及其特点?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第6章 触发器与事务处理
【课程导入】
问题:在银行转账的业务中,出现当钱从一个卡中转出去,但因为某种突出原因,转出的钱没有进入到指定的卡中,该如何解决?
【讲授内容】
6.1触发器
CREATE TRIGGER 触发器名
BEFORE | AFTER
INSERT | DELETE | UPDATE
ON 表名
FOR EACH ROW
< 触发体 >
触发器的类型:INSERT触发器、UPDATE触发器、DELETE触发器
6.2 事 务
1. 事务的ACID特性※※※
事务的原子性是指事务中包含的所有操作要么全做,要么全不做。
一致性是指数据库在事务操作前和事务处理后,其中的数据必须都满足业务规则约束。
隔离性是数据库允许多个并发事务同时对其中的数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时,由于它们的操作命令交叉执行而导致的数据不一致状态。
事务的持久性表示为:当事务处理结束后,它对数据的修改应该是永久的,即使是系统在遇到故障的情况下也不会丢失。
2. MySQL事务控制语句
(1)开始事务
START TRANSACTION;
或
BEGIN WORK;
(2)提交事务
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE];
【说明】
① 提交事务的最简单形式,只需发出COMMIT命令,详细的写法是COMMIT WORK。
② AND CHAIN子句会在当前事务结束时,立刻启动一个新事务,并且新事务与刚结束的事务有相同的隔离等级。
③ RELEASE子句在终止了当前事务后,会让服务器断开与当前客户端的连接。
④ NO关键字可以抑制CHAIN或RELEASE完成。
4. 回滚事务
回滚事务使用ROLLBACK语句,回滚会结束用户的事务,并撤消正在进行的所有未提交的修改(即BEGIN WORK或START TRANSACTIO后的所有修改)。ROLLBACK语句的语法形式如下:
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE];
6.3 并发控制※※※
6.3.2 并发执行可能引起的问题
1.丢失更新(lost update)
由于两个(或多个)事务对同一数据并发地写入引起,称为写—写冲突。
导致与串行地执行两个(或多个)事务的结果不一致。
2.不可重复读(unrepeatable read)
原因:该问题因读—写冲突引起。
结果:第二次读的值与前次读的值不同。
3.读脏数据(dirty read)
原因:后一事务读了前一个事务写了但尚未提交的数据,称为写—读冲突。
结果:读到有可能要回退的更新数据。但如果前一事务不回退,那么后一事务读到的数据仍是有意义的。
6.3.3 事务隔离级别
隔离级别
丢失更新
读脏数据
不可重复读
幻影读
未提交读
(read uncommitted)
是
是
是
是
提交读(read committed)
否
否
是
是
可重复读(repeatable read)
否
否
否
是
可串行读(serializable)
否
否
否
否
6.3.4 MySQL事务隔离级别设置
1.MySQL隔离级别的设置
MySQL支持上述4种隔离级别,定义事务的隔离级别可以使用SET TRANSACTION语句,其语法形式如下:
SET SESSION TRANSACTION ISOLATION LEVEL
SERIALIZABLE
|REPEATABLE READ
|READ COMMITED
|READ UNCOMMITED;
【课程小结】
本次课要求掌握事务四个特性,能够判断出事务并发控制过程中引起的问题类别。
《数据库原理与应用》 课程教案(第6-7章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第6章 触发器与事务处理(第4节+第5节)
第7章 数据库的安全控制 目的、要求(分了解、熟悉、掌握三个层次):
熟悉封锁
掌握封锁协议
掌握MySQL的并发控制
了解实现数据库的安全性的方法和技术。
5、掌握数据库的安全性的设置方法。
MySQL权限管理
2、灵活应用MySQL下的并发控制语句
3、权限管理 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第6章和第7章课后习题
思考题:
三级封锁协议分别解决并发控制带来的哪些问题?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第6章 事务与并发控制
【课程导入】
问题:2个事务并发的购买火车票,怎样防止一张票卖给2个人的呢?
【讲授内容】
6.4 封锁机制
6.4.1 锁
(1)排它锁(X锁)
排它锁又称为写锁。若一个事务T1在数据对象R上获得了排他锁,则T1既可对R进行读操作,也可进行写操作。而其他任何事务不能对R加任何锁,因而不能进行任何操作,直至T1释放了它对R加的锁。所以排他锁就是独占锁。
(2)共享锁(S锁)
共享锁又称为读锁。若一个事务T1在数据对象R上获得了共享锁,则它能对R进行读操作,但不能写R。其他事务可以也只能同时对R加共享锁。
6.4.2 封锁协议※※※
1.一级封锁协议:事务T在修改数据对象之前必须对其加X锁,直至事务结束。
2.二级封锁协议内容:在一级封锁协议的基础上,另外加上事务T在读取数据对象R之前必须先对其加S锁,读完后释放S锁。
3.三级封锁协议内容是:在一级封锁协议的基础上,另外加上事务T在读取数据R之前必须先对其加S锁,读完后并不释放S锁,而直至事务T结束才释放。
6.4.3 “死锁”问题
1)“死锁”的预防
预防死锁有两种方法:一次加锁法和顺序加锁法。
(2)“死锁”解除
DBMS中有一个死锁测试程序,每隔一段时间检查并发的事务之间是否发生死锁。如果发现死锁,DBA从依赖相同资源的事务中抽出某个事务作为牺牲品,将它撤消,并释放此事务占用的所有数据资源,分配给其他事务,使其他事务得以继续运行下去,这样就有可能消除死锁。
6.5 MySQL的并发控制
6.5.1 表级锁
Lock tables 表名 read [表名 write]… ;
6.5.2 行级锁
① 在查询语句中,为符合查询条件的记录施加共享锁,语法形式如下:
SELECT FROM 表名 WHERE 条件 LOCK IN SHARE MODE;
② 在查询语句中,为符合查询条件的记录施加排他锁,语法形式如下:
SELECT FROM 表名 WHERE 条件 FOR UPDATE;
③ 在更新(INSERT、UPDATE、DELETE)语句中,MySQL将会对符合条件的记录自动施加隐式排他锁。
6.5.3 表的意向锁
意向锁(I)是隐式的表级锁,MySQL提供了两种意向锁:意向共享锁(IS)和意向排他锁(IX)。
意向共享锁(IS)。事务向表的某些记录施加行级共享锁时,MySQL会自动地向该表施加意向共享锁(IS)。
意向排他锁(IX)。事务向表的某些记录施加行级排他锁时,MySQL会自动地向该表施加意向排他锁(IX)。
第7章 数据库的安全管理
【课程导入】
问题:一个公司中每个员工可以访问的数据是一样的吗?怎样让不同人可以访问不同数据内容呢?
【讲授内容】
7.2 MySQL的安全设置※※※
7.2.1 用户管理
1.创建用户账号
CREATE USER 用户 [IDENTIFIED BY [PASSWORD] ''密码'']
[,用户 [IDENTIFIED BY [PASSWORD] ''密码'']]…;
【说明】
① 用户的格式: 用户名@主机名
主机名指定了创建的用户使用MySQL连接的主机。“%”表示一组主机。localhost表示本地主机。
② IDENTIFIED BY子句指定创建用户时的密码。如果密码是一个普通的字符串,就不需要使用PASSWORD关键字。
2.修改用户密码
在创建用户后,允许对其进行修改,可以使用SET PASSWORD语句修改用户的登录密码,其语法形式如下:
SET PASSWORD FOR 用户=''新密码'';
3. 修改用户名
修改已存在的用户名,可以使用RENAME USER语句,其语法形式如下:
RENAME USER 旧用户名 TO 新用户名[,旧用户名 TO 新用户名][,…];
4.删除用户账号
使用DROP USER语句可删除一个或多个MySQL用户,并取消其权限。其语法形式如下:
DROP USER 用户[,…];
7.2.2 权限管理
1. 授予权限
(1)授予MySQL字段级别权限
在MySQL中,使用GRANT语句授予权限。授予MySQL字段级别权限的语法形式如下:
GRANT 权限名称(列名[,列名,…])[, 权限名称(列名[,列名,…]),…]
ON TABLE 数据库名.表名或视图名
TO 用户[,用户,…]
[WITH GRAND OPTION];
(2)授予MySQL表级别权限
授予MySQL表级别权限的语法形式如下:
GRANT 权限名称[, 权限名称,…]
ON TABLE 数据库名.表名或视图名
TO 用户[,用户,…]
[WITH GRAND OPTION];
(3)授予MySQL存储程序级别权限
授予存储程序级别权限的语法形式如下:
GRANT 权限名称[, 权限名称,…]
ON FUNCTION|PROCEDURE 函数名|存储过程名
TO 用户[,用户,…]
[WITH GRAND OPTION];
(4)授予MySQL数据库级别权限
授予MySQL数据库级别权限的语法形式如下:
GRANT 权限名称[, 权限名称,…]
ON 数据库名.
TO 用户[,用户,…]
[WITH GRAND OPTION];
(5)授予MySQL服务器管理员级别权限
授予MySQL服务器管理员级别权限的语法形式如下:
GRANT 权限名称[, 权限名称,…]
ON .
TO 用户[,用户,…]
[WITH GRAND OPTION];
2. 撤消权限
(1)撤消所有权限
撤消用户所有权限的REVOKE语句语法形式如下。
REVOKE ALL PRIVILEGES,GRANT OPTION
FROM 用户[,用户,…];
(2)撤消指定权限
撤消用户指定权限的REVOKE语句语法形式如下。
REVOKE 权限名称[(列名[,列名,…])][,权限名称[(列名[,列名,…])],…]
ON .|数据库名.|数据库名.表名或视图名
FROM 用户[,用户,…];
7.2.3 角色管理
1.创建角色
创建角色的语法形式如下。
CREATE ROLE 角色;
角色格式:''角色名''@''主机名''。
2.授予角色权限
授予角色权限的语法格式类似于授予用户权限,只需将GRANT语句TO后的用户改为角色即可。
3.授予用户角色
授予用户角色的语法形式如下。
GRANT 角色[,角色,…] TO 用户[,用户,…];
4.撤消用户角色
撤消用户角色的语法形式如下。
REVOKE 角色[,角色,…] FROM 用户[,用户,…];
5.删除角色
删除角色的语法形式如下。
DROP USER 角色[,角色,…];
【课程小结】
本次课要求能够根据判断并发控制引发的问题类别,采用封锁协议解决并发控制问,MySQL下各并发锁的应用。MySQL下用户账号管理、权限管理及角色管理。
《数据库原理与应用》 课程教案(第8-9章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第8章 数据库的备份与恢复
第9章 MySQL数据库性能优化 目的、要求(分了解、熟悉、掌握三个层次):
了解数据库恢复的概述
掌握故障的种类
熟悉恢复的实现技术及恢复的策略
掌握MySQL下的数据备份与恢复
掌握查询优化和数据库结构优化策略
重点:
1、故障种类、恢复实现技术、恢复策略
2、MySQL数据的备份与恢复、表数据的导出与导入
3、查询优化
难点:
1、恢复实现技术
2、灵活应用MySQL下的备份与恢复语句
3、索引对查询速度的影响 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第8章和第9章课后习题
思考题:
故障的三种类型及恢复方法?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第8章 数据库的备份与恢复
【课程导入】
问题:处理数据过程中,会出现什么样故障(如磁盘损坏、系统死机等),出现故障对数据有什么负影响,我们又如何将数据恢复到最近时间内的正确状态?
【讲授内容】
8.1 数据库备份与恢复概述
1、平时做好两件事:转储和建立日志。
周期地(比如一天一次)对整个数据进行复制,转储到另一个磁盘或磁带一类的存储介质中。
建立日志数据库。记录事务的开始、结束标志,记录事务对数据库的每一次插入、删除和修改前后的值,写到日志库中,以便有案可查。
(2)数据库系统基本的共同恢复方法。
优先写日志。任何对数据库中数据元素的变更都必须先写入日志;将变更的数据写入磁盘前,日志中的所有相关记录必须写入磁盘。
REDO(重做)已提交事务的操作。当发生故障而使系统崩溃后,对那些已提交但其结果尚未真写到磁盘上去的事务操作要重做,使数据库恢复到崩溃时所处理状态。
UNDO(撤销)未提交事务的操作。系统崩溃时,那些未提交事务操作所产生的数据库变更必须恢复到原状,使数据库只反映已提交事务的操作结果。
2、故障类型
(1)事务故障就是一个事务不能再正常执行下去了。事务故障又可分为两种。可以预期的事务故障。非预期的事务故障。
(2)系统故障可能导致事务的两种情况:尚未完成的事务;已提交的事务。处理过程:对未完成事务作UNDO处理;对已提交事务但更新还留在内存缓冲区的事务进行REDO处理。
(3)介质故障恢复的方法是:重新装入转储的后备副本到新的磁盘,使数据库恢复到转储时的一致状态。在日志中找出转储以后所有已提交的事务。对这些已提交的事务进行REDO处理,将数据库恢复到故障前某一时刻的一致状态。
3、备份与恢复的策略
(1)怎样复制数据库的问题,可以采用海量转储和增量转储两种策略。
(2)在什么情况下做备份的问题,可以采用静态转储和动态转储两种策略。
(3)登记日志文件:事务登记的次序必须严格按并发事务执行的时间次序。必须先写日志文件,后写数据库。
8.2 MySQL数据备份与恢复※※※
1. 使用mysqldump命令备份数据
1)备份单个数据库或表
mysqldump -u 用户名 -h 主机名 -p 密码 数据库名 [表名 [表名…]] >备份文件名.sql
2)备份多个数据库
mysqldump -u 用户名 -h 主机名 -p 密码 --databases 数据库名 数据库名 … >备份文件名.sql
3)备份所有数据库
使用mysqldump备份所有数据库,命令形式如下:
mysqldump -u 用户名 -h 主机名 -p 密码 --all-databases >备份文件名.sql
2. 使用mysql命令恢复数据
mysql -u 用户名 -p 数据库名 < 备份文件名.sql
表数据的导出与导入
1)使用SELECT …INTO OUTFILE语句导出表数据
SELECT语句 INTO OUTFILE ''文本文件''
[FIELDS [TERMINATED BY ''字符'']
[[OPTIONALLY] ENCLOSED BY ''字符'']
[ESCAPED BY ''字符'']
]
[LINES [STARTING BY ''字符串'']
[TERMINATED BY ''字符串'']
]
2)使用mysqldump命令导出表数据
用mysqldump命令不仅可以备份数据库,还可以将表数据导出到文本文件。mysqldump命令导出表数据的语法形式如下:
mysqldump -u root -p -T "目标路径" 数据库名 表名
[--fields-terminated-by=字符]
[--fields-enclose-by=字符]
[--fields-optionally-enclosed-by=字符]
[--fields-escaped-by=字符]
[--lines-terminated-by=字符串]
3)使用LOAD DATA INFILE语句导入表数据
LOAD DATA INFILE ''文本文件'' INTO TABLE 表名
[FIELDS [TERMINATED BY ''字符'']
[[OPTIONALLY] ENCLOSED BY ''字符'']
[ESCAPED BY ''字符'']
]
[LINES [STARTING BY ''字符串'']
[TERMINATED BY ''字符串'']
]
[IGNORE n LINES]
4)使用mysqlimport命令导入表数据
mysqlimport -u root -p 数据库名 文本文件名.txt
[--fields-terminated-by=字符]
[--fields-enclose-by=字符]
[--fields-optionally-enclosed-by=字符]
[--fields-escaped-by=字符]
[--lines-terminated-by=字符串]
[--ignore-lines=n]
8.4 数据库迁移
1)相同版本的MySQL数据库之间的迁移:迁移的过程其实就是源数据库备份和目标数据库恢复过程的组合。
2)不同版本的MySQL数据库之间的迁移:使用mysqldump命令进行备份,然后通过mysql命令将备份文件导入到目标MySQL数据库中。
3)不同数据库之间的迁移
8.5 MySQL日志管理
1)错误日志:记录MySQL服务的启动、运行或停止服务时出现的问题。
2)查询日志:记录建立的客户端连接和执行的语句。
3)二进制日志:记录所有更改数据的语句,可以用于数据恢复。
4)慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询。
第章 MySQL数据库性能优化
9.1 优化简介
SHOW STATUS LIKE ''value'';
9.2 优化查询
1、分析查询语句的执行计划
EXPLAIN SELECT语句;
2 索引对查询速度的影响※※※
1)查询语句使用LIKE关键字进行查询时,如果匹配字符串的第一个字符为“%”,索引不会起作用。只有“%”不在第一个位置,索引才会起作用。
2)多列索引是在表的多个字段上创建一个索引。只有查询条件中使用了这些字段中的第一个字段时,索引才会被使用。
3)查询语句的查询条件中只有OR关键字,且OR前后的两个条件中的列都是索引时,查询中才使用索引。如果OR前后有一个条件的列不是索引,那么查询中将不使用索引。
9.3 优化数据库结构
1. 表的优化:将字段很多的表分解成多个表;增加中间表;增加冗余字段。
2. 分析表、检查表和优化表
ANALYZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE 表名[,表名,……];
CHECK TABLE 表名[,表名,……];
OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE 表名[,表名,……];
【课程小结】
本次课要求掌握故障的三种类型,MySQL下数据备份与恢复的命令实现。掌握查询优化和数据库结构优化方法,尤其是哪些使用索引的情况不能提高查询速度。
《数据库原理与应用》 课程教案(第10章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第9章 关系数据库规范化理论(第1节+第2节) 目的、要求(分了解、熟悉、掌握三个层次):
掌握关系中存在的异常及其原因
掌握数值依赖的公理系统(闭包;最小函数依赖集)
重点:
1、关系模式中存在异常的判断
2、求关系模式的函数依赖集
难点:
求最小函数依赖集 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第10章课后习题
思考题:
不好的关系模式会存在哪些异常情况?各异常情况导致的原因?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第10章 关系数据库规范化理论
【课程导入】
问题:给出的任何一个关系都是合理的吗?怎么判断?如何将关系分解为合理的关系?
【讲授内容】
10.1 关系模式中可能存在的异常※※※
1.数据冗余
2.插入异常:插入异常的表现是,元组插入不进去。
3.删除异常:删除异常的表现是,删除时,删掉了其他不应删除的信息。
4.更新异常:更新异常的表现是,修改一个元组,却要求修改多个元组。
关系模式异常现象产生的原因,就是由于关系模式中存在的这些复杂的数据依赖关系所导致的。在设计关系模式时,如果将各种有联系的实体数据集中于一个关系模式中,不仅造成关系模式结构冗余、包含的语义过多,也使得其中的数据依赖变得错综复杂,不可避免地要违背以上某个或多个限制,从而产生异常。这种方法是根据完整的样本数据和函数依赖的定义来实现的。在没有样本数据或者只有部分样本数据时,则不能用此方法确定数据之间函数依赖的关系。
【例-4】设F是关系模式R(A,B,C)的FD集,F={A→BC,B→C,A→B,AB→C},试求最小函数依赖集。
解答:
(1)先把F中的函数依赖写成右边是单属性形式:
F={A→B,A→C,B→C,A→B,AB→C}
删去一个A→B,得:
F={A→B,A→C,B→C,AB→C}
(2)删去冗余的函数依赖。F中A→C可从A→B和B→C推出,因此A→C是冗余的,删去,得:
F={A→B,B→C,AB→C}
(3)消除函数依赖左边冗余的属性。F中的AB→C,因为有B→C,所以A多余,删去,得到最小函数依赖集为:
F={A→B,B→C}
【例-5】设关系模式R(A,B,C,D,E,G,H)上的函数依赖集F={AC→BEGH,A→B,C→DEH,E→H},求F的最小函数依赖集。
解答:
(1)把每个FD的右边拆成单属性,得到9个FD,得:
F={AC→B,AC→E,AC→G,AC→H,A→B,C→D,C→E,C→H,E→H}
(2)消除冗余的FD,得:
F={ AC→B,AC→E,AC→G,AC→H,A→B,C→D,C→E,E→H}
(3)消除FD中左边冗余的属性。因为A→B,所以消去AC→B中的C;因为C→E,所以消去AC→E的A;因为由C→E、E→H,可推出C→H,所以消去AC→H中的A,得C→H,因为可由C→E、E→H推出,所以将AC→H删去,得到的F为:
F={ A→B,C→E,AC→G,A→B,C→D,C→E,E→H}
精简后,得
F={ A→B,C→E,AC→G,C→D,E→H}
(4)再把左边相同的FD合并起来,得到最小的函数依赖集为:
F={ A→B,C→DE,AC→G,E→H}
函数依赖,码,范式概念不太好理解,通过示例来讲解这些抽象的概念。为规范化的理解打好基础。闭包相对于规范化的概念还是要好理解的。
黑板例题推导讲解
《数据库原理与应用》 课程教案(第10章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第10章 关系数据库规范化理论(第3节) 目的、要求(分了解、熟悉、掌握三个层次):
1、掌握属性集闭包的求法
2、掌握通过最小函数依赖集求候选码
重点:
求关系的候选键
难点:
求属性集闭包、候选键 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第10章课后习题
思考题:
如何判断关系中属性或属性组合是候选键?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第10章 关系数据库规范化理论
【课程导入】
问题:候选键的作用是什么?候选键和主键的关系?
【讲授内容】
10.3 候选键
10.3.1 候选键定义※※※
定义10.2 设R是一个具有属性集合U的关系模式,K?U。如果K满足下列两个条件,则称K是R的一个候选键:
① K→U;
② 不存在K的真子集Z,使得Z→U。
10.3.2 属性集的闭包
定义10.3 设F是属性集U上的函数依赖集,X是U的子集,那么属性集X的闭包用X+表示,它是一个从F集使用函数依赖推理规则推出的所有满足X→A的属性A的集合:
X+={属性A|X→A能由F推导出来}
从属性集闭包的定义,容易得出下面的定理。
定理 10.1 X→Y能由F根据函数依赖推理规则推出的充分必要条件是Y?X+。
于是,判定X→Y是否能由F根据函数依赖推理规则推出的问题,就转化为求出X+的子集问题。这个问题由下面的算法3.1解决。
算法10.1 求属性集X(X?U)关于U上的函数依赖集F的闭包X+。
输入:函数依赖集F;属性集U
输出:X+
步骤:(1)令X(0)=X,i=0;
(2)求Y,这里Y={A|(V)(W)(V→W∈F∧V?X(i) ∧A∈W)};
(3)X(i+1) =Y∪X(i) ;
(4)判断X(i+1) =X(i)是否成立;
(5)如果等式成立或X(i+1) =U,则X(i+1) 就是X+,算法终止;
(6)如果等式不成立,则i=i+1,返回步骤(2)继续。
10.3.3 求候选键※※※
已知关系模式R(U,F),U是R的属性集合,F是R的函数依赖集,如何找出R的所有候选键?下面给出一个可参考的规范方法,通过它可以找出R的所有候选键,步骤如下。
(1)查看函数依赖集F中的每个形如Xi→Yi(i=1,…,n)的函数依赖关系。看哪些属性在所有Yi(i=1,…,n)中一次也没有出现过,设没有出现过的属性集为P(P=U-Y1-Y2-…Yn)。则当P=(时,转步骤(4);P≠(时,转步骤(2)。
(2)根据候选键的定义,候选键中应必包含P(因为没有其它属性能决定P,但自己能决定自己)。考察P,如果P满足候选键定义,则P为候选键,并且候选键只有P一个,然后转步骤(5)结束;如果P不满足候选键定义,则转步骤(3)继续。
(3)P可以分别与{U-P}中的每一个属性合并,合成P1、P2、…、Pm。再分别判断Pj(j=1,…,m)是否满足候选键定义,能成立则找到了一个候选键,没有则放弃。合并一个属性如果不能找到或不能找全候选键,可进一步考虑P与{U-P}中的2个(或3个,4个,…)属性的所有组合分别进行合并,继续判断分别合并后的各属性组是否满足候选键的定义,如此下去,直到找出R的所有候选键为止。转步骤(5)结束。
注意:如果属性组K已有K→U,则不需要再去考察含K的其它属性组合,显然它们都不可能再是候选键了(根据候选键定义的第②项)。
(4)如果P=(,则可以先考察Xi→Yi(i=1,…,n)中的单个Xi,判断Xi是否满足候选键定义。如果成立则Xi为候选键。剩下不是候选键的,可以考察它们两个或多个的组合,查看这些组合是否满足候选键定义,从而找出其它可能还有的候选键。转步骤(5)结束。
(5)本方法结束。
【课程小结】
最小函数依赖集是求解候选键的基础,候选键又是规范化的前提,候选键的判断方法较麻烦,需要多加练习。
黑板演示求解过程
练习
《数据库原理与应用》 课程教案(第10章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第10章 关系数据库规范化理论(第4节) 目的、要求(分了解、熟悉、掌握三个层次):
掌握范式的规范化(2NF;3NF;BCNF)。
掌握判断无损连接的方法
重点:
判断关系属于第几范式,并能分解为指定的范式
无损连接判定方法
难点:
关系范式的判断和分解 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第10章课后习题
思考题:
1NF、2NF、3NF的判断方法?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第10章 关系数据库规范化理论
【课程导入】
问题:对不合理的关系模式怎么分解才能变成合理的?
【讲授内容】
10.4 关系模式的规范化※※※
10.4.1 范式及规范化
1.范式
范式(Normal Form,NF)是指关系模式的规范形式。
关系模式上的范式有6个:1NF(称作第一范式,以下类同)、2NF、3NF、BCNF、4NF、5NF。各范式间的联系为:
5NF4NFBCNF3NF2NF1NF
2.规范化
将一个给定的关系模式转化为某种范式的过程,称为关系模式的规范化过程。
规范化一般采用分解的办法,将低级别范式向高级别范式转化,使关系的语义单纯化。
规范化的目的是逐渐消除异常。
10.4.2 完全函数依赖、部分函数依赖和传递函数依赖
1.完全函数依赖和部分函数依赖
定义10.4 设R是一个具有属性集合U的关系模式,X和Y是U的子集。
如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全函数依赖
于X,记作X→Y;
如果X→Y,并且对于X的任何一个真子集Z,Z→Y都成立,则称Y部分函数依赖
于X,记作X→Y。
2.传递函数依赖
定义10.5 设R是一个具有属性集合U的关系模式,X、Y、Z是U的子集,且X、Y、Z是不同的属性集。如果X→Y,Y→X不成立,Y→Z,则称Z传递函数依赖于X,记作X→Y
说明:
(1)如果X→Y,且Y→X,则称X与Y等价,记作X?Y。
(2)如果定义中Y→X成立,则X与Y等价,这时称Z对X直接函数依赖,而不是传递函数。
10.4.3 以函数依赖为基础的范式
1.第一范式(1NF)
定义10.6 设R是一个关系模式。如果R中每个属性的值域,都是不可分的原子值,则称R是第一范式,记作1NF。
1NF是关系模式具备的最起码的条件。
2.第二范式(2NF)
定义10.7 如果关系模式R是1NF,而且R中所有非主属性都完全函数依赖于任意一个候选键,则称R是第二范式,记作2NF。
2NF的实质是不存在非主属性“部分函数依赖”于候选键的情况。
非2NF关系或1NF关系向2NF的转换原则是消除其中的部分函数依赖,一般是将一个关系模式分解成多个2NF的关系模式,即将部分函数依赖于候选键的非主属性及其决定属性移出,另成一个关系,使其满足2NF。可以总结为如下方法:
3.第三范式(3NF)
定义10.8 如果关系模式R是2NF,而且R中所有非主属性对任何候选键都不存在传递函数依赖,则称R是第三范式,记作3NF。
3NF是从1NF消除非主属性对候选键的部分函数依赖,和从2NF消除传递函数依赖而得到的关系模式。
2NF关系向3NF转换的原则是消除传递函数依赖,将2NF关系分解成多个3NF关系模式。可以总结为如下方法:
设关系模式R属性集合为U,主键是W,R上还存在函数依赖X→Z,并且Z是非主属性,Z不包含于X,X不是候选键,这样W→Z就是一个传递依赖。此时应把R分解成两个关系模式:
R1(XZ),主键是X;
R2(Y),其中Y=U-Z,主键仍是W,外键是X。
4.Boycc-Codd范式(BCNF)
定义10.9 如果关系模式R是1NF,且对于R中每个函数依赖X→Y,X必为候选键,则称R是BCNF范式。
由BCNF的定义可以知,每个BCNF范式应具有以下3个性质:
(1)所有非主属性都完全函数依赖于每个候选键;
(2)所有主属性都完全函数依赖于每个不包含它的候选键;
(3)没有任何属性完全函数依赖于非键的任何一组属性。
3NF关系向BCNF转换的原则是消除主属性对候选键的部分和传递函数依赖,将3NF关系分解成多个BCNF关系模式。
10.4.4 关系的分解
1.无损连接分解※※※
如果关系模式R上的任一关系r都是它在各分解模式上投影的自然连接(自然连接是一种特殊的等值连接,结果中去掉重复的属性列),则该分解就是无损连接分解,也称无损分解。否则就是有损连接分解,或称有损分解。
2.无损连接分解的测试
算法10.2 无损分解的测试方法。
输入:关系模式R=(A1,A2,……,An),F是R上成立的函数依赖集,p={R1,R2,……,Rk}是R的一个分解。
输出:确定p是否为R的无损分解。
步骤:
(1)构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一个模式Ri(1≤i≤k)。如果Aj在Ri中,那么表格的第i行第j列处填上符号aj,否则填上bij(aj,bij仅是一种符号,无专门含义)。
(2)把表格看成模式R的一个关系,反复检查F中每个函数依赖在表格中是否成立,若不成立,则修改表格中的值。修改方法如下:
对于F中的一个函数依赖X→Y,在表格中寻找对应于X中属性的所有列上符号ai或bij全相同的那些行,按下列情况处理:
① 如果表格中有两行(或多行)这样的行,则让这些行中对应于Y中属性的所有列的符号相同:如果符号中有一个aj,那么其它全都改成aj;如果没有aj,那么用其中一个bij替换其它值(尽量把下标i,j改成较小的数)。
② 如果没有找到两个这样的行,则不用修改。
对F集中所有函数依赖重复执行步骤2,直到表格不能修改为止。
若修改的最后一张表格中有一行是全a,即a1,a2,……,an,那么称p相对于F是无损分解,否则称有损分解。
【课程小结】
规范化的概念比较难建立,也比较难懂,必须多举些实例由浅入深的讲解。要求学生课后多看例题,多琢磨。
《数据库原理与应用》 课程教案(第11章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第11章 数据库设计(第1节+第2节+第3节+第4节) 目的、要求(分了解、熟悉、掌握三个层次):
了解数据库设计的过程步骤
了解实体联系模型的相关概念
掌握局部E-R模型和全局E-R模型的设计过程和综合过程
重点:
局部E-R模型设计
2、全局E-R模型设计
难点:
如何将多个局部E-R模型综合成全局E-R模型 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第11章课后习题
思考题:
局部E-R图合并时会产生哪些冲突?各冲突的解决方法?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第11章 数据库设计
【课程导入】
问题:你作为一个数据库设计人员,如何向客户了解所作系统的功能,并从中分析出用到的数据?
【讲授内容】
11.1 数据库设计概述
11.1.1 数据库设计的特点
(1)三分技术、七分管理、十二分基础数据
(2)综合性
(3)结构设计与行为设计相结合
11.1.2 数据库设计方法
(1)新奥尔良法(New Orleans)设计方法
(2)基于E-R模型的设计方法
(3)基于3NF的设计方法
(4)对象定义语言(ODL)方法
11.1.3 数据库设计过程
需求分析阶段-概念设计阶段-逻辑设计阶段-物理设计阶段-实施阶段-运行维护阶段
11.2 需求分析
11.2.1 需求分析的任务
1.信息需求2.处理需求3.运行需求
11.2.2 用户需求调研的方法
1.检查文档2.问卷调查3.同用户交谈4.现场调查
11.2.3 需求分析的方法
需求分析中的结构化分析方法(Structured Analysis,SA)采用自顶向下、逐层分解的方法分析系统,通过数据流图(Data Flow Diagram,DFD)、数据字典(Data Dictionary,DD)描述系统。
11.3 概念结构设计
11.2.2 概念模型设计的方法
1.自顶向下 2.自底向上 3.逐步扩张4. 混合策略
11.4 利用E-R模型的概念结构设计
11.4.1 局部E-R模型设计
1.实体和属性的数据抽象※※※
(1)分类:抽象实体。
(2)聚集:抽象实体的属性。
2.实体和属性的取舍
(1)属性不能再具有需要描述的性质,即属性必须是不可分的数据项,不能再由另一些属性组成。
(2)属性不能与其它实体具有联系,联系只发生在实体之间。
3.属性在实体与联系间的分配
一般把属性分配给那些使用频率最高的实体,或分配给实体值少的实体。
4.局部E-R模型设计过程
1)确定局部结构范围 2)实体定义 3)联系定义 4)属性分配
11.4.2 全局E-R模型设计※※※
局部E-R模型的合并
合并可以有两种方式:多个局部E-R图一次合并。逐步合并,用累加的方式一次合并两个局部E-R图。
消除冲突
1)属性冲突
属性冲突又包括属性域冲突和属性取值单位冲突。
(1)属性域冲突。即属性值的类型、取值范围或取值集合不同。
(2)属性取值单位冲突。
2)命名冲突
(1)同名异义。即不同意义的对象在不同的局部应用中具有相同的名字。
(2)异名同义。即同一意义的对象在不同的局部应用中具有不同的名字。
3)结构冲突
(1)同一对象在不同应用中具有不同的抽象。
解决方法:通常是把属性变换为实体或实体变换为属性,使同一对象具有相同的抽象。
(2)同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。
解决方法:使该实体的属性取各局部E-R图中属性的并集,再适当调整属性的次序。
(3)实体间的联系在不同的局部E-R图中为不同类型。
解决方法:根据应用的语义对实体联系的类型进行综合或调整。
全局E-R模型的优化
(1)实体的合并
这里的合并是指相关实体的合并。一般可以把1:1联系的两个实体合并。
(2)冗余属性的消除
(3)冗余联系的消除
【课程小结】
E-R图是数据库设计的关键,如何将多个局部E-R图综合成全局E-R图,这个过程需多作题熟练掌握。
《数据库原理与应用》 课程教案(第11章)
授课方式
(请打√) 理论课( 讨论课□ 实践课□ 习题课□ 其他□ 课时
安排 2 教学单元(教学章、节或主题):第11章 数据库设计(第5-8节) 目的、要求(分了解、熟悉、掌握三个层次):
掌握逻辑结构设计(E-R图向关系模型的转换)
数据模型的优化
重点:
1、逻辑结构设计。
2、物理结构设计的索引使用。
3、数据模型的优化
难点:
E-R图向关系模型的转换,数据模型的优化。 教学步骤:
提问引起思考引入课程
精讲课堂内容
课堂小结
布置作业
教具及教学手段:(如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等)
多媒体讲解、举例讲解 作业和思考题:
练习:
教材第11章课后习题
思考题:
概念模型转化为关系模型的方法?
教 学 内 容(含时间分配) 板书或旁注 教学环节
复习提问
新课讲解
课堂实践
每课小结
布置作业
时间分配
5
68
10
5
2
第11章 数据库设计
【课程导入】
问题:E-R模型能够反映实体及实体间的联系,与具体的DBMS无关,如果要在MySQL中存储数据,那应该如何将E-R图中的实体和联系转换为关系模型哪?
【讲授内容】
11.5 逻辑结构设计※※※
11.5.1 E-R图向关系模型的转换
1.实体转换成关系模式
实体转换成关系模式很直接,实体的名称即是关系模式的名称,实体的属性则为关系模式的属性,实体的主键就是关系模式的主键。
2.联系的转换
1)二元联系的转换
(1)1:1联系的转换
一个1:1联系可以转换为一个独立的关系,也可以与任意一端对应的关系模式合并。
① 转换为一个独立的关系模式,则与该联系相连接的各实体的键及联系本身的属性均转换为该关系模式的属性,每个实体的键均是该关系模式的候选键。
② 与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的键(作为外键)和联系本身的属性。
(2)1:n联系的转换
在n端实体转换的关系模式中加入1端实体的键(作为外键)和联系的属性。
(3)m:n联系的转换
将联系转换为一个独立的关系模式,其属性为两端实体的键(作为外键)加上联系的属性,两端实体的键组成该关系模式的键或键的一部分。
11.5.2 关系模式的优化和设计外模式
1. 模式优化
1)增加冗余属性 2)增加派生属性 3)重建关系 4)分割关系
2. 设计用户外模式
(1)重定义属性名 (2)提高数据安全性 (3)简化了用户对系统的使用
11.6 物理结构设计
(1)确定数据的存取方法:用户可以通过建立索引的方法来加快数据查询效率。
(2)确定数据的物理存储结构
① 顺序存储 ② 散列存储 ③ 聚簇存储:
11.7 数据库的实施
(1)建立数据库的结构
(2)加载数据和应用程序的调试
(3)数据库的试运行
11.8 数据库的运行与维护
数据库维护工作:
(1)数据库的转储和恢复
(2)数据库的安全性、完整性控制
(3)数据库性能的监督、分析和改进
(4)数据库的重组织和重构造
【课程小结】
数据库设计总体来说不太难,要总结和理清我们的处理问题的思路。多讲些工程实例,使学生掌握这种设计思想,对以后的项目知道如何下手。
f
p
t
|
|