数据库基础考点自我总结
分布式数据库的4种透明:
- 分片透明:用户不必关心数据是如何分片或者分块的
- 复制透明:用户不关系数据在各个节点的复制情况
- 位置透明:用户不必知道所操作的数据放在什么位置
- 逻辑透明:局部映像透明,用户不必关心数据模型和数据操作语言
关系表达式:
- 选择等价的关系表达式
- Π和σ下的数字和属性字符串的互换,若数字大于去重后的个数,则肯定是笛卡尔积
- 笛卡尔积相同属性不去重,连接的笛卡尔积去重
- 准换成SQL语句
- 连接的SQL语句肯定存在属性相等且用AND连接的条件表达式(where后面)
- from后面一般是两个表,使用逗号连接
3.关系的除法,比如R÷S - 找出R与S不相同的属性列
- 将该列的值去重求出象集
- 找出R中和S相同的象集
例子:R÷(ΠA1,A2(σ1<3(S))
| R | S | ||||
| A1 | A2 | A3 | A1 | A2 | A4 |
| 1 | 2 | 3 | 1 | 9 | 1 |
| 2 | 1 | 4 | 2 | 1 | 8 |
| 3 | 4 | 4 | 3 | 4 | 4 |
| 4 | 6 | 7 | 4 | 8 | 3 |
求出被除的关系为S',象集为A1A2={(2,1),(3,4)}
| A1 | A2 |
| 2 | 1 |
| 3 | 4 |
找出R与S'不相同的列:A3
将A3列的值去重:(3,4,7)
求出象集(值来自R与S'相同的列):A1A2(3)={(1,2)},A1A2(4)={(2,1),(3,4)},A1A2(7)={(4,6)}
找出于S‘象集相同的象集A1A2(4),所以被除后得出的结果是{4}
SQL语句的查询效率:
经过条件过滤的R和S,与未经过条件过滤的R'和S',RxS的效率比R'xS'的效率高
- 比如σ1=‘A’(R)xσ2=‘B’(S)的效率比RxS的效率高
查询语句越短,效率也可能越高
事务:
在进行事务处理时,数据内容先写入日志文件
系统正常或一定时间间隔后,数据从缓冲区写入数据文件
分解:
一般题目会出一个关系模式R(A1,A2,...,AN)、关系模式R的函数依赖集F和一个分解关系模式集p{R1,R2,...},让我们判断p是否是无损连接以及函数依赖
无损连接判断:
1. 构造一个表格,列表头为R的属性,行表头为p的关系
例如:R(A1,A2,A3,A4),F{A1A3->A2,A2->A3},p{(A1,A2),(A1,A3)}
| A1 | A2 | A3 | A4 | |
| (A1,A2) | ||||
| (A1,A3) |
2. 往表格里填值,填值规则:
如果列表头的属性在行表头中存在,则填入 an,n与属性的N对应
| A1 | A2 | A3 | A4 | |
| (A1,A2) | a1 | a2 | ||
| (A1,A3) | a1 | a3 |
如果列表头的实行在行表头中不存在,则填入bij,i为行号,j为列号
| A1 | A2 | A3 | A4 | |
| (A1,A2) | a1 | a2 | b13 | b14 |
| (A1,A3) | a1 | b22 | a3 | b24 |
3. 根据函数依赖,修改表格里bij的值:
函数依赖F{A1A3->A2,A2->A3}中A1A3->A2,所以第二行第二列的b22可以改成a2,A2->A3,所以第一行 第三列可以改成a3
| A1 | A2 | A3 | A4 | |
| (A1,A2) | a1 | a2 | a3 | b14 |
| (A1,A3) | a1 | a2 | a3 | b24 |
4. 若表中任意一行存在a1到an则说明是无损连接,否则就是有损连接
(注意:不要使用依赖的传递性)
函数依赖判断:
基本上有损连接不是函数依赖,因为在判断无损连接的时候就有函数依赖作为依据
注意区分伪传递依赖(若X->Y,WY->Z,则XW->Z)和传递依赖(若X->Y,Y->Z,则X->Z)
主属性&非主属性:
主要就是候选码的判断,只要是候选码集合中的属性都是主属性(集合中可能是单个属性也可能是属性组),不是的为非主属性
- 根据函数依赖F画出有向图
- 看有没有入度为零的属性(没有箭头指向该属性)且能遍历剩余的其他属性,全能遍历则是候选码
- 看属性组能否遍历剩余的其他属性,全都能遍历则属性组中的所有属性都是是候选码
范式:
- 第一范式(1NF):属性的值不可拆分,没有重复的属性列
- 有冗余
- 修改操作不一致
- 插入异常
- 删除异常
- 第二范式(2NF):有传递依赖
- 第三范式(3NF):没有传递依赖
- BC范式(BCNF):没有任何属性依赖于非主属性
- 第4范式(4NF):属性组能唯一表示,但是属性组中的子集不行
耦合类型:
由低到高:
- 无直接:无直接关系,不在同一模块,不传递任务信息
- 数据:传递数据值(参数)
- 标记:传递数据结构(结构体)
- 控制:一个模块调用另一个模块,传递控制变量
- 外部:软件之外的环境联系
- 公共:公共数据环境
- 内容:直接使用另一个模块中的内部数据
内聚类型:
由低到高:
- 偶然(巧合):没有任何联系
- 逻辑:逻辑上功能相似
- 时间:需要同时执行
- 过程:按指定的过程执行,一个模块完成多个任务
- 通信:使用相同的输入数据或者产生相同的输出数据,同一数据结构上操作
- 顺序:必须按顺序执行
- 功能:所有元素共同作用完成一个功能,缺一不可
巧记:巧逻时过通顺功,无数标控外公容
完整性约束:
- 实体完整性约束:主键不能有空,不能重复
- 参照完整性约束:外键的值要么为空,要么为对应关系的主键值
- 用户自定义完整性约束:一般用于限制某字段的取值范围
- 若三者都不是,就需要考虑建立触发器
分布式数据库的特性
- 数据独立性
- 集中+自治:各局部有独立的DBMS,系统设有集中控制机制,控制各DBMS
- 可靠+可用:在不同场地存储同一个数据的多个副本,增加数据冗余度
- 全局一致性+可串行性+可恢复性
简答题
主要考的是E-R模型,常考题型:
- 补充联系,标识联系类型
- 根据题目描述区分,比如:每个部门有多名员工,一个经理负责一个部门等,注意:每、一、多这些字眼
- 题目的分数可以明确联系的个数
- 尽量使用联系1、2、3、4替代,而不是自己琢磨联系名
- 三元联系(难点)
- 补充关系模式中的空缺
- 题目描述中已有的属性
- 联系相关的外键属性(难点)
- 确定某关系模式下的主键和外键
- 注意主键可能是属性组
- 外键可能有多个
- 增设实体,修改关系模式
- 尤其注意增设的实体与另外哪个实体建立联系
- 确定需要的属性(难点)
- 关系的除法,比如R÷S
- 冲突:
- 属性冲突:同一属性存在于不同的分E-R图,但属性的类型、取值范围和数据单位可能不一致
- 命名冲突:相同意义的属性在不同的分E-R图中有着不同的命名,或者名词相同的属性在不同的分E-R图中代表不同的意义
- 结构冲突:同一对象在某一分E-R图中被抽象为实体,在另一分E-R图中被抽象为属性

浙公网安备 33010602011771号