软考--数据库系统工程师

This is my blog.

本来打算写常考清单的,但是手中题目只做了一点,书也没看完,就看到不会的都写了下来,然后就成了啰里八嗦的一篇未完待续了……下星期就要软考了。

加油吧!

计算机系统

处理机

处理器

总线

便于实现系统的积木化构造,同时可以减少信息传输线的数量

  • 数据总线
  • 地址总线
  • 控制总线

存储器

  • 虚拟存储器

  • 高速缓存 Cache

    地址映像方式

    • 全相联映像:

      块冲突概率低,空间利用率高;

        目录表容量大,成本高,查表速度慢
      
    • 直接映像:硬件简单,访问速度快;

        块冲突概率高,空间利用率低
      
    • 级相联映像 折中

  • 相联存储器(访问内容)

  • 随机访问存储器

寄存器

  • 指令寄存器 IR

  • 指令计数器 PC

    确定下一条指令的地址,跟踪指令地址

  • 地址寄存器AR

    保存当前CPU访问内存单元的地址

  • 数据寄存器DR

执行一条指令:

内存->数据寄存器->指令寄存器->指令译码器

访问速度:

通用寄存器 > Cache > 内存 > 硬盘

内存

最近未被访问>最近未被修改

多媒体

视频:A/D转换

  • JPEG

  • RIFF

    • 文件规范音频与视频
  • AVI

    • 视频与音频交错同步
  • MPEG

    运动图像压缩算法国际标准

    • MPEG-1 VCD
    • MPEG-2 DVD
    • MPEG-7 接口标准
    • MPEG-21 多媒体应用框架
  • CIF

    • 标准化图像格式 352*288像素

感觉媒体

声音、图像等直接作用于人的感觉器官

分类

  • 表现媒体

    信息输入、输出:键盘、鼠标、显示器

  • 表示媒体

    数据交换的编码

  • 传输媒体

    传输物理介质:电缆

  • 存储媒体

    存储物理介质:硬盘

流水线

采用异步控制会增加控制电路的复杂性,也不会提高性能

加速比

  • 等功能的非流水线执行时间与流水线执行时间之比
  • 与吞吐率成正比

吞吐率

  • 单位时间内执行的指令数
  • 最大吞吐率取决于流水线中最慢的一段

病毒

文件型

可执行exe com

引导型

软盘、硬盘

目录型

文件地址

程序创建的文本文档word、数据库sql、电子表格excel等文件

可靠度

  • 串联
  • 并联

系统故障

  • CPU
  • 操作系统
  • DBMS代码
  • 停电

介质(硬)故障

  • 硬盘损坏

中断

  • 可屏蔽中断(CPU无条件响应)

    打印机中断

  • 不可屏蔽中断:断电,软中断

磁盘容量

  • 每面磁道数=(外直径-内直径)/2*磁道密度
b
字节 B(=8b)
千字节 KB(=1024KB)
…. MB……

CPU

  1. 中断响应是指从发出中断请求到开始进入中断处理程序
  2. 指令系统的寻址方式:
    • 立即寻址:指令中含有数据
    • 直接寻址:给出存储单元的地址
    • 寄存器寻址:给出寄存器名
    • 寄存器间接寻址:存储单元的地址在寄存器中
    • 间接寻址:操作数地址的地址
    • 相对寻址:地址的偏移量
    • 变址寻址:变址寄存器的内容加偏移量

安全

  1. 物理安全

    机房安全

  2. 网络安全

    入侵检测

  3. 系统安全

    漏洞补丁管理

  4. 应用安全

    数据库安全

软件工程

基本要素

方法、工具、过程

软件设计

  • 概要设计
    • 软件体系结构的设计
    • 数据设计
    • 接口设计
  • 详细设计
    • 结构设计
    • 算法设计
  • 结构化设计
    • 函数、过程
  • 面向对象设计
    • 类、对象、构件
耦合
  • 数据耦合
    • 数据参数来交换输入、输出信息
  • 标记耦合
    • 数据结构本身传递
  • 公共耦合
    • 访问同一个公共数据环境
  • 内容耦合
    • 直接访问

软件过程

  • 瀑布模型
    • 需求不明确
  • 原型模型
    • 需求缺乏准确认识
  • 增量开发模型
    • 逐步理解需求
  • 螺旋模型
    • 有风险分析
    • 适用于大型的软件

补码:简化计算机运算部件的设计

编码

  • 熵编码法(一致性编码法)

    无损耗压缩数据

    • 哈夫曼编码法

程序语言

基本成分

数据、运算、控制、传输

解释语言

静态语言

  • C、C++、C#、Java
存储空间

全局变量:静态存储区

局部变量:栈区

malloc:堆区

动态语言(运行时改变结构)

脚本语言(不产生独立保存的目标程序)
  • PHP、Javascript、Python、SQL

HTML

alink:正击中

vlink:已使用

background:背景图片URL

bgcolcor:文档整体背景颜色

<tr>:行

<col>:列

td:单元格

1
<a href="mailto:test@test.com">test@test.com</a>

XML

第一行必须是文档说明

必须包含根元素

标记不可以交叉锁套

数据结构与算法

:我就写写,不想背,看感觉选吧……

分类算法

贝叶斯信念网络

聚类算法

  • K-means
    • 基于对象
    • 输入聚类个数
  • DBSCAN
    • 基于密度
    • 确定阈值

若数据分布密度大,两者均不适用

  • EM

关联规则挖掘算法

Apriori

操作系统

网络

“三网合一”: 电信网、广播电视网、互联网

掩码

  • A类

255.0.0.0

  • B类

255.255.0.0

  • C类

255.255.255.0

  • 广播类

    • 主机位全1
  • 网络类

    • 主机位全0
  • 计算题

    • 计算子网

      化简成二进制,减去所属类1的个数,得到x ,则划分成\(2^x\)个子网

    • 计算可用主机地址

      主机分配有32位,给的地址/后的数字是地址所占的位数,相减得到留给主机的地址码,减去2就是可用主机地址的个数x。化成二进制的时候,留下x10,即可求的最小地址和最大地址。

POP3

默认端口为110

地址

逻辑地址:IP

物理地址:通常用MAC地址表示

​ 只在子网内部中有效

协议

2PC协议

  • 协调者->所有参与者发送prepare
  • 参与者->协调器发送readyabort
  • 接受所有的ready后,-> 参与者发送commit,否则发送rollback

DHCP协议

自动分配IP地址

TCP协议

文件传输,使用传输层协议为TCP

ARP协议(Address Resolution Protocol)

网络层协议,实现IP地址与MAC地址(网卡地址)之间的变换

SSH

终端设备与远程站点之间建立安全连接的协议

建立在应用层传输层基础上的安全协议

带宽

每秒传输的数据总量

时钟频率*每个时钟周期传送的字节

VLAN

  • 内部可相互通信
  • 抵御网络风暴的影响
  • 允许逻辑地划分网段

URL

1
protocol :// hostname[:port] / path / filename
  • protocol

    传输协议:HTTP/HTTPS/FTP

  • hostname

    服务域名或者IP地址

  • port

    端口:80(http)

安全级别

Internet<Intranet<受信任站点<受限站点

数据库

完整性约束

实体完整性约束

关键字不重复,且不是空值

参照完整性约束

主关键字与外部关键字

用户自定义完整性约束

应用环境的要求和实际的需要

数据模型

体系结构

并行结构
B/S
  • 用户分散
  • 维护主要集中在服务器端
  • 便于远程维护
  • 软件重用价值高
C/S
  • 客户端负责数据表示服务,高级语言编写,业务逻辑实现,可以使用接口技术或者嵌入式SQL等方式访问
  • 服务器负责数据库服务
  • 前端 图形用户界面
  • 后端 存取结构、查询计算优化、并发控制、故障恢复
  • 企业内部网络
  • 需要对每一台客户机进行维护
三级模式,两级映像
  • 三级模式
    • 物理层
    • 逻辑层
    • 视图层
  • 两级映像
    • 模式/内模式
    • 外模式/模式

并发控制

判断事务并发执行正确性的准则是满足可串行化调度。

保证事务正确性的操作是采用2PL协议

  • 丢失更新 READ UNCOMMITTED
  • 不可重复读 READ COMMITED
  • 读脏数据 REPEATEDABLE READ
  • 读幻影 SERIALIZABLE

PV控制

P(...)->V(...)

DBMS

  • 负责数据的存储
  • 负责数据库的运行和维护
  • 关系
  • 面向对象
  • 对象关系

数据仓库(DW)

历史的、大量的

三层体系:

底层: 数据仓库服务器

中间层: OLAP服务器

顶层:前端客户层

数据挖掘(DM)

大量的、有噪声的

OLAP

联机分析处理

从数据仓库中分析数据,为决策提供依据

OLTP

联机事务处理

更新事务,将数据写入数据库,面向操作人员

分析方法

  • 关联分析
    • 数据间的相互关系
    • 最小置信度
    • 最小支持度
    • 频繁出现的模式
  • 序列模式分析
    • 前后(因果关系)
  • 分类分析
    • 按标记分类记录
    • 根据历史数据或已知数据
  • 聚类分析
    • 分类分析的逆过程

接口

  • JDBC(JAVA)
  • ODBC(开放式)
  • ADO

E-R图

概念设计阶段完成

  • 多值属性(另起一个关系模式,加入主码),形成4NF
  • 派生属性(不表示)
  • 复合属性(有了这个就是非1NF)
    • 最常见的家庭地址
  • 弱实体:以另外一个实体存在为前提
  • 特殊化:四分之三圆,缺口概念大的
    • d 不相交特殊化
    • o重叠特殊化
  • 标记 1 *
构件 说明
矩形 实体
双边矩形 弱实体
菱形 联系
双边菱形 (弱实体的)联系
椭圆 属性(不包括外码的)
线段 -
双椭圆 多值属性
虚椭圆 派生属性
双线 实体全部参与

类图 例图

类图: 逻辑设计

例图:用户对系统功能的使用

关系数据库

  • 全码:所有属性组是候选键

分解

有无损连接

通过自然联接和投影等运算仍能还原到原来的关系模式,则称这种分解为无损联接分解。

  1. 我们需要判断是否为超码:

    判断α是否为超码,通过计算α+αF下的闭包),看α+ 是否包含了R中的所有属性。若是,则αR的超码。

一个小练习:

eg.给定关系R(A1,A2,A3,A4)上的函数依赖集F={A1→A2,A3→A2,A2→A3,A2→A4},R的候选关键字为____

​ A. A1 B. A1A3 C.A1A3A4 D. A1A2A3

1
2
3
4
5
6
7
8
9
result=A1,
由于A1→A2,A1∈result,所以result=result∪A2=A1A2
由于A2→A3,A2∈result,所以result=result∪A3=A1A2A3
由于A2→A4,A2∈result,所以result=result∪A3=A1A2A3A4
由于A3→A2,A3∈result,所以result=result∪A2=A1A2A3A4

通过计算我们看到,A1+=result={A1A2A3A4},所以A1R的超码,理所当然是R的候选关键字。此题选A 。

  1. 无损分解的判断。

如果R1∩R2R1R2的超码,则R上的分解(R1,R2)是无损分解。

是否保持函数依赖(这个还有点晕)
1
2
3
4
5
6
对F上的每一个α→β使用下面的过程:
result:=α;
while(result发生变化)do
for each 分解后的Ri
t=(result∩Ri)+ ∩Ri
result=result∪t

一个大练习:

设关系模式R<U, F>,其中U={A, B, C, D, E}F={A→BC,C→D,BC→E,E→A},则分解ρ={R1(ABCE),R2(CD)}满足__
​ A.具有无损连接性、保持函数依赖 B.不具有无损连接性、保持函数依赖
​ C.具有无损连接性、不保持函数依赖 D.不具有无损连接性、不保持函数依赖

1
2
3
4
5
6
7
8
9
10
11
先做无损链接的判断。
R1∩R2={C},计算C+。
Result=C
由于C→D,C∈result,所以result=result∪D=CD
可见C是R2的超码,该分解是一个无损分解。
再做保持依赖的判断。
A→BC,BC→E, E→A都在R1上成立(也就是说每一个函数依赖左右两边的属性都在R1中)
C→D在R2上成立,因此给分解是保持依赖的。
选A。

一个超大练习:

给定关系模式R<U, F>U={A, B, C, D, E}F={B→A,D→A,A→E,AC→B},其候选关键字为
,则分解ρ={R1(ABCE),R2(CD)}满足__
​ A.ABD B.ABE C.ACD D.CD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
对于第一问,分别计算ABCD四个选项的闭包,
(ABD)+ = { ABDE }
(ABE)+ = { ABE }
(ACD)+ = { ABCDE }
(CD)+ = { ABCDE }
选D。
再看第二问。
先做无损链接的判断。R1∩R2={C},计算C+。
result=C
因此C既不是R1也不是R2的超码,该分解不具有无损分解性。
再做保持依赖的判断。
B→A,A→E,AC→B在R1上成立,D→A在R1和R2上都不成立,因此需做进一步判断。
由于B→A,A→E,AC→B都是被保持的(因为它们的元素都在R1中),因此我们要判断的是D→A是不是也被保持。
对于D→A应用算法二:
result=D
对R1,result∩R1=ф(空集,找不到空集的符号,就用这个表示吧),t=ф,result=D
再对R2,result∩R2=D,D+ =ADE ,t=D+ ∩R2=D,result=D
一个循环后result未发生变化,因此最后result=D,并未包含A,所以D→A未被保持,该分解不是保持依赖的。

范式

  • 1NF
    • 概念上
      • 存在可再分的分量
      • 冗余度大,插入修改删除异常
    • hcx:存在两行,有多列属性相同,而且存在属性列,不依赖候选码(若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。),不存在多值属性
  • 2NF
    • 概念上:每一个非主属性(不包含任何一个候选码中的属性)完全依赖于码,消除了部分函数的依赖
    • hcx:每一个候选码通过函数关系都不可以得到非主属性码(单个候选码与非主属性之间不存在关系)
  • 3NF
    • 概念上:消除了传递函数的依赖
    • hcx:只有候选码集可以决定非主属性码(非主属性之间不存在关系)
  • BCNF
    • 概念上:消除了主属性对码的部分函数依赖和传递函数依赖
    • hcx:函数依赖关系中的左边是候选码(候选码间不存在关系)
    • 答题时:因为每个函数依赖的决定因素都包含码,所以是BCNF范式。
  • 4NF
    • 多值属性构成的新增关系模式

数据流

1
2
3
4
5
6
7
8
copy from qhb:
在绘制数据流图时可能出现的输入、输出错误
- 只有输入没有输出
- 只有输出没有输入
- 输入的数据流无法通过加工产生输出流
- 输入的数据流与输出的数据流名称相同

安全

对于只读数据 视图

对于需要更新数据 存储过程

SQL

嵌入式SQL

  • 指示变量:解决属性值为空
  • 游标:从结果集中逐一读取记录
  • SQLCA:应用程序到数据库的通信链接的句柄
  • 动态SQL:输入不同,生成不同的执行语句

授权和收回权利

1
2
3
4
REVOKE SELECT ON TABLE .... FROM ... CASCADE|RESTRICT
REVOKE UPDATE(属性) ON [Table_name] FROM [Sb.]
GRANT SELECT/ UPDATE(属性) ON TABLE [Table_name] TO [Sb.] ( WITH GRANT OPTION允许其将该权利授予其他人)

约束

1
2
3
4
5
6
7
ALTER TABLE xx
ADD CONSTRAINT PK_xx PRIMARY KEY(...);
ALTER TABLE xx
ADD CONSTRAINT FK_xx FOREIGN KEY(…) REFERENCES yy(…);
CHECK (...)

修改表属性

1
ALTER TABLE xx ADD xxx INT(Like that) DEFAULT 0;

更新数据

1
UPDATE table_name set xx = xxx;

VIEW

1
2
3
4
5
CREATE VIEW view_name (参数)
AS
SELECT (参数对应的来源)
FROM (some_table)
WHERE ...

触发器

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TRIGGER trigger_name AFTER INSERT(UPDATE) ON table_name
REFERENCING new row AS nrow (取得新插入的行)
FOR EACH row (遍历该表中的每一行)
WHEN (条件)
BEGIN (ATOMIC可以不加)
...
(UPDATE table
SET ...
)
WHERE (表连接条件)
COMMIT WORK;
END

事务

一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
EXEC SQL SELECT balance INTO :x FROM tickets WHERE flight = 'A';
.....
if(x<0)
EXEC SQL ROLLBACK WORK;
......
else{
EXEC SQL UPDATE tickets SET balance = :x WHERE flight = 'A';
if(SQLCA.sqlcode <> SUCCESS)
EXEC SQL ROLLBACK WORK;
else
EXEC SQL COMMIT WORK;
}

数据库设计

需求调查

需求分析

形成数据流图、数据字典

  • 概念设计:实体及其联系
  • 逻辑设计:关系模式、视图设计、规范化
  • 物理设计:存取方式、索引设计、数据文件分布等

数据流图(DFD)

描述对数据的处理流程

可能出现的错误:

  • 黑洞 只有输入没有输出
  • 奇迹 只有输出没有输入
  • 灰洞 输入的数据流无法通过加工产生输出流
  • 输入的数据流和输出的数据流名称相同

不可以有数据流:

因为数据流的起点和终点中必须有一个是加工(处理)。

数据字典(DD)

  • 数据项
    • 名称
    • 编号
    • 取值范围
    • 长度
    • 数据类型
  • 数据结构
  • 数据流
  • 数据存储
  • 处理过程

白盒测试

根据程序的内部结构和逻辑来设计测试用例和指定的覆盖标准

黑盒测试

根据功能

进度图

Gantt

水平条状

以日历为基础

PERT

可表明依赖关系

面向对象

类型引用:将一个对象类型定义为一个表字段,REF关键字

类型继承:现有类上创建新类,UNDER关键字

事务管理

事务性质

  • 持久性(提交之后)
    • 使用日志
  • 一致性
  • 原子性
  • 隔离性(一个事务受另一个的干扰)

事务故障

内部故障

  • 运算溢出
  • 发生死锁
  • 违反完整性约束

2PL协议

读数据 S 共享锁

写数据 X 独占锁、排他锁

修改数据 升级

系统开发

标准化与知识产权

CA(认证中心)

常识来答题

软件著作权

作品完成就有了……

给公司做的,自己只有著作权,其余权利都是公司的

软件开发

  • RUP
    • 角色Who
    • 活动How
    • 制品What
    • 工作流When

后记

最近貌似有点热,嗯,有点不理智

这周天六级口试了,然后发现六级没准备,就很郁闷

下周就是软考,嗯,我一定要把半本书看完

下下周,嗯嗯嗯…… 儿童节???

下下下周,宁夏,抱着旅游心态???

下下下下周,六级,唔,不知道那时候自己准备了什么

然后是不是就应该补功课了呀!发现好多课云里雾里的了,有些感觉跳过了几节课,是我睡着了,还是失忆了呢!

最近打算埋头苦干一下,控制一下自己,不要被诱惑了🙅‍♀️

好了,继续更新这篇博客,满满上传啦!

git用多了,hexo快失忆了!我是有多久没更新blog了呀!!!

转载请注明出处,谢谢。

愿 我是你的小太阳


买糖果去喽