软考中级_【软件设计师】知识点之【数据库】
一、结构数据模型
- 结构数据模型是直接面向数据库的逻辑结构
- 包括:
- 层次模型、网状模型、关系模型(主要学习)、面向对象模型
- 层次模型:
- 是一个树结构
- 一对多
- 网状模型:
- 是图结构
- 多对多
- 关系模型
- 是一种二维表格结构
- 例如:Excel
- 每个二维表由行、列组成(称为关系)
- 关系模型是对关系的描述
- 关系模型是由多个关系模型组成的集合
- 是一种二维表格结构
二、三级模式结构
背
- 包括:
- 概念模式
- 外模式
- 内模式
- 概念模式:
- 别名:模式
- 对应:基本表
- 外模式:
- 别名:用户模式、子模式
- 对应:视图
- 内模式:
- 别名:存储模式
- 对应:存储文件
三、二级映像
/表示为到
- 包括:
- 模式/内模式映像
- 外模式/模式映像
- 模式/内模式映像:
- 物理独立性
- 实现了模式到内模式映像之间的转换
- 外模式/模式:
- 逻辑独立性
- 实现了外模式到模式映像之间的转换
三、关系模型中的基本术语
注意:码=键
四、关系模型中的关系完整性
- 三个规则
- 实体完整性:主键不能为空
- 参照完整性:
- 例如:表a中有主键和外键,a中的外键对应b表中的主键,
- 这样的话,a表中的外键的值,只能是b表中的主键,或空,不能为其他
3. 用户定义完整性:用户对某一具体的数据制定某种约束检测。
五、笛卡尔积
- 符号:✖
- 例如:
六、关系代数
符号大全
差解释:
1. 删除B中和A一样的,剩下的就是差
投影
2. 符号:Π
3. 解释:在关系R中选出若干属性列A组成新的关系
选择
4. 符号:
5. 含义:从关系R中选择满足条件的元组
6. **注意:在关系代数中a=1和a=‘1’的含义是不一样的**
7. **a=1是比较a列和第一列的数据是否一致**
8. **a='1'是比较a列的元素是否等于字符‘1’**
连接(join)
9. 符号: 
10. 分类:
1. 
2. 等值连接
3. 自然连接
11. 注意:**笛卡尔积是无条件产生的**
12. **如果使用自然连接,但是列于列之间没有相同属性的话,会触发笛卡尔积现象。**
1. 例如:
θ连接
等值连接
- 等值连接和自然连接的区别:
- 等值连接 》》》只需要找到同名列的相同属性元素元组即可
- 自然连接》》》需要再删除重复的列
自然连接
- 含义:是去除重复属性列的等值连接(常考)
- 记作:
- 注意:如果R和S有多个属性同名,那需要R和S的多个属性值都相同。
外连接
- 包含:
- 左外连接
- 右外连接
- 全外连接
左外连接
- 符号:
- 含义:取出左侧关系与右侧不匹配的元组,用null填充左侧
右外连接
- 符号:
- 含义:取出右侧关系与左侧比匹配的元组,用null填充左侧
全外连接
- 符号:
除(了解)
- 符号:➗
- 含义:R➗S,删除R中和S相同的元组
七、以上知识点例题
- 例题一
- 例题二
- 例题三
- 例题四
- 例题五
八、关系代数转SQL
- 投影
select * from 表名
- 选择
select * from 表明 where 属性 (符号) 属性
- 笛卡尔积现象
select a.name,b.name from a,b
- 自然连接
select * from a,b where a.name = b.name
- 例题1
九、SQL语言
简介:SQL Service 数据库的体系结构是由视图、基本表和存储文件之间结构组成。
SQL的数据定义语言
- 创建数据库
create database 数据库名称
- 创建表结构
create table 表名称 (
# 属性
name char,
age char(2)
)
- 增加表的列
alert table test add f3 int
- 修改test表的f3类型为float
alert table test modify f3 float
- 删除f3列
alert table test drop f3
- 删除test表
drop table test
- 列级完整性约束
1. not null
2. unique
3. default
4. not null unique
# 创建test表,其中a属性不能为空,且值唯一,b属性默认值为'1'
create table test (
a int unique not null,
b char(11) default '1'
)
- 表级完整性约束(掌握)
- 主键约束
- 外键约束
- 用户自定义约束
create table (
id int ,
age char(11),
imgId int,
primary key(id), # 主键
foreign key(imgId) references img # 外键
,
check(name <=120) # 用户自定义
)
SQL的数据操作语言
# 插入
insert into 表名称 (列名) values(元组值)
# 删除
delect from 表名称 where 条件
# 修改
update 表名称 set 列名称=想要修改的值 where 条件
SQL的数据查询语言
- 完整语法
- 投影查询
select * from 表名称
- 查询去重复的列
select distinct 列1 from 表名称
- 选择查询
#范围查询
select * from test where between 条件1 and 条件1
#like关键字 _表示一个字符,%表示一个或多个字符
select * from test where like '王_'
# 查询成绩为31,32,33的人
select * from test where cj in (32,31,33)
# 条件逻辑 and or not is
# 排序查询 默认升序 asc 降序为:desc
order by 列名称 desc
# 查询一学号为降序的S表
select * from s
order by 学号 desc
- 聚合函数
查询s表中年龄最大的人
select max(age) from s
- 分组
# group by 列名称
# 解释:把列中值相同的分为一组
- 聚合和分组
- 因为聚合函数一般只有一个分组,但是如果要显示多列的话加上分组
- 执行顺序
- 连接查询
# 一般格式
select * from a,b where 条件
# 在sql service中连接分成了内连接(inner join)和外连接(outer join),mysql默认为内连接
# 内连接分为:等值连接、非等值连接、自连接
# 外连接分类:左外连接、右外连接、全外连接
left outer join
right outer join
full outer join
- 子查询
- 解释 :一个查询中的条件为一个查询
# 例如:在A表中学生编号为105和该同学同岁的人
select * from where age = (select age from A
where no ='105')
注意:
all(全部大于)
any(大于最小的)
- 带EXISTS测试的子查询
- 查询结果的并、交、差计算
- 并(union)
- 例如A和B表的列1
- 并(union)
select 列1 from A union select 列1 from B
2. 交(intersect)
1. 例如:查A表和B表列1值都相同的
select 列1 from A intersect select 列1 from B
3. 差(except)
1. 例如:把A表中属于B的删除
select 列1 from A except select 列1 from B
例题
SQL控制语句
- 数据控制师用户对数据的存储权力
- 授权的语句格式
- 说明(记):wtth grant option表示了,若指定了此子句,获得的权限用户还可以赋给其他人
grant <权限> [on 对象属性] <对象名> to <用户> [wtth grant optino]
# 例如:将对供应商s,零件p项目j的所有操作权力给用户u1,u2
grant all privileges on table s,p,j to u1,u2
# 将表s的插入权限给u3
grant inster on table s to u3
# 数据库s创建表的权力给u4
grant createtab on database S to u4
- 回收权限语句(了解)
# 格式:
revoke xxx from 用户
# 例如:将u1、u2在s1,s2表中的所有权限回收
revoke all privileges on table s1,s2 to u1,u2
#例如 将所有用户对表s1的查询权限回收
rovoke select on table s1 from public # public指全体用户
视图
- 视图是一张虚拟表
- 注意:在视图中,子查询不能使用 ordeer by和distinct(去重)
- 创建视图
create view 视图名 as select 查询子查询
- 删除
drop 视图表
- 例题
- 答案:BC
索引(index)
重点记:**内模式**是定义所有的记录类型、索引、和文件的组织方式。
例题
十、关系模式
一个关系模式应当为一个五元组(含关系名):R(U,D,dom,F)
含义解释
- R:关系名
- U:一组属性
- F:U的一组函数依赖
- D和dom(不做了解)
常常把关系模式看作:R(U,F)
关系数据库的规范化
扩展知识:
函数依赖
1. x函数决定y或y函数依赖于x
2. 记作:x—>y
- 平凡函数依赖和非平凡函数依赖
- 完全函数依赖
1. 例如:(学号,课程号)—>成绩
2. 解释:需要学号和课程号两个主属性才能推出成绩
- 部分函数依赖
1. 例如:(学号,课程号)—>成绩 ,学号->姓名
2. 解释:在候选码中,其中一个真子集就推出了姓名
- 传递依赖
- 例如:x->y,y-z 所以可以得到:x->z
- 伪传递依赖(x,y)->z, zx->b,b->c 可以得出:(x,y)->c
码和推理规则
- 码:k为R(u,f)中属性的组合
- 候选码:k的任意子集不可能推出u
- 全码:主属性(候选码的一个属性)+非主属性
- 关系R中的所有属性组合在一起
- 推理规则:
- 传递率:a->y,y->z 则a->y
- 合并原则:a->b,a->x,则 a->bx
- 分解规则:a->b,c包含b 则a->c
属性闭包计算
目的:找出可以完全推到出U的元素
技巧:整个右侧,并找到右侧 没有出现的元素
可以找到两个候选码(a1a3)和(a1a2)
注意:当有多个候选码的时候,可以任意选一个作为主键
十一、关系模式的范式
扩展
第一范式(1NF)
要求:第一范式不可再分
问题:不能排除数据冗余和更新(包括删除、修改、插入)异常问题
第二范式(1NF)
要求:满足第一范式,且每个非属性都完全函数依赖候选码
存在问题:可能存在传递函数依赖
分解过程:
第三范式(1NF)
解决第二范式存在的非主属性函数依赖我问题
存在问题:可能存在主属性对码的部分依赖和传递依赖
BC范式(BCNF)
消除主属性对候选码的部分函数依赖和传递依赖
第四范式(1NF)(了解)
总结
- 判断部分函数依赖技巧:
- 先找到候选码
- 判断传递依赖函数技巧
例题
十二、无损连接
- 含义:对关系模式分解时,原关系模式下一任合法的关系实例可通过自然连接恢复
- 例如:
- 保持函数依赖的分解
例题
答案:D
十三、E-R图
别名:概念模型
实体
- 形状:矩形
联系
- 形状:菱形
- 分类:
- 一对一:1:1
- 一对多: 1:n
- 多对多 : n:m
属性
- 形状:椭圆
- 分类:
- 原子属性和复合属性(可再分)
- 单值属性和多值属性
- 多值案例:一个职员多个亲戚
- null属性
- 派生属性
- 可以从其他属性得来
- 例如:A可以通过计算得到B
- 可以从其他属性得来
例题
弱实体
十四、数据库分析与设计(重要)
- 数据库设计的策略:自顶向下、自底向上
- 设计步骤:
需求分析
主要收集用户的需求,确定系统边界
产生的成果物:数据流程、数据字典、数据字典、系统需求说明书
概念结构设计
通过需求分析成果物,生成对应的E-R图
E-R图之间的冲突
- 命名冲突:
- 相同含义的属性在不同的E-R图中名称不同(异名同义)
- 例如:学生编号和学号
- 相同含义的属性在不同的E-R图中名称不同(异名同义)
- 结构冲突
- 同一实体在不同的E-R图中有 不同的属性
例题:
逻辑结构设计
E-R图到关系模式的转换
- 一对一关系转换
- 方法一:创建一新的关系模式,存放两张表的主键
- 方法二(常用):任意选一张表把另一张表的主键加入,作为该表的外键
- 一对多关系转换:
- 方法一:创建一新的关系模式,存放两张表的主键
- 方法二(常用):选关系为多的表把另一张表的主键加入,作为该表的外键
- 多对多关系转换:
- 创建一新的关系模式,存放两张表的主键
- 例题
物理结构设计
数据库实施阶段
数据库运行、维护阶段
例题
十五、事务管理
背4个特性:原子性、一致性、隔离性、持久性
例题:
十六、数据库的备份和恢复
- 备份方法
- 恢复
- 例题
十七、并发控制技术
- 分类:
- 排它锁,简称:X锁或写锁
- 共享锁,简称:S锁或读锁
- 排它锁:事务如果加入它,其他事务都不能再给给事务加锁
- 共享锁:只能读事务,不能修改事务,其他只能再给它加共享锁
- 例题:
十八、分布式数据库
背