出题形式
每一年6题
题号51到56
知识点多
高频考点:关系代数、SQL语言、关系模式、范式、关系分解、无损连接、函数依赖
上午题6分,
下午题15分(ER图)
概念数据模型
数据模型的分类
- 概念数据模型(下午题常考)
- 结构数据模型(主要了解关系模型就行)
概念数据模型定义
概念数据模型常用术语
(实体型和实体集暂时不用看)
实体-联系方法表示的概念数据模型称为E-R图
实体–矩形
属性–椭圆
联系–棱形
结构数据模型
结构数据模型分类
- 层次模型
- 网状模型
- 关系模型 (重点)
- 面向对象模型
关系模型
二维表格是关系,
关系模式是对关系的描述。
关系模型是由关系模式组成的集合
真题
C
三级模式结构
外模式、用户模式、子模式
概念模式、模式
内模式、存储模式
三级模式
- 外模式(用户模式,子模式):视图
- 概念模式(模式):对应基本表
- 内模式(存储模式):存储文件
两级映像
- 外模式到概念模式映像
- 概念模式到内模式映像
真题
B
D
两级映像
外模式/模式映像:逻辑独立性
模式/内模式映像:物理独立性
数据的逻辑独立性和物理独立性
保证物理独立性:修改概念模式和内模式映像
保证逻辑独立性:修改外模式和概念模式映像
真题
D
B
关系模型的基本术语
关系、关系模式等。。。
这一些都是对二维表的描述:
五个码(键)
码 等同于 键
- 候选码
- 主码
- 外码
- 全码(了解就行)
- 超码(了解就行)
完整性约束
关系模式的定义
关系模式的组成
关系模式的组成:
- 关系数据结构
- 关系操作集合
- 关系完整性约束
关系数据结构、关系代数
关系模型的关系完整性约束
- 实体完整性(掌握)
- 参照完整性(掌握)
- 用户定义完整性(很少考)
关系代数
并、差、交笛卡儿积
关系代数运算符号
并、差、交、除、非,考试不考
传统集合运算
传统的集合运算有:并、差、交、笛卡儿积
并
差
交
一个例子
笛卡尔积
专门的关系运算符
投影
投影:关系的垂直方向
选择
选择:关系水平方向
如果选择在B属性中值为5的数据,5必须带 ‘ ’单引号。
如果只填了数字,他的意义是对应的列。
选择全部行的数据
一个例子
连接
θ连接和等值连接
θ连接
一个例子
在笛卡儿积的基础上做选择
tiaoja
等值连接
一个例子:
自然连接(考察重点)
自然连接:除去重复属性的等值连接
一个例子:
选择相等的元组(执行步骤2)
去除重复列(执行步骤3)
第二个例子:
所有的公共属性列都得相等
三个列子:
需要满足:
结果集为:空集
四个例子:
小技巧:
就是找相同的属性列
然后依据相同的属性列中的相同值,在此基础上做笛卡儿积。这样简单很多
左外连接、右外连接、全外连接
外连接:解决自然连接信息丢失的问题。。
左外连接
右外连接
全外连接
除
小技巧:
真题
B、A
可以先画出笛卡儿积,然后选
也可以不用一次性全部画出,边看边判断,只写出符合条件的值。。。
拿关系R的每一个元组和关系S进行组合,并判断选出第六列大于第一列的。
对于R和S自然连接的结果:空集
B
其实不用把所有选项的值都计算出来,然后看是不是值相等。
3<6就是R.C<S.D ,排除A
1,3,7就是A,R.C,E
C,D
(C的·表述明显是选择运算)
C,A
c
B
D
查询效率最高:就是先筛选,最后在笛卡尔积
B
D(题目可能搞错了。。)
注意,自然连接后,列就变化了。。。。
B
B
D
则全外连接为:
C B C
B
A
通过公共的属性列进行自然连接.
对于c
(没有相同是属性列,则自然连接退化为笛卡尔积)
和之前的进行自然连接
选c就导致最后少了一个属性列
参考
关系代数转sql语言
投影选择转sql
笛卡尔积转sql
例子:
D
C
B
自然连接转sql
真题
D
C
B
c
A
d
B
自然连接后,列的序号变化了。。。
对应的列名为:
C
d
B
先选择在连接。降低复杂度
看到自然连接,先去重复列,重新编号。。、
A
C
(这里是笛卡尔积了。。。注意区分。。。)
B
a
数据定义语言
数据定义语言DDL
例子
列级和表级完整性约束
表级完整性约束。。。
数据操作语言DML
数据查询语言DQL
他是对列元素操作
分组查询:将聚合函数作用于每一个分组里面
第二个例子:
如果有where,先where筛选行;然后group by分组,最后对每一个分组执行聚合函数。。
例子
having也是对组执行聚合函数的操作,但是:执行的聚合函数是没有作用于最终的select列里面…
聚合函数使用于select 后的列名、having里面
流程如下:
最后执行having,对一个组内进行聚合函数。。
子查询
真题
B
A
D
A
D
A
C
D
A
注意数字不带引号。字符串带引号
A
D
C
A
D
这里需要去重了。。。(多对多的关系)(一个供应商可以为一个项目供应多个零件)
C
数据控制语言DCL
D
D
B
授权–安全性
C
B
C
d
D
C
关系模式
学号决定姓名,姓名依赖于学号
函数依赖和属性闭包的计算
参考
完全函数依赖的例子:
部分函数依赖的例子:
属性闭包的计算
求出主键
设A为主键
ABDH不能决定所有的属性。。
设AC是主键。。
所以AC是主键。。
关键在于怎么寻找起始的值。。
可以把ABCD选项的值逐一求闭包。。
或者看哪个没有出现在右边。。。
注:如果属性列存在真子集可以决定所有的属性,则这个组合属性就不是候选码
真题
D
C
C
A
全码:所有属性组成他的主键。。。
B
A
(如果属性列存在真子集可以决定所有的属性,则这个组合属性就不是候选码,所以排除BCD
C(传递函数依赖)
A
C
A
A
C
对于A
分解+传递:
FR存在传递函数依赖
对于B:
FS和FR都存在传递函数依赖
C
C
D
A
d
对于AB
对于C
D中A2不能决定A3.。。。
关系模式的范式
一范式
存在的问题:
二范式
例子:一个符合一范式的表(存在非主属性对码的部分函数依赖)
转换为符合二范式的表(分解)
2NF存在的问题: 非主属性对码的传递函数依赖
因此需要继续分解R1,解决这个“非主属性对码的传递函数依赖”
三范式
拆分结果为:
方法就是:
X和Y一起;Y和z1,z2,z3一起(一起就是在同一个表中的意思)…
三范式存在的问题:主属性对码的部分和传递函数依赖。。。
例子:
这个例子的非主属性对码不存在部分函数依赖和传递函数依赖。。是3NF
主属性:店长,书店存在对码的部分函数依赖…(书店部分函数依赖于店长、店长部分函数依赖于书店)
解决方法:拆分
BCNF(比较少考察)
4范式(了解就行,不怎么考)
(解决多值依赖)
解决平凡且非函数依赖的多值依赖
范式总结
例子:
d和e部分函数依赖于候选码
判断部分函数依赖的技巧
查看是否有非主属性部分函数依赖于候选码。。
第二个例子:
找到主属性为E,M
存在:非主属性部分函数依赖于候选码
判断传递函数依赖的技巧
主属性为:时间,学生
得到
后面就还有一个经典的传递函数依赖
下一个例子:
主属性:时间,学生
满足2NF
存在传递函数依赖:
时间,学生–>培训科目–>培训师
找主码(A2,A5)(就是看看在右边不存在的。)
符合2nf
再看看非主属性的传递函数依赖
所以为2NF
真题
D
B
对于最后一个选项的分析:
不管主属性还是非主属性,都没有函数依赖,满足BCNF
不存在多值依赖。。
A
A
D
C
B
D
B
B
D(存在传递函数依赖)
不存在部分函数依赖
关系分解
找主属性。。。
A
D
对于最后一个选项:
第一轮分解
由于存在传递函数依赖。。
第二轮分解
B
找候选码
依赖关系如下
C(把部分函数依赖去除。。。)
B
C
C
无损连接和保持函数依赖
B
d
D
D
数据库分析和设计
需求分析阶段
需求说明文档…
E-R图实体,联系
E-R图属性
真题
B
c
c
C
D
ER图设计和弱实体
概念结构设计
属性冲突
第二个命名冲突的例子。。
D(异名同义)
c(同一个实体,属性不同。。。)
b
逻辑结构设计
ER图:实体,属性,联系
关系模型:关系模式
或者:
转换后:
转换后
真题
C
A
B
D
C
B(可能一个人多次看病。。)
D
C(去除重复属性列的等值连接)
d
b
d
物理设计阶段和实施维护
A
A(并不是上一个阶段)
C
c
事务管理
c
D
数据库备份和恢复
D
D
c
B
封锁
D
C
D
分布式数据库
4透明,4性
d
D
A
c
c
C
杂题
SQL注入