我校使用Database System Concepts,9-12/14章不考所以跳过,因为课都逃了所以复习很仓促,只准备过一下每一章最后的概念辨析,我也不知道有没有效
第1章 弁言
- 数据库管理体系(DBMS) 由一个互相关联的数据的集合和一组用以访问这些数据的步伐构成。
- 数据库体系应用:①高价值;②庞大;③多用户访问。
- 联机变乱处置惩罚即大量的用户使用数据库,每个用户检索相对少量的数据,举行小的更新。
- 数据分析即审视数据,给出结论,并推导出规则或决策步伐。
- 文件处置惩罚体系将数据永久存储在差别的文件中的管理方式。
- 数据差别等性,即同一数据的差别副本差别等(文件处置惩罚体系的弊端,说人话就是改了一个忘了改别的)。
- 同等性约束,就是同一类数据是否合法的自动判断(文件处置惩罚体系的弊端)。
- 数据抽象
- 物理层详细描述复杂的底层数据结构。
- 逻辑层描述数据库中存储什么数据以及这些数据间存在什么联系。
- 视图层一个数据库内有多个,使用户和体系的交互更简单。
- 实例(instance) :特定时刻存储在数据库中的信息的集合。
- 模式(schema) :数据库的总体设计。
- 物理模式在物理层描述数据库的设计。
- 逻辑模式在逻辑层描述数据库的设计。
- 子模式:描述数据库的差别视图。
- 物理数据独立性:在数据抽象的差别层级都不需要掌握其他层级的结构。
- 数据模型
- 关系模型用表的集合来表示数据和数据间的联系。
- 实体-联系模型使用称作实体的基本对象的集合,以及这些对象间的联系。
- 半结构化数据模型允许在其数据定义中某些类似范例的数据项含有差别的属性集。
- 基于对象的数据模型可以当尴尬刁难关系模型举行扩展,增加了封装、方法和对象标识等概念。
- 数据库语言
- 数据定义语言(DDL) 定义数据库模式。
- 数据操纵语言(DML) 表达数据库的查询和更新。
- 过程化DML要求用户指定需要什么数据以及如何得到这些数据。
- 声明式DML(也称为非过程化DML)只要求用户指定需要什么数据,而不必指明如何得到这些数据。
- 查询语言:DML中涉及信息检索的部门。
- 数据定义语言
- 域约束指的就是数据范例。
- 引用完备性确保一个关系中的取值在另一个关系中也出现
- 授权
- 读权限:可读不能改
- 插入权限:可加新数据不可改已有的
- 更新权限:可改不能删
- 删除权限
- 元数据(metadata) 是关于数据的数据,说人话就是预处置惩罚出来的一个方便后续操作的类似目录的东西。
- 应用步伐就是用来以SQL查询来访问数据库中的数据这种方式与数据库举行交互的步伐。
- 数据库设计
- 概念设计涉及决定数据库中应该包括哪些属性,以及如何构造这些属性到各个表中。
- 规范化将全部属性集作为输入,生成一组关系表的算法(见第8章)。
- 功能需求说明,用户描述将在数据之上实行的各种操作(或变乱)。
- 物理设计阶段,在这个阶段中说明数据库的物理特性,包括文件构造的形式和内部的存储结构。
- 数据库引擎
- 存储管理器是数据库体系中负责在数据库中存储的低层数据与应用步伐以及向体系提交的查询之间提供借口的部件。
- 权限及完备性管理器检测是否满足完备性约束,并检查视图访问数据的用户的权限。
- 变乱管理器包管纵然体系发生了故障,数据库也保持在同等的(精确的)状态,并包管并发变乱的实行不发生冲突。
- 文件管理器管理磁盘存储空间的分配,管理用于表示磁盘上所存储信息的数据结构。
- 缓冲区管理器负责将数据从磁盘上取到内存中,并决定那些数据应被缓冲存储在内存中。
- 数据文件存储数据库自身。
- 数据字典存储关于数据库结构的元数据,特殊是数据库模式。
- 索引提供对数据项的快速访问,就相当于很多现成能用的指针。
- 查询处置惩罚器
- DDL表明器表明DDL语句并将这些定义记录在数据字典中。
- DML编译器将查询语言中的DML语句翻译为包括一系列查询实行引擎能理解的低级指令的实行方案。
- 查询优化就是从几个候选实行筹划中选出代价最小的那个实行筹划。
- 查询实行引擎实行由DML编译器产生的低级指令。
- 变乱是数据库应用中完成单一逻辑功能的操作集合。
- 原子性:要么都发生,要么都不发生
- 同等性:数据变化前后的精确性
- 恒久性:完成后就不会本身回退
- 恢复管理器:包管原子性和恒久性
- 故障恢复:为包管原子性,失败要回退
- 并发控制管理器:控制并发事物间的影响
- 数据库体系结构
- 会合式的:全部数据会合存储在一个中央节点,便于管理和维护,但可能受限于单个节点的性能和容量。
- 并行的:使用多个CPU协同工作,提高数据处置惩罚本领和体系吞吐量,适用于大规模数据处置惩罚和高性能需求。
- 分布式的:数据分散存储在多个节点上,实现跨地域的数据共享和访问,具有高可用性和易于扩展的特点。
- 数据库应用体系结构
- 两层的:应用步伐驻留在客户机上,通过查询语言语句调用数据库功能。
- 三层的:客户机仅作为一个前端,没有任何直接的数据库调用。
- 应用服务器:计算在何种条件下做出何种反应。
- 数据库管理员(DBA) 是对体系举行会合控制的人。
第2章 关系模型介绍
- 表(table) :就是表格呗
- 关系(relation) :表在关系模型中的高级表述
- 元组(tuple) :行在关系模型中的高级表述
- 属性(attribute) :列在关系模型中的高级表述
- 关系实例(relation instance) :指代一个关系的特定实例(也就是选中某一行)
- 域(domain) :对于关系的每个属性存在的一个允许取值的集合
- 原子域(atomic domain) :不可再分的单位构成的域
- 空值(null value) 是一个特殊的值,表示值未知或不存在。
- 数据库模式(database schema) 指数据库的逻辑设计。
- 数据库实例(database instance) 是在给定时刻数据库中数据的一个快照。
- 关系模式(relation schema) 的概念对应于步伐设计语言中范例定义的概念。
- 码是一种用来区分一个给定关系中的差别元组的方式。
- 超码(superkey) 是一个或多个属性的集合。
- 候选码(candidate key) 是最小的超码。
- 主码(primary key,又称主码约束) 代表被数据库设计者选中来作为在一个关系中区分差别元组的主要方式的候选码,说人话就是每一行的主码都不一样,是对每一行来说唯一的编号之类的。
- 外码约束
- 从 r 1 r_1 r1关系的 A A A属性(集)到 r 2 r_2 r2关系的主码 B B B的外码约束(foreign-key constraint) 表明:在任何数据库实例中, r 1 r_1 r1中每个元组对 A A A的取值也必须是 r 2 r_2 r2中某个元组对 B B B的取值。 A A A属性集被称为从 r 1 r_1 r1引用 r 2 r_2 r2的外码(foreign key) 。 r 1 r_1 r1关系也被称为此外码约束的引用关系(referencing relation) ,且 r 2 r_2 r2被称为被引用关系(referenced relation) 。
- 讲人话就是说假如如今有个公司,把员工的住址和工资分成两个表,那么这两个表里面一定都有员工姓名这一列对吧,而且这一列一定是逐一对应的,那这一列就是外码了。
- 引用完备性约束(referential integrity constraint) 要求引用关系中的恣意元组在指定属性上出现的取值也必然出如今被引用关系中至少一个元组的指定属性上。
- 模式图(schema diagram) 用来表示一个带有主码和外码约束的数据库模式。
- 查询语言范例(query language)
- 命令式(imperative)查询语言中,用户指导体系在数据库上实行特定的运算序列以计算出所需的效果。
- 函数式(functional)查询语言中,计算被表示为对函数的求值,这些函数可以在数据库中的数据上运行或在其他函数给出的效果上运行。
- 声明式(declarative)查询语言中,用户只需描述所需信息,而不消给出获取该信息的具体步骤序列或函数调用,所需的信息通常使用某种形式的数学逻辑来描述。
第3章 SQL介绍
- 数据定义语言提供定义关系模式、删除关系以及修改关系模式的命令。
- 数据操纵语言提供从数据库中查询信息以及在数据库中插入元组、删除元组、修改元组的本领。
- SQL查询结构
- select子句(单关系查询):可以查用select name from instructor;看instructor表中的name列的全部内容
- 在select后面加distinct表示去重
- 在select后面加all表示不去重(默认也是不去重)
- 可以一次select多列
- 后面的列名可以加数学运算符
- from子句:表示你要在哪个表里面查
- where子句:可以加条件判断,表示只有满足条件的行的内容才会被选
- 多重集关系代数(multiset relational algebra) 是一种运算(不细究底层内容,可以本身看P45的解释3-1)
- as子句是一种重命名效果关系中属性的方式,说人话就是给体现的效果的列改个体现的名字
- order by子句可以让查询效果中的元组按分列序次体现。
- desc表示降序
- asc表示升序
- 写在前面的优先级更高,比如order by salary desc, name asc;表示先按工资降序分列,如果工资相当按照姓名升序分列
- 表别名(table alias)/相关名称(correlation name)/相关变量(correlation variable)/元组变量(tuple variable) 就是as子句里面你改的那个名字
- 集合运算:SQL作用在关系上的union、intersect、except运算对应于数学集合论中的 ∪ ∪ ∪、 ∩ ∩ ∩、 − - −运算
- 并(union) ,两个完备的语句加个括号中间用union连接就可以用了
- 交(intersect) ,用法一样
- 如果加all的话也是表示不去重,但是不是说本来出现3次和4次我体现7次,会按照少的那边体现,也就是3次,但是你不加all的话只会体现1次
- 差(except)
- 假如一个项目分别出现6次和3次,如果不加all则会体现0次,如果加了就会体现3次
- 聚集函数(aggregate function) 是以值集(集合或多重集合)为输入并返回单个值的函数。
- SQL提供了五个标准的固有聚集函数
- 均匀值:avg
- 最小值:min
- 最大值:max
- 总和:sum
- 计数:count
- group by子句可以将聚集函数作用在一组元组集上
- having子句可以对分组限定条件
- 嵌套子查询:子查询是嵌套在另一个查询中的select-from-where表达式。
- 一个完备的表达式用括号括起来就可以当成一个表给别人举行其他的查询
- 集合比较
- {<,<=,>,>=} {some,all}
- 比如where T.salary > S.salary and S.dept_name='Biology'表示工资比生物系某位老师的工资高的全部老师的姓名
- some表示‘至少比某一个要大’,all表示‘比全部的都大’
- exists结构在作为参数的子查询非空时返回true值
- unique结构在作为参数的子查询效果中没有重复的元组时返回true值
- lateral子句:从SQL:2003开始的SQL标准允许from子句中的子查询用关键字lateral作为前缀,以便访问同一个from子句中在它前面的表或子查询的属性。说人话就是括号里面的那个查询的效果也会输出出来。
- with子句提供了一种定义暂时关系的方式,这个定义只对包含with子句的查询有效
- 标量子查询:只返回一个包含单个属性的元组的可以出如今表达式任何地方的子查询。
- 数据库修改
- 删除哀求的表达方式与查询非常相似,只能删除整个元组而不能删除某些属性上的值。
- delete from r where P;表示满足条件P的行全部删掉。
- 插入
- insert into 起手,后面是value接括号,默认按列序次,要修改的话就要在表名后面加括号表示第几个在哪一列
- 还可以直接将select的效果insert进需要的地方
- 更新
- update p set q where r表示在p表内满足调节r的全部举行q更新
第4章 中级SQL
- 连接范例
- 自然连接(natural join) 运算作用于两个关系,并产生一个关系作为效果。具体来说,select name,course_id from student,takes where student.ID=takes.ID;等价于select name,course_id from student natural join takes;。
- 带using和on的内连接
- using是用来在上面的自然连接里面人工选择一个共有的列作为判断依据
- on跟where差不多,在连接的时候加一个条件判断
- 左外连接、有外连接和全外连接
- 左外连接(left outer join) 只保留出如今左外连接运算之前(左边)的关系中的元组。
- 右外连接只保留出如今右外连接运算之后(右边)的关系中的元组。
- 全外连接(full outer join) 保留出如今两个关系中的元组。
- 视图定义
- 物化视图包管如果用于定义视图的实际关系发生改变,则视图也跟着修改以保持最新。
- 物化视图维护(materialized view maintenance,简称视图维护) 指保持物化视图一直在最新状态的过程。
- 视图更新:一般来说想看到一个视图就对数据库本身举行修改很贫苦,所以要满足很多的条件。
- from子句中只有一个数据库关系。
- select子句中只包含关系的属性名,并不包含任何表达式、聚集或distinct声明。
- 没有出如今select子句中的任何属性都可以取null值;也就是说,这些属性没有非空约束,也不构成主码的一部门。
- 查询中不含有group by或having子句。
- 变乱(transaction) 由查询和(或)更新语句的序列构成。
- commit work提交当前变乱;也就是说,它使变乱实行的更新在数据库中成为永久性的。
- rollback work回滚当前变乱;也就是说,它会打消变乱中SQL语句实行的全部更新。
- 一个事物或者在完玉成部步骤后提交其操作,或者在不能成功完成其全部动作的情况下回滚其全部动作,通过这种方式数据库提供了对事物具有原子性的抽象。
- 约束
- 完备性约束包管授权用户对数据库所做的修改不会导致数据同等性的丢失。
- 域约束就是对域中内容的范围举行的约束,比如非空或者大于0之类的。
- 唯一性约束要求在关系中没有两个元组能在全部列出的属性上取值类似。
- check子句指定一个谓词P,关系中的每个元组都必须满足谓词P,用于关系声明。
- 引用完备性:包管一个关系中给定属性集合的取值也在另一个关系中特定属性集的取值中出现。
- 级联删除可以要求数据库在被引用关系上的删除或更新操作违背了约束的条件下不拒绝如许的操作而是采取一些步伐来改变引用关系中的元组以恢复完备性约束。
- 级联更新指在数据库中,当一个表中的关联字段被修改时,这个修改会自动应用到与之关联的其他表中,从而确保数据库的数据完备性和同等性。
- 断言(assertion) 就是一个谓词,它表达了我们希望数据库总能满足的一个条件。
- 数据范例
- 日期和时间范例
- date '2018-04-25
- time '09:30:30'
- timestamp '2018-04-25 10:29:01.45'
- 缺省(default)值,定义的时候可以设置默认值。
- 大对象:后面跟括号限制文件最大大小
- 字符大对象数据范例(clob)
- 二进制大对象数据范例(blob)
- 用户自定义范例
- 独特模型(distinct type) 用create type来定义,其实就跟c++里面的typedef差不多
- 结构化数据范例(本书不细究)
- 域:数据范围
- 范例转换:显式转换用cast(e as t)来表示将表达式e转换为范例t。
- 目录构成体系结构的最顶层。
- 模式包含在目录中。
- 索引在关系属性上是一种数据结构,允许数据库体系高效地找到在关系中具有该属性指定值的那些元组,而不扫描关系的全部元组。
- 权限
- 权限范例
- 选择(select)
- 插入(insert)
- 更新(update)
- 授予权限:grant <权限名> on <关系名或视图名> to <用户/角色列表>;
- 收回权限:revoke <权限名> on <关系名或视图名> to <用户/角色列表>;
- 授予权限的权限:grant <权限名> on <关系名或视图名> to <用户/角色列表> with grant option;
- grant option子句
- 角色用于标识数据库用户。
- 视图授权:只能看部门列
- 实行授权:允许查询和更新
- 调用者权限:使用当前用户的权限实行代码,适用于分布式数据管理,允许差别的用户在差别的情况中实行类似的代码,而不需要修改代码的权限设置。
- 行级授权:在特定元组或行的级别上的授权
- 虚拟私有数据库(VPD) 支持行级授权
第5章 高级SQL
- JDBC(Java数据库连接) 标准定义了用于将Java步伐连接到数据库服务器的应用步伐接口(API) 。
- 预备语句用“?”来代替某些值,以此指明以后会提供实际的值。
- SQL注入是一种被恶意黑客用来窃取数据或破坏数据库的技术。
- 元数据就是定义数据结构的数据。
- 可更新效果集可以根据在数据库关系上实行选择或投影的查询来创建出可更新的效果集。
- 开放数据库连接(ODBC) 标准定义了一个API,应用步伐可以用它来打开与一个数据库的连接、发送查询和更新并获取返回效果。
- 嵌入式SQL:SQL标准定义了将SQL嵌入各种步伐设计语言中的方法。嵌入了SQL查询的语言被称为宿主(host)语言,而且在宿主语言中允许使用的SQL结构构成了嵌入式SQL。
- 嵌入式数据库当应用步伐仅为内部使用而维护数据库,而且除非通过应用步伐本身,否则无法访问到数据库的情况下可以使用。
- 存储过程和函数是在数据库中定义的一组完成特定功能的SQL语句集合,经过编译后存储在数据库中。
- 表函数:支持以返回表作为效果的函数。
- 参数化视图:以表为值的函数通常可以看作这个,通过允许参数来泛化常规的视图概念。
- 恒久存储模块(PSM) 是SQL标准中处置惩罚赋予通用步伐设计语言险些全部本领的模块。
- SQL的过程化语言还支持对非常情况(exception condition) 的信号发送。
- 句柄(handler) 声明对非常的处置惩罚。
- 外部语言例程可以作为外部代码主体被引用,用于数据库操作和数据处置惩罚。
- 沙盒允许Java或C#代码来访问它本身的内存区域,但它构造代码读取或更新查询实行进程的内存,或者访问文件体系的文件。
- 触发器是作为对数据库修改的连带效果而由体系自动实行的一条语句。
- 传递闭包指在关系数据库中描述类似元素之间的可传递关系的运算。
- 层次结构指数据库中的数据按照树状结构构造,每个节点代表一个数据项,节点之间的关系通过父节点和子节点的关系来定义。
- 创建暂时表创建的表仅在实行查询的变乱内部才可用,并随变乱的完成而被删除。
- 基查询指在数据库中通过特定的语句和语法,向数据库提出问题并获取相应的数据的过程。
- 递归查询指在一个查询中,通过使用递归操作或递归SQL语句,对查询效果举行多次处置惩罚,以获取满足特定条件的数据。
- 不动点指不会再有进一步变化。
- 单调的:如果更多的元组被添加到视图关系中,则递归查询必须返回至少与从前类似的元组集。
- 分窗指在数据库管理体系中,将数据表分割成两部门,一部门用于体现数据,另一部门用于体现图形或图片,从而提供更人性化的数据展示和输入方式。
- 排名函数主要用于对查询效果举行排序,并为每行数据分配一个排名。
- 交叉表/数据透视表是一种用于数据汇总和分析的矩阵格式表格,主要用于体现两个或多个变量之间的频率分布关系。
- 旋转就是将效果会合的某一列数据以行的形式来体现原有的数据信息,即交叉表。
- SQL group by cube,group by rollup是用于支持group by结构泛化形式的操作。
第6章 形式化关系查询语言
- 关系代数由一组运算构成,这些运算担当一个或两个关系作为输入,并生成一个新的关系作为它们的效果。
- 关系代数表达式是关系代数在数据库查询中的应用,用于描述从一个或多个关系(即表)中提取和组合数据的过程。
- 关系代数运算
- 选择 σ σ σ 运算选出满足给定谓词的元组,如 σ d e p t n a m e = " P h y s i c s " ( i n s t r u c t o r ) σ_{dept_name="
hysics"}(instructor) σdeptname=" hysics"(instructor)表示在instructor表中选择dept_name为Physics的元组。
- 投影 Π \Pi Π 运算是一种一元运算,返回它的参数关系,但滤掉了特定的属性,如 Π I D , n a m e , s a l a r y ( i n s t r u c t o r ) \Pi_{ID,name,salary}(instructor) ΠID,name,salary(instructor)就会列出instructor表中的全部元组但不体现dept_name列。
- 笛卡尔积 × × × 允许我们结合来自恣意两个关系的信息。
- 连接 ⋈ ⋈ ⋈ 运算使我们能够将选择与笛卡尔积归并到单个运算中, σ i n s t r u c t o r , I D = t e a c h e s . I D ( i n s t r u c t o r × t e a c h e s ) σ_{instructor,ID=teaches.ID}(instructor×teaches) σinstructor,ID=teaches.ID(instructor×teaches)可以等价地写为 i n s t r u c t o r ⋈ i n s t r u c t o r , I D = t e a c h e s . I D t e a c h e s instructor ⋈_{instructor,ID=teaches.ID} teaches instructor⋈instructor,ID=teaches.IDteaches。
- 并 ∪ ∪ ∪ 是一种二元运算,表示出如今这两个关系之一或同时出如今这两个关系中的全部元组。
- 集差 − - − 使我们能够找到在一个关系中但不在另一个关系中的元组。
- 交 ∩ ∩ ∩ 允许我们找到同时出如今两个输入关系中的元组。
- 赋值 ← \leftarrow ← 的工作方式与步伐设计语言中的赋值是类似的。
- 更名 ρ ρ ρ 用于给关系代数表达式的效果命名。
- 元组关系演算是非过程化的(nonprocedural) 查询语言。它描述了所需信息,而不给出用于得到该信息的具体过程。
- 域关系演算是关系演算的第二种形式,它使用附属性域中取值的域变量,而不是对于整个元组的值。
- 表达式的安全性要求表达式不产生无限关系或者是超出域的范围。
- 语言的表达本领:仅限于安全表达式的元组关系演算在表达本领上等价于基本关系代数。
第7章 使用E-R模型的数据库设计
- 设计过程
- 概念设计阶段所产生的模式提供了对企业的详细概览。
- 逻辑设计阶段中,设计者将高层概念模式映射到将被使用的数据库体系具体实现的数据模型。
- 物理设计阶段中,数据库的物理特性被具体说明,这些特性包括文件构造形式和索引结构的选择。
- 实体-联系(E-R)数据模型被开辟来方便数据库的设计,它是通过允许定义代表数据库全局逻辑结构的企业模式(enterprise schema)来做到的。
- 实体和实体集
- 简单和复合属性:依据能不能分别为子部门区分
- 单值和多值属性:如果对一个特定实体而言,一个属性可能对应于一组值那就是多值的
- 派生属性:这类属性的值可以从其他相关属性或实体的值派生出来
- 码是一种用来区分一个给定关系中的差别元组的方式。
- 超码是一个或多个属性的集合。
- 候选码是最小的超码。
- 主码代表被数据库设计者选中来作为在一个关系中区分差别元组的主要方式的候选码。
- 联系是多个实体间的相互关联,联系集是类似范例联系的集合。
- 二元联系集涉及两个实体集的联系集,在数据库体系中,大多数联系集都是二元的。
- 联系集的度指参与联系集的实体集的数目。
- 描述性属性是指在联系会合,用于描述联系本身或参与联系的实体之间关系的属性。
- 超码、候选码和主码
- 角色用于标识数据库用户。
- 递归联系集是指在递归联系中,由递归联系形成的集合。
- E-R图提供了表示实体范例、属性和联系的方法,用来描述现实世界的概念模型。
- 映射基数
- 一对一关系: A A A中的一个实体至多与 B B B中的一个实体相关联,而且 B B B中的一个实体也至多与 A A A中的一个实体相关联。
- 一对多关系: A A A中的一个实体可以与 B B B中的恣意数量(零个或多个)的实体相关联,而 B B B中的一个实体至多与 A A A中的一个实体相关联。
- 多对一关系:: A A A中的一个实体至多与 B B B中的一个实体相关联,而 B B B中的一个实体可以与 A A A中恣意数量(零个或多个)的实体相关联。
- 多对多关系: A A A中的一个实体可以与 B B B中的恣意数量(零个或多个)的实体相关联,而 B B B中的一个实体可以与 A A A中恣意数量(零个或多个)的实体相关联。
- 全部参与和部门参与看实体会合是否每个实体都必须参与到联系会合的至少一个联系中。
- 弱实体集和强实体集:弱实体集(weak entity set) 的存在依靠于另一个实体集,称为其标识性实体集(identifying entity set) ;我们使用标识性实体集的主码以及成为分辨符属性(discriminator attribute) 的额外属性来唯一地标识弱实体,而不是将主码与弱实体相关联。非弱实体集被称为强实体集(strong entity set) 。
- 特化和概化
- 特化将一个属性分割为几个部门,比如原本的student可以分成本科生和研究生如许。
- 概化是在一个高层实体集与一个或多个低层实体集之间存在的包含联系。
- 聚集是一种抽象,通过这种抽象,联系被视为高层实体。
- 设计选择是指在构建数据库时需要考虑的一系列关键因素和决策。
- 同一建模语言(UML) 是由对象管理构造主持开辟的一个标准,用于创建软件体系差别部门的规范定义。
第8章 关系数据库设计
- 分解用于将体现出信息重复的模式分解成几个较小的模式。
- 有损分解指分解后虽然我们拥有更多的元组,但是实际上从一下意义来讲我们却拥有更少的信息。
- 无损分解指那些没有信息丢失的分解。
- 规范化的目标是生成一组关系模式,允许我们存储信息并制止不须要的冗余,同时还允许我们轻松地检索信息。
- 函数依靠是指在一个关系表中,一个或多个属性的值(决定因素)决定了其他属性的值(被决定因素)。
- 建立:把留意力放到模式 r ( R ) r(R) r(R)上满足函数依靠集 F F F的关系,我们说 F F F在 r ( R ) r(R) r(R)上建立。
- 平凡指函数依靠被全部关系满足。
- R满足F:关系R的全部属性集合U上的元组满足函数依靠集F中的全部函数依靠规则。
- 函数依靠集的闭包记作 F + F^{+} F+,表示能够从给定的集合 F F F推导出的全部函数依靠的集合。
- 保持依靠(dependency preserving) 要求允许在没有连接的情况下逼迫实行这种函数依靠。
- 传递依靠是函数依靠的一种特殊形式,描述了属性之间的间接依靠关系。
- 逻辑蕴涵:给定一个关系模式 r ( R ) r(R) r(R),如果关系 r ( R ) r(R) r(R)的每一个满足 F F F的实例也满足 f f f,则 R R R上的函数依靠 f f f被 R R R上的函数依靠集 F F F所逻辑蕴涵。
- 公理(axiom) 或推理规则提供了一种用于对函数依靠举行推理的更为简单的技术。
- 阿姆斯特朗公理:通过反复应用以下这三条规则,可以找出对于给定 F F F的 F + F^{+} F+中的全部依靠。
- 自反律:若 α α α为一个属性集且 β ⊆ α β⊆α β⊆α,则 α → β α\rightarrow β α→β建立。
- 增补律:若 α → β α\rightarrow β α→β建立且 γ γ γ为一个属性集,则 γ α → γ β γα\rightarrow γβ γα→γβ建立。
- 传递律:若 α → β α\rightarrow β α→β建立且 β → γ β\rightarrow γ β→γ,则 α → γ α\rightarrow γ α→γ建立。
- 阿姆斯特朗公理是有效的,因为它们不会产生任何不精确的函数依靠。这些规则是完备的,因为对于一个给定的函数依靠集 F F F,它们能允许我们产生全部 F + F^{+} F+。
- 函数决定的:如果 α → B α\rightarrow B α→B,我们就称属性 B B B被 α α α函数决定。
- 无关属性的形式化定义如下:考虑一个函数依靠集 F F F以及 F F F中的函数依靠 α → β α\rightarrow β α→β。
- 从左侧移除:如果 A ∈ α A∈α A∈α而且 F F F逻辑蕴含 ( F − { α → β } ) ∪ { ( α − A ) → β } (F-\{α\rightarrow β\})∪\{(α-A)\rightarrow β\} (F−{α→β})∪{(α−A)→β},则属性 A A A在 α α α中是无关的。
- 从右侧移除:如果 A ∈ β A∈β A∈β而且函数依靠集 ( F − { α → β } ) ∪ { α → ( β − A ) } (F-\{α\rightarrow β\})∪\{α\rightarrow (β-A)\} (F−{α→β})∪{α→(β−A)}逻辑蕴涵 F F F,则属性 A A A在 β β β中是无关的。
- F F F的正则覆盖 F c F_c Fc是如许的一个依靠集: F F F逻辑蕴含 F c F_c Fc中的全部依靠,而且 F c F_c Fc逻辑蕴含 F F F中的全部依靠。此外, F c F_c Fc必须具备如下性质:
- F c F_c Fc中任何函数依靠都不包含无关属性。
- F c F_c Fc中每个函数依靠的左侧都是唯一地。也就是说,在 F c F_c Fc中不存在两个依靠 α 1 → β 1 α_1\rightarrow β_1 α1→β1和 α 2 → β 2 α_2\rightarrow β_2 α2→β2,满足 α 1 = α 2 α_1=α_2 α1=α2。
- F F F对 R i R_i Ri的限定意味着在关系 R i R_i Ri(即某个表)上应用约束 F F F。
- 保持依靠的分解:具有性质 F ′ + = F + F^{'+}=F^{+} F′+=F+的分解。
- Boyce-Codd范式(BCNF) :关系模式 R ∈ 1 N F R∈1NF R∈1NF。若函数依靠集合F中的全部函数依靠 X → Y X\rightarrow Y X→Y( Y Y Y不包含于 X X X)的左部都包含R的任一候选键,则 R ∈ B C N F R∈BCNF R∈BCNF。换言之,BCNF中的全部依靠的左部都必须包含候选键。
- BCNF分解算法所耗费的时间与初始模式的规模呈指数分布,因为用于检查分解中的一个关系是否满足BCNF的算法可能耗费指数级的时间。
- 第三范式(3NF) 指表中的全部数据元素不但要能唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其他的函数关系。
- 3NF分解算法指将一个复杂的关系模式分解成多个符合3NF的较简单的关系模式。
- 3NF合成算法用于将关系模式分解成满足3NF的模式集,确保无损分解并保持函数依靠。
- 多值依靠:多值依靠 α → → β α→→β α→→β是说 α α α和 β β β之间的联系独立于 α α α和 R − β R-β R−β之间的联系。
- 函数依靠偶然被称为相当产生依靠,而多值依靠被称为元组产生依靠。
- 嵌入的多值依靠指函数依靠 X → → Y X→→Y X→→Y在模式R上不建立,但是在 R R R的子模式 W W W上建立,则称 X → → Y X→→Y X→→Y为 R R R上的嵌入型多值依靠。
- 第四范式(4NF) 要求关系模式中的每个非平凡多值依靠必须满足以下条件:如果关系模式R的每个非平凡多值依靠 X → → Y ( Y ⊆ X ) X→→Y(Y ⊆ X) X→→Y(Y⊆X),其中X必须包含候选码。如果关系模式满足4NF,则它也必然满足BCNF。
- D D D对 R i R_i Ri的限定是集合 D i D_i Di,它包含:
- D + D^{+} D+中只含 R i R_i Ri中属性的全部函数依靠。
- 全部形如 α → → β ∩ R i α\rightarrow \rightarrow β∩R_i α→→β∩Ri的多值依靠,其中 α ⊆ R i α⊆ R_i α⊆Ri且 α → → β α\rightarrow \rightarrow β α→→β属于 D + D^+ D+。
- 更多的范式(仅提一下名字) :投影-连接范式、连接依靠、第五范式、域-码范式、第二范式。
- 原子域要求域的元素被认为是不可再分的单位。
- 第一范式(1NF) 要求关系模式的全部属性的域都是原子的。
- 唯一角色假设是数据库设计的一个盼望的特性,意味着每个属性名在数据库中只有唯一的含义。
- 去规范化指把一个规范化的模式变成非规范化的过程。
- 交叉表指一个属性的每一个值作为一列的表示方法。
- 时态数据是具有关联的时间区间的数据,时间区间内的数据是有效(valid) 的。
- 快照用来表示特定时刻的数据值。
- 时态函数依靠 α → τ β α\stackrel{\tau}{\rightarrow}β α→τβ在关系模式 r ( R ) r(R) r(R)上建立的条件是:对于 r ( R ) r(R) r(R)的全部合法实例, r r r的全部快照都满足函数依靠 α → β α\rightarrow β α→β。
- 时态主码 r . A r.A r.A建立要求,只要 r r r中的两个元组 t 1 t_1 t1和 t 2 t_2 t2使得 t 1 . A = t 2 . A t_1.A=t_2.A t1.A=t2.A,它们的有效时间区间 t 1 t_1 t1和 t 2 t_2 t2必然不会重叠。
- 形式化地,从 r . A r.A r.A到 s . B s.B s.B的时态外码约束确保了一下内容:对于 r r r中具有有效时间 ( l , u ) (l,u) (l,u)的每个元祖 t t t,在 s s s中存在一个或多个元组构成的一个子集 s t s_t st,使得每个元祖 s i ∈ s t s_i∈s_t si∈st都有 s i . B = t . A s_i.B=t.A si.B=t.A,而且包管全部 s i s_i si的时间区间的并集包含 ( l , u ) (l,u) (l,u)。
- 时态连接:在连接效果中一个元组的有效时间被定义为派生出该元组的输入元组的有效时间的交集。
第13章 变乱管理
- 变乱(transaction) 是访问并可能更新各种数据项的一个步伐实行单位。
- ACID特性这一缩写泉源于四种特性的英文首字母。
- 原子性。变乱的全部操作在数据库中要么全部精确反映出来,要么完全不反映。
- 同等性。以隔离方式实行变乱(即,没有其他事物的并发实行)以保持数据库的同等性。
- 隔离性。只管多个变乱可能并发实行,但每个变乱都感觉不到体系中有其他变乱在并发地实行。
- 恒久性。在一个变乱成功完成之后,它对数据库的改变必须是永久的,纵然出现体系故障也是如此。
- 差别等状态指体系的状态由于故障不再反映数据库本应描述的现实世界的真实状态。
- 存储器范例
- 易失性存储器(volatile storage) :驻留在易失性存储器中的信息通常在体系崩溃后不会幸存。
- 非易失性存储器:驻留在非易失性存储器中的信息会在体系崩溃后幸免于难。
- 稳固存储器:驻留在稳固存储器中的信息永久不会丢失。
- 并发控制体系的责任是确保隔离性。
- 恢复体系用于处置惩罚数据库体系包管原子性的责任。
- 变乱状态
- 生动状态,为初始状态,当变乱实行时就处于这种状态。
- 部门提交状态,在最后一条语句被实行之后。
- 失效状态,在发现正常实行不能再继承之后,
- 中止状态,在变乱已回滚而且数据库已被恢复到在它在变乱开始前的状态之后。
- 提交状态,在成功完成之后。
- 补偿变乱是打消已提交变乱所造成的影响的唯一方式。
- 变乱
- 重启的变乱被当作一个新事物,而且仅当引起变乱终止的原因是某些硬件错误或不是由于事物的内部逻辑而产生的软件错误。
- 杀死变乱通常是由于某些内部的逻辑错误,只有通过重写应用步伐才气改正这种错误,或者是由于输入错误,或者是由于所需数据在数据库中没有找到。
- 可见的外部写就是体现给用户看的输出信息的操作。
- 并发实行多个变乱可能会引起数据同等性的复杂问题,
- 串行实行即一次实行一个变乱,每个变乱仅当前一个变乱实行完后才开始。
- 调度指变乱的实行序次。
- 操作冲突:在并发操作中,多个变乱试图同时访问或修改类似的数据资源,导致数据同等性、完备性和隔离性受到威胁的情况。
- 冲突等价:如果两个调度可以通过交换不冲突的操作而相互转换,则这两个调度被认为是冲突等价的。
- 冲突可串行化:在并发实行的变乱中,如果存在冲突,则可以通过调度来使这些变乱按照某种序次依次实行(即串行实行),以包管数据的同等性和精确性。
- 可串行化测试:用于验证并发实行的变乱是否可以通过某种序次串行实行,以产生类似效果的测试过程。
- 优先图是由一个调度 S S S构造出的一个有向图。
- 可串行化序次可通过寻找与优先图中的偏序相同等的线性序次(即拓补排序)得到。
- 可恢复调度:指当一个变乱要读取另一个变乱写入的数据时,后者必须先提交,以确保在须要时可以回滚变乱并恢复数据同等性的调度策略。
- 级联回滚指因单个变乱失效而导致一系列变乱回滚的现象。
- 无级联调度是指在数据库变乱调度中,制止一个变乱失败导致一系列变乱回滚的现象,确保单个变乱失效不产生级联回滚的调度。
- 隔离性级别
- 可串行化(serializable) 通常包管可串行化的实行。
- 可重复读(repeatable read) 只允许读取已提交的数据,并进一步要求在一个事物两次读取一个数据项期间,其他事物不得更新该数据项。
- 已提交读(read committed) 只允许读取已提交数据,但并不要求可重复读。
- 未提交读(read uncommitted) 允许读取未提交数据。
- 脏写是指在数据库管理体系中,一个变乱修改了另一个变乱尚未提交的数据,导致数据差别等性的现象。
- 自动提交指在数据管理体系中,每个独立的SQL语句在实行后立即自动提交到数据库,无需用户显式地发出提交命令。
- 并发控制指在数据库管理体系中,管理多个变乱同时访问和操作数据库时,确保数据同等性和完备性,制止数据冲突和差别等的技术。
- 封锁是数据库实现并发控制的重要技术,指变乱在对某个数据对象操作之前先对其申请加锁,以包管数据操作的精确性和同等性。
- 时间戳序次指在数据管理实现技术中,根据时间戳来确定数据操作的先后序次,确保数据的同等性和精确性。
- 快照隔离指在数据库变乱处置惩罚中,每个变乱在其实行期间操作的是数据库的一个独立、同等的快照,该快照反映了变乱开始时的数据库状态,以此包管数据的同等性和隔离性。
- 幻象现象指在同一变乱中,多次读取同一数据范围时,由于其他变乱的插入或删除操作,导致读取到的数据集差别等的现象。
- 谓词锁是数据库中的一种锁机制,用于锁住查询条件所对应的数据范围,制止符合条件的记录被插入或修改,从而维护数据的同等性和并发控制。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |