2.4.1 关系代数表达式的优化
考核要求:达到“领悟”
层次知识点:关系代数表达式的优化问题
查询优化的目的是在系统执行时节省时间,提高效率。
在关系代数运算中,通常首先执行笛卡尔积或连接运算,然后是选择和投影。笛卡尔积或连接运算通常很耗时。
因此,正确安排选择、投影和连接的顺序,直接影响到整个操作所需的时间和空间。如何安排好几个关系的操作步骤是查询优化需要考虑的问题。
2.4.2 关系代数表达式的等价变换规则
考核要求:达到“知”
层次知识点:等价变换规则
两个关系代数表达式的等价是指将两个表达式中的对应关系替换为同一个关系实例得到的结果完全相同。
等价变换规则有很多,不要死记硬背,语义理解。
其实只要掌握了前面学习中关系运算的真正含义,就可以判断两个关系代数表达式是否等价。
2.4.3 优化策略
考核要求:达到“领悟”
分层知识点:优化策略及其简单应用
优化策略主要包括以下几点:
(1)在关系代数表达式中尽早进行选择操作;
(2) 将笛卡尔积和后续选择操作组合成一个 F 连接操作;
(3)同时计算一系列选择和投影操作;
(4) 保留相同子表达式的结果;
(5)适当预处理关系文件;
(6)在计算表达式之前评估如何计算成本。
上面的优化策略要求应用起来会很简单:先进行选择,使用投影去除冗余属性,等等。
2.4.4 关系代数表达式的优化算法
考核要求:做到“简单应用”
层次知识点:语法树
学习绘制语法树,掌握优化算法。
例子
在教学数据库S、SC、C中,用户有查询语句:检索女学生选修课的课程名称和教师姓名。
(1)试着写出查询的关系代数表达式;
(2)尝试写一个关系代数表达式进行查询优化;
(3)绘制查询的初始关系代数表达式的语法树;
(4)使用2.4.4节中的优化算法优化语法树,绘制优化后的语法树。
3.1.1 SQL 发展历程
考核要求:达到“知”
层次知识点:SQL的开发
SQL:Structured Query Language,虽然叫查询语言,但实际上具有定义、查询、更新和控制等多种功能。
3.1.2 SQL 数据库架构
考核要求:达到“领悟”
层次知识点:理解三层结构
SQL 数据库的架构也是三级结构,但术语不同于传统的关系模型术语。在 SQL 中,关系模式称为“基表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”。
SQL数据库架构的要点如下:
(1)SQL 数据库是表的集合。
(2)一个 SQL 表由一组行组成,其中一行是一系列列,每列对应一个数据项。
(3)表要么是基本表,要么是视图。基本表是实际存储在数据库中的表,视图是由若干个基本表或其他视图组成的表定义的。
(4)一个基本表可以跨越一个或多个存储文件,一个存储文件也可以存储一个或多个基本表。存储文件对应物理文件。
(5)用户可以使用SQL语句对表进行操作,包括视图和基本表。
(6)SQL 用户可以是应用程序或最终用户。
3.1.3 SQL的组成
考核要求:达到“知”
层次知识点:四个组成部分
SQL由四部分组成:
(1)数据定义:SQL DDL。定义 SQL 模式、基本表、视图和索引。
(2)数据操作:SQL DML。包括数据查询和数据更新(增删改)。
(3)数据控制:包括对基本表和视图的授权、完整性规则的描述、事务控制等。
(4)嵌入式SQL的使用规定
3.2.1 SQL 模式的创建和撤销
创建 SQL 模式:创建 SQL 模式并定义存储空间。
在 SQL 模式下创建 CREATE 语句,语法为:
创建模式授权
要在 SQL 模式下撤消 DROP 语句,语法为:
删除模式 [级联|限制]
方括号中的选项参数 CASCADE 表示链式模式,SQL 模式下的所有基本表、视图、索引等元素在执行过程中全部撤消。RESTRICT 表示约束类型,只有在 SQL 模式下没有下级元素时才能撤销 SQL 模式,否则拒绝执行 DROP 语句。
3.2.2 SQL提供的基本数据类型
数值类型:包括整数、小整数、实数、双精度、浮点(n)、数值(p, d)
字符串类型:char(n),varchar(n),前者为定长,后者为变长字符串 位串类型:bit(n),位变(n),同上。
时间类型:日期、时间。.
3.2.3 基本表的创建、修改和撤消
(1)基本建表:(建立表结构)
CREAT TABLE SQL 模式名称。基表名称(列名、类型、…完整性约束…)
完整性约束包括主键子句(PRIMARY KEY)、校验子句(CHECK)和外键子句(Foreign KEY)。
(2) 修改基本表结构
添加新列:ALTER TABLE 基本表名 ADD 列名类型
删除原始列:ALTER TABLE base table name DROP column name [CASCADE|RESTRICT]
CASCADE是链式删除,RESTRICT是约束删除,即只有在没有引用该列的情况下才能删除。
DROP TABLE 基表名称 [CASCADE|RESTRICT]
3.2.4 视图创建和撤销
(1)视图创建:
CREAT VIEW 视图名(列名表) AS SELECT 查询语句
(2)视图的撤消:
DROP VIEW 视图名称
3.2.5 索引创建和撤销
(1)索引创建:
CREAT [UNIQUE] INDEX 索引名 ON(列名表 [ASC|DESC])
(2)撤销索引:
DROP INDEX 索引名称
注意:在各种 SQL 语法中,CREAT 用于创建,DROP 用于删除,alter 用于更改
3.4.1 数据插入
考核要求:达到“简单申请”水平
插入数据有两种方式:(1)元组值插入INSERT INTO基本表名(列名表)
VALUES(值的元组)
或者
INSERT INTO 基表名(列名表)
(表(元组值),(元组值),…)
(2) 插入查询结果
INSERT INTO 基表名(列名表)
SELECT 查询语句
3.4.2 SQL数据删除考核要求:达到“简单应用”级别
DELETE FROM 基表名[WHERE条件表达式](语义:从基表中删除一个满足条件表达式的元组)
3.4.3 数据修改考核要求:达到“简单应用”级别
UPDATE基本表名SET列名=值表达式,[列名=值表达式…][WHERE条件表达式](语义:修改基本表中那些满足条件表达式的元组中的列值,需要修改 SET 子句中指示的列值)
3.4.4 数据修改考核要求:达到“理解”水平
视图上的查询(SELECT)操作与基本表相同,但视图的更新操作受以下三个规则的限制:
如果视图是使用连接操作从多个基表派生的,则不允许更新。
如果导出的视图使用分组和聚合操作,也不允许更新。
如果视图是使用选择、投影操作从单个基表派生的,并且包括基表的主键或候选键笛卡尔数据库中应用,则这种视图称为“行列子集视图”并且可以执行操作。
3.3.1 SELECT 语句的基本语法
考核要求:做到“综合应用”
层次知识点:SELECT-FROM-WHERE句型的应用
(1) SELECT-FROM-WHERE 句型
SELECT 列名表(逗号分隔) FROM 基表或视图序列 WHERE 条件表达式
注意:掌握各种运算符在条件表达式中的应用。算术比较运算符 =, >,, ∧, ∨, ┐
要了解它的含义。
注意:(1)结合例子和练习理解表达式的意思,一定要多练习。
(2)评估给定关系的元组表达式的值。(本节说“简单应用程序”)
2.3.2 域关系演算
考核要求:做到“理解”和“简单应用”
层次知识点:领域关系演算的定义和表达式的含义
域微积分表达式的一般形式是:{t1…tk|P(t1…,tk)}
其含义是:这是一个域集,其中每个域变量的取值关系满足公式P指定的条件。
理解域公式的写法注意事项:
(1)结合例子和练习理解表达的意思,一定要多练习。(熟能生巧)
(2) 计算给定关系的字段表达式的值。(本节阅读“简单应用程序”)
(3)表达式的转换不用背,关键要语义理解。
2.3.3 关系运算的安全性和等价性
考核要求:达到“知”
分层知识点:对安全性和等效性的影响
(1)关系运算的安全性 关系代数中的运算总是安全的。
关系演算可以有无限的关系(概念)和无限的证明(概念)问题。
在数据库技术中,不产生无限关系和无限验证的操作称为安全操作,对应的表达式称为安全表达式,采取的措施称为安全约束。
约定:运算只对所涉及关系取值范围内的表达式中的公式进行运算。
使用这种约定,关系演算是安全的。
(2)关系运算的等价并、差、笛卡尔积、投影和选择是关系代数中最基本的运算,构成关系代数运算的最小完备集。
已经证明,在此基础上,关系代数、安全元组关系演算、安全域关系演算在关系表示和操作能力上是安全且等价的。
2.1.1 二维表的基本术语
考核要求:达到“知”
层次知识点:主要是一些基本概念
(1)二维表在关系模型中,一个二维表对应一个关系。
(2)tuple) 表中的一行(即一条记录)代表一个实体;关系由元组组成。
(3)Relation: 是元组的集合,元组为K(K>=1)。一个二维表对应一个关系。表中的一行称为关系的元组;在表中的一列称为关系的一个属性。
在关系模型中,对关系施加以下规范约束: 关系中的每个属性值都是不可分解的;
关系中不允许有相同的元组(没有重复的元组);
不考虑元组之间的顺序,即没有行顺序;理论上,属性之间的顺序(即列顺序)也不存在;
但是习惯上在使用它们时要考虑列的顺序。
(4)Super Key):关系中能够唯一标识一个元组的属性集合称为关系模式的超级键;
(5)Candidate Key):不包含冗余属性的超级键称为候选键;
(6)Primary Key:用户选择的候选键作为元组标识符。
上述概念中,主键必须作为候选键,候选键必须作为超键;否则,它不成立。
比如学生表中,如果有“学号”、“姓名”、“出生年月”等字段,其中学号是唯一的,那么(学号)属于超键,组合of (student number, name) 也是一个超级键。同时,(student number) 是候选键,(student number, name) 不是候选键,因为它包含冗余属性。在这三个概念中,主键的概念是最重要的,它是用户选择的一个键作为元组标识符。如果关系中有两个或多个候选键,则用户选择其中一个作为主键。
2.1.2 关系模式、关系子模式和存储模式
考核要求:达到“知”
分层知识点:三种模式的理解
(1)关系模式:关系模型的定义包括:模式名、属性名、值域名、模式的主键。只是对数据特征的描述,不是对物理存储的描述。
(2)子模式:子模式是对用户使用的部分数据的描述,除了指明用户数据外,还应指明模式与子模式的对应关系。
(3)存储模式:关系存储的基本组织是文件,元组是文件中的一条记录。
几种模式的理解(教科书第30页的例子):
在教学模型中,有一个实体类型“student”,其属性为学号S#、SNAME、AGE、SEX,分别代表学生的学号、姓名、年龄、性别;实体类型“course”的属性为C#、CNAME、TEACHER,分别表示课程编号、课程名称和教师姓名。学生用S表示笛卡尔数据库中应用,课程用C表示,S和C之间有M:N连接,连接类型SC的属性是GRADE。
关系模式是:
学生关系 S(S#、SNAME、AGE、SEX)
课程关系 C (C#, CNAME, TEACHER)
学习关系 SC (S#, C#, GRADE)
以下是关系子模式:
等级关系子模式 G (S#, SNAME, C#, GRADE, GRADE),其对应的数据来自关系 S 和 SC。
2.1.3 关系模型的三种完整性规则
考核要求:达到“领悟”
层次知识点:三种完整性规则的理解
(1)实体完整性规则要求关系中的元组在构成主键的属性中不能有空值。如果出现空值,则主键值不能唯一标识元组。(对于关系主键约束)
(2)引用完整性规则要求外键值必须是另一个关系的主键的有效值,或者为空值。(关系外键的约束)外键:(外键)主键(如学生关系S中的S#)放在另一个关系(如SC)中,此时S#称为关系SC的外键。
预防措施:
外键和对应的主键可以有不同的名字,只要定义在同一个字段上即可;
两个关系可以是同一个关系模式,表示属性之间的联系。
外键值是否允许为空,应根据具体情况确定
假设数据库有如下关系:
学生关系 S(S#、SNAME、AGE、SEX)
课程关系 C (C#, CNAME, TEACHER)
学习关系 SC (S#, C#, GRADE)
then (1)S#是关系S的主键,所以在关系S中不能为空;(实体完整性规则)
(2)C#是关系C的主键,所以在关系C中不能为空;(实体完整性规则)
关于 SC:
S#和C#组合为主键,所以S#和C#不能为空;(实体完整性规则)
S# 是来自 S 的外键,因此它必须与关系 S 中元组的 S# 相同。(参照完整性规则)
C# 是来自 C 的外键,因此对于关系 C 中的元组,它必须与 C# 相同。(参照完整性规则)
(3)自定义完整性规则:这是对特定数据的约束,由应用环境决定,比如学生年龄限制为15~30岁。自定义完整性规则体现了一定的特定应用程序中涉及的数据必须满足的语义要求。系统提供了定义和验证这种完整性的机制。
2.1.4 关系模型的正式定义
考核要求:达到“知”
层次知识点:三个组件的理解
关系模型包含三个组件:
数据结构、数据操作和完整性规则关系模型的数据结构是关系型的;
关系模型提供一整套高级关系运算(关系代数+关系演算),支持数据库的各种运算;
关系模型包括三种类型的完整性规则。
2.2.1 关系代数的五个基本运算
考核要求:做到“简单应用”
层次知识点:五个基本操作的含义及应用
(1)Union(∪):两个关系必须具有相同的关系模式,并且union的对象是一个元组,它由两个关系的所有元组组成。
RUS≡{t| t∈R ∨t∈S}
(2) 差异 (-):同样,两个关系具有相同的模式,R 和 S 的差异是属于 R 但不属于 S 的元组集合。
RS≡{t| t∈R ∧t 不属于 S}
(3)笛卡尔积(×):对两个关系R和S进行运算,生成的关系中的元组个数是两个关系中元组个数的乘积。
R×S≡{t| t=<tr,ts>∧tr∈R∧ts∈S}
(4) 投影(σ):垂直拆分关系,去掉一些列,重新排列列的顺序。
(5) 选择(π):根据一定的条件关系进行横向划分,即选择满足条件的元组。
2.2.2 关系代数的四种组合运算
考核要求:做到“简单应用”
层次知识点:四种组合操作的含义及操作应用
(1)交集(∩):R和S的交集是一组同时属于R和S的元组。
(2) 连接:包括 θ(算术比较器)连接和 F(公式)连接。
选择R×S中满足iθ(r+j)或F条件的元组集合;
从概念上讲很难理解,但关键是理解操作实例的等值连接(theta 是等号“=”的连接)。
(3)Natural Join (RS):在R×S中,选择R和S中共有属性值相同的元组,去掉R×S中重复的共有属性列。如果两个关系没有公共属性attributes ,自然连接被转换为笛卡尔积。
(4)除法(÷):首先,除法结果中的arity是两个arity之差。R÷S的操作思路如下——将S视为一个块,如果元素在R中相同的属性集合中如果该组有相同的块,并且移除该块后剩下的对应元组相同,则可以得到一个元组,所有这些元组的集合就是除法的结果
以上五个基本操作和四个组合操作应该从实际操作中去理解和应用。
应用示例
2.2.3 关系代数表达式及应用
考核要求:做到“简单应用”
层次知识点:关系代数表达式的应用
本节内容与实际应用相关。你应该阅读更多的例子并做更多的练习。您必须满足以下要求: 能够根据给定的关系代数表达式计算关系值,并能够根据相应的查询要求列出关系表达式。
(1)在列关系表达式中,通常有如下形式:
π…(σ…(R×S)) 或 π…(σ…(RS))
首先取查询中涉及的关系,进行笛卡尔积或自然连接运算得到大表,然后对大表进行横除(选择)和纵除(投影)操作。
(2)当查询涉及否定或全逻辑时,经常使用差分或除法运算。
关系代数表达式的例子
2.2.4 扩展关系代数运算
考核要求:达到“知”
层次知识点:理解“外连接”和“外联合”的含义
注意:(1)“外连接”、“左外连接”、“右外连接”和“自然连接”的区别。
(2)“外部联合”和“联合”的区别
暂无评论内容