软考数据库系统工程师笔记

文章详细阐述了数据库系统中的数据不一致性问题,包括丢失修改、读脏数据、不可重复读和读幻影。接着介绍了ACID特性,包括原子性、一致性、隔离性和持久性。还探讨了关系规范化,如第一范式至BCNF。此外,讨论了SQL的不同语言分类、数据类型以及DDL和DML操作。最后提到了数据库设计的基本步骤和重要概念,如ER图和数据库故障恢复策略。
摘要由CSDN通过智能技术生成

1.数据不一致性

1.1数据不一致性包括:丢失修改、读脏数据、不可重复读、读幻影

1.丢失修改:指当一个事务更新了一个数据项但没有提交时,另一个事务也更新了同一数据项并提交,这样原来的修改就丢失了。

2.读脏数据:指一个事务读取到另一个事务未提交的数据,如果另一个事务在提交之前回滚,那么读取这个数据的事务就读到了不正确的数据。

3.不可重复读:指在一个事务中,多次读取同一数据,但每次读取的结果都不同,可能是由于另外一个事务在此期间修改了数据。

4.读幻影:指在一个事务中,多次执行同一个查询,但每次查询的结果集都不同,可能是由于另外一个事务在此期间插入或删除了数据。

2.ACID

2.1ACID是指数据库系统必须满足四个基本特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)

1.原子性(Atomicity):指一个事务中的所有操作要么全部成功要么全部失败回滚,不允许出现部分操作成功、部分操作失败的情况,保证了数据在数据库中的完整性

  1. 一致性(Consistency):指事务执行前后数据库从一个一致的状态变为另一个一致的状态,数据库中的数据必须满足某些事先定义好的规则,例如键值入库约束、表的完整性约束等

  2. 隔离性(Isolation):指多个并发事务的执行互不干扰,一个事务不应该能够看到其他并发事务未提交的数据,保证了事务执行的正确性和独立性。

  3. 持久性(Durability):指一旦事务提交,它所做的修改会永久保存在数据库中,即使出现系统故障或机器重启等异常情况也能够恢复,保证了数据的持久性和安全性。

3.关系规范化

3.1第一范式(1NF)

每个属性都是原子类型,不可再分。不允许同一列有多个值或者该列的值是一个可变长的数据类型,例如数组。

3.2第二范式(2NF)

满足第一范式的前提下,消除非主键列对主键的依赖,即非关键属性完全依赖于主键,而不是依赖于主键的一部分。这种情况可能会导致更新异常。

3.3第三范式(3NF)

满足第二范式的前提下,消除非主键列之间的依赖,即每个非主键列必须只依赖于主键,而不能依赖另一个非主键列。这种情况可能导致插入异常

3.4BCNF

它是第三范式的扩展,也是满足第三范式的前提下,进一步消除表中属性对主键的部分依赖关系的规范化。

3.5关系联系

在这里插入图片描述

4.锁

4.1两段锁

两段锁协议 2PL:对任何数据进行读写之前必须对该数据加锁,在释放了一个封锁之后,事务不再申请和获得任何其他封锁。这就缩短了持锁时间,提高了并发性,同时解决了数据的不一致性

两段锁协议可以保证可串行化,它把每个事务分解为加锁和解锁两段;但是两段锁协议不能保证不产生死锁。

5.数据流图

5.1保持父图与子图平衡

即父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同
父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成的扯些数据流的数据项的全体正好是父图中的这一个数据流

5.2保持数据守恒

一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据

5.3遵循原则

数据流图在建模时应遵循 自顶向下、从抽象到具体的原则

6.SQL

6.1SQL分类

DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)

6.2SQL数据类型

  1. int:整型
    double:浮点型,例如 double(5,2)表示最多 5 位,其中必须有 2 位小数,即最大值为 999.99;
    decimal:泛型型,在表单线方面使用该类型,因为不会出现精度缺失问题;
    char:固定长度字符串类型;(当输入的字符不够长度时会补空格)
    varchar:固定长度字符串类型;
    text:字符串类型;
    blob:字节类型;
    date:日期类型,格式为:yyyy-MM-dd;
    time:时间类型,格式为:hh:mm:ss
    timestamp:时间戳类型;

6.3DDL

  1. 创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1;

  2. 删除数据库:DROP DATABASE [IF EXISTS] mydb1;

  3. 创建表

    CREATE TABLE 表名(
    列名 列类型,
    列名 列类型,

    );

  4. 查看表的结构

    DESC 表名;

    删除表

    DROP TABLE 表名;

  5. 修改表

    添加列:给 stu 表添加 classname 列
    ALTER TABLE stu ADD (classname varchar(100));

    修改列的数据类型:修改 stu 表的 gender 列类型为 CHAR(2)
    ALTER TABLE stu MODIFY gender CHAR(2);

    修改列名:修改 stu 表的 gender 列名为 sex
    ALTER TABLE stu change gender sex CHAR(2);

    删除列:删除 stu 表的 classname 列
    ALTER TABLE stu DROP classname;

    修改表名称:修改 stu 表名称为 student
    ALTER TABLE stu RENAME TO student;

6.4DML

1.插入数据
INSERT INTO 表名(列名 1,列名 2, …) VALUES(值1,值2,…);

INSERT INTO stu(sid, sname,age,gender) VALUES('s_1001', 'zhangSan', 23, 'male');

INSERT INTO 表名 VALUES(值 1,值 2,…);

INSERT INTO stu VALUES('s_1002', 'liSi', 32, 'female');

2.修改数据

UPDATE 表名 SET 列名 1=值 1, … 列名 n=值 n [WHERE 条件];

UPDATE stu SET sname=’zhangSanSan’, age=’32’, gender=’female’ WHERE sid=’s_1001’;

3.删除数据

DELETE FROM 表名 [WHERE 条件];

DELETE FROM stu WHERE sid=’s_1001’003B;

6.5DCL

1.授权

GRANT 权限 1, … , 权限 n ON 数据库.* TO ‘用户名’@地址;

GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;

GRANT ALL ON mydb1.* TO user2@localhost;

2.撤销授权

REVOKE 权限 1, … , 权限 n ON 数据库.* FROM ‘用户名’@地址;

REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;

6.6触发器

选择题小记

1.Cache的地址映射方法

有三种:全相联映像、直接映像和组相联映像。

1.1全相联映射方式Cache的命中率相对最高,但是有一定的硬件成本和设计复杂度;(任意映射)

1.2直接映像的硬件成本最低,但是冲突率较高。(主存每一块只能映射在Cache特定的块)

1.3而组相联映像综合了两种方式,既能提高Cache的命中率,也能尽可能减少硬件成本(组间直接映射,组内全相联)

2.计算机网络设备

物理层:中继器、集线器

数据链路层:网桥、交换机

网络层:路由器

传输层和会话层主要是软件功能

应用层:网关

3.数据库设计步骤

1.用户需求分析(了解用户的需求、业务流程和数据处理过程

2.概念结构设计(采用ER图或UML建立系统模型,建立数据库的概念模型,确定实体(Entity)以及实体间的关系

3.逻辑结构设计(进行数据的具体分解和规范化,通过关系模式的设计来表示实体

4.物理结构设计( 定义表的物理结构、实现查询和维护功能,设置存储空间和索引等

5.数据库实施阶段(数据库的相关程序编写,数据导入和相应的权限设置等

6.数据库运行和维护阶段( 包括数据备份和恢复、性能监测以及安全管理等

7.新奥尔良(New Orleans)方法数据库设计的基本步骤包括四步

7.1需求分析:对数据库应用系统所涉及的内容(数据)和功能(行为)的整理描述,以用户角度认识系统

7.2概念结构设计:主要结果为ER图

7.3逻辑结构设计:主要结果为关系模式和视图

7.4物理结构设计:主要涉及内部存储与组织

4.计算机编译方式和解释方式

1.执行方式不同

编译方式是在程序运行前将源代码翻译成机器语言,形成目标文件,目标文件会预先存储在磁盘。程序运行时,直接读取目标文件,并由计算机直接执行。而解释方式则是在程序运行过程中逐行逐段将源代码解释成机器语言,代码不需要翻译,也不会产生目标文件,程序每次都需要解释执行。

2.编译效率和速度不同

编译方式的执行速度通常比解释方式快,因为在编译时已经将程序翻译成了机器语言,而解释方式每次执行时,都需要现场对程序进行翻译和解释,因此执行速度会慢一些。

3.跨平台性不同

由于在编译时编译器将程序翻译成了目标平台的机器语言,因此不同平台之间的目标文件不兼容,需要为每个平台重新编译一遍。相反,解释方式不需要编译,而是在运行时候解释执行,因此在不同平台上程序可以直接运行,具有更好的跨平台性。

4.开发效率不同

使用编译方式开发程序通常需要花费更多的时间和精力,因为编译器需要编译和调试代码,而且在每次修改程序之后都需要重新编译。相反,使用解释方式可以更快地获取反馈,同时开发人员也不需要考虑每个平台的细节问题,可以更加专注于程序本身的开发。

5.I/O设备管理软件

一般分为四层:中断处理程序、设备驱动程序、与设备无关的系统软件和用户及软件

6.操作系统信号量

1.进程互斥是指系统中各进程互斥使用临界资源,又称为进程间接制约

2.进程同步是并发执行的进程因直接制约而引起的相互通信,互相协调互相等待

3.共用信号量:用于互斥的信号量、资源数 ,取值范围为 进程个数

4.私有信号量:用于同步的信号量

5.PV操作

5.1wait操作(P操作):对信号量进行P操作,其含义是让信号量计数器减一。如果计数器小于0,则需要等待,进程(或线程)被阻塞,并加入信号量的等待队列。

5.2 signal操作(V操作):对信号量进行V操作,其含义是让信号量计数器加一。如果有等待队列,则从等待队列中唤醒一个进程(或线程)

通知下一个进程用V 检查上一个进程是否完成用P

7.数据库系统三级模式结构

外模式:用户看到的部分 一般用视图定义

模式:数据逻辑结构(名字、类型、取值范围),数据之间的联系,数据库有关安全性、完整性要求

内模式:数据物理结构和储存方式的描述,记录的储存方式(顺序存储、hash存储等)、索引的组织方式等

8.ER图冲突

1.命名冲突:在不同的分ER图上有着不同的命名

2.属性冲突:同一属性可能存在于不同的分ER图中,属性的类型、取值范围、数据单位可能不一致

3.结构冲突:同一实体在不同的分ER图中有着不同的属性,同一对象在某一分ER图中被抽象为实体,在另一分ER图中又被抽象为属性

9.NoSQL

在这里插入图片描述

9.1CAP

CAP理论是指计算机分布式系统中,一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)三个要素无法同时满足的问题。CAP理论的原理表述如下:

  1. 一致性(Consistency):分布式系统中的所有节点,在同一时刻,看到的数据都是一致的。

  2. 可用性(Availability):分布式系统在处理请求时,保证每一个请求在一个合理的时间范围内,能够得到处理并返回结果。

  3. 分区容错性(Partition tolerance):指当系统出现某些分区故障时,仍然可以保持部分功能的可用性,也即系统的可用性和一致性可以在分区故障中容错。

CAP理论认为分布式系统最多只能同时满足其中的两个要素,而无法完全满足三个要素。

9.2BASE

NoSQL是一种与传统的关系型数据库(SQL)不同的数据存储和处理方案,它采用分布式的、无结构的、大规模的非关系型数据库方案,更加适用于快速变化的和需要高度可扩展性的数据存储和处理场景。

为了满足此类要求,NoSQL数据库的设计理念之一就是遵循BASE理论,而不是传统SQL数据库的ACID理论。

BASE理论由CAP理论三要素中的AP要素演化而来,其具体内容如下:

  1. 基本可用(Basically Available):系统能够基本正常运行,尽管部分功能可能会失效或性能下降。
  2. 软状态(Soft-state):在一段时间内,系统中的数据并不一定保持一致性,可以允许数据的中间状态存在。
  3. 最终一致性(Eventually Consistent):系统中的所有副本,在一定时间内都能够达到最终一致的状态。换言之,当系统出现故障或网络延迟等情况时,系统的各节点之间的数据可能会有所不同,但是它们最终会通过一定的机制保证一致性。

10.事务隔离级别

在这里插入图片描述

11.最小函数依赖集

1.F中任意函数依赖的右部仅有一个属性,即无多余的属性
2.无多余的函数依赖

3.去掉各函数依赖左边的多余属性

12.CPU

CPU由运算器、控制器、寄存器组、内部总线四大部件构成

1.运算器(Arithmetic Logic Unit, ALU):负责各种算术运算和逻辑运算,包括加减乘除、位运算、逻辑运算等。

2.控制器(Control Unit, CU):负责控制CPU内部的各种操作和流程,包括取指令、解码、判断、执行等。

3.寄存器(Register)组:是一些高速且容量较小的存储单元,用于暂时存放执行中的数据和指令,包括指令计数器、程序计数器、通用寄存器等。

4.程序计数器(Program Counter,PC),也叫指令指针寄存器(Instruction Pointer Register),是CPU中的一个寄存器,用于存储下一条指令所在的地址,即程序计数器中存储的值为CPU当前正在执行的指令的地址

5.指令计数器(Instruction Counter, IC),有时也叫指令地址寄存器(Instruction Address Register, IAR),是一个独立的计数器,用于记录CPU已经执行的指令数量

6.指令寄存器:保存当前正在执行的一条指令

7.地址寄存器:保存当前CPU所访问的内存单元的地址

8.状态寄存器:记录运算中产生的标志信息

9.通用寄存器:运算时用于暂存操作数或地址

10.累加器:数据寄存器,运算过程中暂存操作数和中间运算结果,不能长时间保存一个数据

13.加密技术

1.RSA加密算法是一种非对称加密算法,是第一个能同时用于加密和数字签名的算法

2.SHA-1(安全散列算法1)是一种密码散列函数

3.MD5文本摘要算法

4.RC5 对称性加密算法

14.编译程序分析过程

1.词法分析阶段:识别一个个单词

2.语法分析阶段:确认整个输入串是否构成一个语法上正确的程序

3.语义分析阶段:主要对检察源程序进行类型分析和检查

4.中间代码生成:其任务是根据语义分析的输出生成中间代码

5.目标代码生成:编译器工作的最后一个阶段。把中间代码变换为特定机器上的

绝对指令代码、可重定位的指令代码或汇编指令代码

15.模块化设计

在结构化设计中,要遵循如下原则:

1.模块大小要适中

2.模块的扇入和扇出要合理

3.深度宽度适当

4.将相似功能的模块合并,会导致模块的聚合程度降低,可维护性下降

16.数据模型三要素

数据结构、数据操纵、完整性约束

17.有损链接

当分解ρ只有两组的时候

R1∩R2→R1-R2或R1∩R2→R2-R1

这两个条件只要满足任何一个就是无损连接,都不满足则为有损连接

18.保持函数依赖

如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(充分条件

(6条消息) 判断是否保持函数依赖_小龙Guo的博客-CSDN博客

19.可串行化

保证并发调度和可串行化,是为了确保事务的 隔离性和一致性

20.数据库故障

1.事务故障:单独进行一个事务出问题而不能执行下去,并不影响其他事务的执行

2.系统故障:故障导致的系统重启,当前运行的及刚提交的事务会导致数据库不一致

3.介质故障:数据库文件的储存介质如硬盘发生故障导致数据丢失

恢复方法:

事务故障和系统故障由DBMS来完成事务级别的恢复,根据日志文件对未完成的事务进行UNDO操作,对已完成的事务进行REDO操作,使数据库恢复到故障前的一致性状态;

介质故障需要DBA介入,装载备份文件后交由DBMS进行恢复

21.ER图逻辑转换

1.简单属性:原子的、不可再分的

2.符合属性:可细分为多个属性部分

3.单值属性:定义的属性对于一个特定的实体都只有单独的一个值

4.多值属性:一个属性可能对应一组值,如电话属性

5.NULL属性:当实体在某个属性上没有值或属性值未知时,使用NULL值

6.派生属性:可以从其他属性得来,如年龄属性

数据库中,实体之间的约束是通过参照完整性来实现的,用于规定数据表之间的数据(外键)的引用关系

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值