2020 HIT Database 复习
时间:2021-07-01 10:21:17
帮助过:6人阅读
)、选择(
\(\sigma\))、投影(
\(\prod\))
\(\theta\)连接运算无需删除属性,而自然连接和外连接需要去掉重复的属性列。
外连接:两个关系R和S进行连接时,如果关系R(S)中的元组在S(R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与S(R)中假定存在的全为空值的元组形成连接,放置在结果关系中。
关系元组运算符的优先次序:括号、\(\theta\)、\(\exists\)、\(\forall\)、\(\neg\)、\(\land\)、\(\lor\)
元组运算中使用<>表示不等于
元组演算是以元组为变量,以元组为基本处理单位,先找到元组然后再找到元组分量,进行谓词判断;域演算是以域变量为基本处理单位,先有域变量,然后再判断由这些域变量组成的远足是否存在或是否满足谓词判断。
QBE操作框架:
QBE操作种类:Print(P.)、Delete(D.)、Update(U.)、Insert(I.)
QBE查询:
- 简单条件:\(\theta\)参量
- QBE上不同属性的与条件可以写在同一行中
- 示例元素与投影:条件\(\theta\)参量中的参量也可以是域变量,用任何一个值带有下划线表示,被称为示例元素。示例元素下划线上面的值不起作用,被当作域变量名称来对待,只用于占位或是连接条件。当不是显示所有内容时,可在条件区对应要显示的列下面书写显示输出命令。
- 用示例元素实现与和或运算:当写或运算时,可以采用多行书写并在打印命令之后使用不同的示例元素来表征;与运算的情况下,在相互存在与关系的行使用相同的示例元素,
- 括号的条件表示:将\(\neg\)、\(\land\)、\(\lor\)运算符写在操作区时,是对整行条件而言,相当于该行条件放在括号中。
- 用示例元素实现多个表的连接:当检索涉及多个表时,可利用同一连接条件使用相同的示例元素,来实现多个表的连接。
关系代数是一种集合运算,是安全的;关系演算不一定是安全的。不产生无限关系和无穷验证的运算被称为是安全的。
满足下面条件的元组演算表达式{t| \(\psi\)(t)}称为安全表达式
- 只要t满足\(\psi\)、t的每个分量就是DOM(\(\psi\))的一个成员
- 对于\(\psi\)中形如(\(\exists\)u)(\(\omega\)(u))的子表达式,若u满足\(\omega\),则u的每个分量都是DOM(\(\psi\))中的一个成员。
- 对于\(\psi\)中形如(\(\forall\)u)(\(\omega\)(u))的子表达式,若u不满足\(\omega\),则u的每个分量都是DOM(\(\psi\))中的一个成员。
第二部分 数据库语言-SQL
- SQL语言中定义的标准数据类型(部分)
- numeric(p, q)固定精度数字,小数点左边p位,右边p-q位
- date:日期
- time:时间
- SQL的结果排序问题:order by 列名 [asc|desc]
- SQL中多表连接时,如果两个表的属性名相同,则需采用表名.属性名方式来限定该属性属于哪一个表。
- 使用\(\theta\) some/ \(\theta\) all来进行查询,如果表达式的值至少与子查询结果的某一个值相比较满足\(\theta\)关系,则\(\theta\) some的查询结果为真;如果表达式的值与子查询结果的所有值相比较都满足\(\theta\)关系,则表达式\(\theta\) all的结果为真。
- not in 等价于 <> all
- 结果计算:Select-From-Where语句中,Select子句后面不仅可以是列名,而且可以是一些计算表达式或聚集函数,表名在投影的同时直接进行一些运算
select 列名|expr|agfunc(列名) [[, 列名|expr|agfunc(列名)]...] from 表名1[, 表名2] [where 条件];
- expr可以是常量、列名或由常量、列名、特殊函数及算术运算符构成的算术运算式。agfunc是一些聚集函数,例如COUNT、SUM、AVG、MAX、MIN
- 使用Group by进行分组查询,通过Having进行分组过滤。
- SQL实现关系代数操作,其中带ALL的保留着重复的元组
- 并 Union (ALL)
- 交 Intersect (ALL)
- 差 Except (ALL)
- SQL的高级语法引入内连接与外连接:
select 列名 [[,列名]...]
from 表名1 [NATURAL]
[INNER | {LEFT | RIGHT | FULL} [OUTER]] JOIN 表名2
{ON 连接条件 | Using (Colname, {, Colname ...}) }
[Where 检索条件]...;
- 数据库完整性是指DBMS应保证的DB的一种特性--在任何情况下的正确性、有效性和一致性
- 完整性约束
- 域完整性约束条件:施加于某一列上,对给定列上所要更新的某一候选值是否可以接受进行约束条件判断。
- 关系完整性约束条件:施加于Table上,对给定表上所要更新的某一候选远足是否可以接受进行约束条件判断,或是对一个关系中的若干元组和另一个关系中的若干元组间的联系是否可以接受进行约束条件判断
- 结构约束:来自模型的约束
- 内容约束:来自用户的约束
- 静态约束:要求数据库在任一时候均应满足的约束
- 动态约束:要求数据库从一状态变为另一状态应满足的约束
- 实现约束的方法:
- Col_constr列约束:只能应用在单一列上,其后面的约束如UNIQUE\PRIMARY KEY\search_cond只能是单一列唯一、单一列为主键和单一列相关
- table_constr约束:对多列或元组的值进行约束。
- check中的条件可以是Select-From-Where内任何Where后的语句,包含子查询
- 断言:表达了希望数据库总能满足的条件,当创建了一个断言之后,系统将检测其有效性,并在每一次更新中测试更新是否违反该断言。
create assertion <assertion-name> check <predicate>
- 触发器:实现动态约束以及多个元组之间的完整性约束。Trigger是一种过程完整性约束,是一段程序,该程序可以在特定的时刻被自动触发执行,比如在一次更新操作之前执行,或在更新操作之后执行。当某一事件发生时AFTER|BEFORE,对该事件产生的结果(或是每一元组,或是整个操作的所有元组),检查条件search_condition,如果满足条件就执行后面的程序段。条件或程序段中引用的变量可用corr_name_def来限定
- 对corr_name_def的定义如下:
- 数据库安全性:免受非法、非授权用户的使用、泄漏、更改或破坏。
- 数据的安全级别;绝密Top Secret、机密 Secret、可信Confidental、无分类Unclassified
- 数据库系统DBS的安全级别:物理控制、网络控制、操作系统控制、DBMS控制
- DBMS的安全机制
- 自主安全性机制:存取控制,通过权限在用户之间的传递,使用户自主管理数据库安全性,通过存储矩阵和SQL视图实现
- 强制安全性机制:通过对用户和数据进行强制分类,使得不同类别用户能够访问不同类别的数据
- 推断控制机制
- 数据加密存储机制
- 当一个用户的权利被收回时,通过其传播给其他用户的权利也将被收回;如果一个用户从多个用户处获得了授权,则当其中某一个用户收回授权时,该用户可能仍保有权利。
- 强制安全性机制规则:
- 用户S,不能读取数据对象O,除非Level(S) >= Level(O)
- 用户S,不能写数据对象O,除非Level(S) <= Level(O)
- SQL语句在执行过程中,必须有提交和撤销语句才能确认其操作结果
- 事务的特性:ACID
- 原子性:保证事务的一组更新是原子不可分的
- 一致性:保证事务的操作状态是正确的
- 隔离性:保证并发执行的多个事务之间不受影响
- 持久性:保证已提交事务的影响是持久的,被撤销事务的影响是可恢复的
注:考嵌入式自求多福
第三部分 数据建模与数据库设计
第四部分 数据库管理系统实现技术
2020 HIT Database 复习
标签:一致性 取数 管理 持久性 变量 span 检测 ax1 -name