软考中级-软件设计师(九)数据库技术基础 考点最精简

一、基本概念
1.1数据库与数据库系统

数据:是数据库中存储的基本对象,是描述事物的符号记录

数据库(DataBase,DB):是长期存储在计算机内、有组织、可共享的大量数据集合

数据库系统(DataBase System,DBS):包含数据库的一个系统(DB,硬件,软件,人员)

1.2数据库管理系统的功能

数据库管理系统(DataBase Management System,DBSM):属于DBS中的一个软件

主要实现对共享数据有效的组织、管理和存储,故DBSM具有以下六方面功能:数据定义,数据库操作,数据库运行管理,数据的组织、存储和管理,数据库的建立和维护,其他功能

1.3数据库管理系统的特征及分类

·DBSM的特征:数据结构化且统一管理,有较高的数据独立性,数据的控制功能(数据库的安全性、完整性、并发控制、故障恢复)

·DBSM分类:通常可分为三类:关系数据库系统、面向对象的数据库系统、对象关系数据库系统

1.4数据库系统的体系结构

·集中式数据库系统:不仅数据是集中的,数据的管理也是集中的

·客户端/服务器结构:一个处理机的请求被传送到另一个处理机上执行

·并行数据库系统:多个物理上连在一起的CPU,分为共享式和无共享式

·分布式数据库系统:包括物理上分布、逻辑上集中的分布式数据库结构和物理上分布、逻辑上分布的数据库结构两种

1.5数据库的三级模式

数据库采用“三级模式-两级映像”

这种设计模式能保证数据发生变化时,程序不需修改

模式/内模式映像:保证了数据库的数据有较高的物理独立性

外模式/模式映像:保证了数据库的数据有较高的逻辑独立性

1.6数据库设计

需求分析:产出数据流图、数据字典、需求说明书

概念结构设计:设计E-R图

逻辑结构设计:将E-R图转换成关系模式

物理设计:生成物理数据库

二、数据模型
2.1基本概念

模型就是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。

常用的数据模型分为概念数据模型和基本数据类型

数据模型的三要素是:数据结构、数据操作和数据的约束条件

2.2E-R模型

实体-联系模型(E-R模型):只能说明实体间的语义联系,还不能进一步详细说明数据结构。在解决实际问题时,通常先设计一个E-R模型,再将其转换成计算机能接受的数据

弱实体:对另一些实体有很强的依赖关系,即此类实体必须以另一类实体存在为前提

2.3数据模型

层次模型:采用树形结构表示数据与数据间的联系

网状模型:是层次模型的特例,比层次模型更具有普遍性

关系模型:采用关系模型作为数据库的组织方式

面向对象模型:采用面向对象的方法来设计数据库

软考中级主要考察关系模型,在此重点讲解

2.4关系模型

关系模型中用表格结构表达实体集以及其实体集之间的关系

三、关系代数
3.1关系数据库的基本概念

1)属性和域:属性是描述一个事物常取的若干特征,每个属性的取值范围对应一个值的集合;每个属性的取值范围对应一个值的集合,称为该属性的域

2)笛卡尔积与关系:笛卡尔积是两个或多个集合中所有可能的有序对集合;关系是笛卡尔积中选取出来的一部分有序对

3)关系数据库模式:关系数据库的值是这些关系在某一时刻对应的关系的集合

4)完整性约束:提供了一种手段来保证当授权用户对数据库做修改时不会破坏数据的一致性。关系完整性分为三类:实体完整性(主属性不能取空值)、参照完整性(一个关系中的外键值必须是在他参照的另一个关系中的主键能找到的值)、用户定义完整性(必须符合实际应用意义,如年龄大于18等)

5)关系运算

3.2五种基本的关系代数运算

3.3扩展关系的代数运算


典型例题:假设我们有两个关系:
Student(SNO, SNAME, AGE, SDEPT)
SNO:学号
SNAME:学生姓名
AGE:学生年龄
SDEPT:学生所在系别
Course(CNO, CNAME, CPNO, CREDIT)
CNO:课程号
CNAME:课程名称
CPNO:先修课程号(如果该课程没有先修课程,则为空)
CREDIT:学分
现在,我们要查询所有“计算机科学”系的学生选修的“数据结构”课程的先修课程号。
关系代数运算如下:
选择计算机科学系的学生:
σ_SDEPT='计算机科学'(Student)
选择“数据结构”课程:
σ_CNAME='数据结构'(Course)
找出选修了“数据结构”课程的学生:
这里我们需要将Student关系和选课关系(假设为SC,包含SNO和CNO两个字段)进行连接,并且与“数据结构”课程进行连接。
Student ⨝_SNO=SNO SC ⨝_CNO=CNO σ_CNAME='数据结构'(Course)
找出这些学生的先修课程号:
由于选课关系SC中不包含先修课程号,我们需要再次与Course关系进行连接,通过CNO和CPNO字段。
(Student ⨝_SNO=SNO SC ⨝_CNO=CNO σ_CNAME='数据结构'(Course)) ⨝_CNO=CPNO Course
投影出先修课程号:
π_CPNO((Student ⨝_SNO=SNO SC ⨝_CNO=CNO σ_CNAME='数据结构'(Course)) ⨝_CNO=CPNO Course)

四、关系数据库SQL语言简介
4.1SQL语言

语法关键字不区分大小写

DB查询:select...from(where);

分组查询:group by,select sno.avg(score)from student group by sno having(avg(score)>60)

更名:select sno as "学号" from t1;

插入:insert into...values();

删除:delete from...where

修改:update from...where

排序:order by

DISTINCT:过滤重复选项,只保留最后一条

UNION:取或运算

INTERSECT:与

MAX、MIN、AVG...

4.2SQL访问控制

五、关系数据库的规范化
5.1函数依赖

函数依赖描述了一个属性或属性集合的值对另一个属性或属性集合的值的依赖性。简单来说,如果某个属性集(或称为决定因素)的值能够唯一确定另一个属性集(或称为依赖因素)的值,那么我们就说后者依赖于前者。

具体来说,函数依赖可以分为以下几种类型:
·平凡函数依赖:当关系中属性集合Y是属性集合X的子集时(Y⊆X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
·非平凡函数依赖:当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
·完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
·部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
·传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

5.2规范化

1)第一范式:关系中每一个分量必须是一个不可分割的数据项,即表中不允许有小表的存在

2)第二范式:关系R属于1NF,且每一个非主属性完全依赖于任何一个候选码,则R属于2NF,即在1NF的基础上,每一个非主属性不会依赖复合主键中的某一个列

3)第三范式:在满足1NF的基础上,表中不存在非主属性对码的传递依赖

4)BC范式:在3NF的基础上进一步消除主属性对码的部分函数依赖和传递依赖,即每一种情况下,每一个依赖左边决定因素都必然包含候选键

候选键和候选关键字判断:1.从未在右边出现过的属性必然是;2.以该属性扩展,看能否遍历所有属性,无法遍历的是

判断范式:每个属性都不可再分——1NF;满足1NF基础上,非主属性完全依赖主键而不是主键的某个子集——2NF;满足1NF的基础上,没有传递依赖——3NF。

5.3模式分解及分解具有的特性

1)保持函数依赖分解:保持原来的依赖集不变,且消除冗余(如递归)

    eg.F(A->B,B->C,A->C) =>R1(A,B) R2(B,C)

2)无损连接:分解后的关系模式能还原出原关系模式即无损

    

保持函数依赖分解的例子:
假设我们有一个关系模式R,其属性集U={A, B, C, D, E},函数依赖集F={A→B, A→C, B→D, C→E}。我们可以按照以下步骤将其分解为保持函数依赖的子关系模式:
识别候选键:在这个例子中,A是唯一的候选键,因为它能唯一确定其他所有属性。
应用保持函数依赖的分解规则:将每个函数依赖的左边(即决定因素)作为新关系模式的键,右边(即被决定因素)作为新关系模式的属性。于是我们得到以下子关系模式:
R1(A, B, C):基于A→B和A→C
R2(B, D):基于B→D
R3(C, E):基于C→E
验证保持函数依赖:我们可以看到,在分解后的每个子关系模式中,函数依赖都得到了保持。例如,在R1中,A→B和A→C都成立;在R2中,B→D成立;在R3中,C→E成立。
无损连接的例子:
假设我们有一个关系模式R(U, F),其中U={A, B, C, D},F={A→B, B→C, C→D}。我们将其分解为两个子关系模式R1(A, B)和R2(B, C, D)。现在我们要验证这个分解是否是无损的。
计算R1和R2的交集和差集:R1∩R2 = {B},R1 - R2 = {A},R2 - R1 = {C, D}。
检查是否存在函数依赖使得交集决定差集:在这个例子中,B→C和B→D都存在于F中,因此B(即R1∩R2)可以决定R2 - R1(即{C, D})。这满足了无损连接的条件。

六、数据库的控制功能
6.1事务管理

事务是一个操作序列,这些操作“要么都做,要么都不做”,是数据库环境中不可分割的逻辑工作单位。在SQL语言中,事务定义的语句有以下三条:事务开始、事务提交、事务回滚

事务具有(操作)原子性、(数据)一致性、(执行)隔离性、(改变)持久性

6.2数据库的备份与恢复

故障类型:事务内部故障、系统故障、介质故障、计算机病毒

备份方法:静态转储和动态转储、海量转储和增量转储、日志文件

恢复:反向扫描文件日志,对事务的更新操作执行逆操作,继续反向扫描,直到事务的开始标志

6.3并发操作

并发操作带来的问题:丢失修改、不可重复读、读脏数据

并发控制技术:1)封锁:排他锁(写锁)、共享锁(读锁)

2)三级封锁协议:一级(解决丢失更新的问题)、二级(解决丢失更新、读脏数据的问题)、三级(解决全部问题)

6.4分布式数据库系统

·分片透明:用户或应用程序不需要知道逻辑上访问的表具体怎么分块存储

·逻辑透明:用户或应用程序无需知道局部使用的哪种数据,局部数据透明

·复制透明:不关心数据库在网络中各个节点复制情况

·位置透明:不需要知道存放数据的物理位置 

七、典型例题



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3029652.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Hive Windows Functions 窗口函数

Hive Windows Functions 窗口函数 在 Hive 中,窗口函数(Window Functions)用于在查询结果中执行聚合、排序和分析操作,而无需将数据分组。窗口函数允许你在查询结果中的一组行上执行计算,而不会改变原始数据的行数&am…

基于OpenCV对胸部CT图像的预处理

1 . 传作灵感 胸部CT中所包含的噪声比较多,基于OpenCV简单的做一些处理,降低后续模型训练的难度。 2. 图像的合成 在语义分割任务中有的时候需要将原图(imput)和标注数据(groudtruth)合成一幅图像&#x…

zip file is empty

从下找到报错的jar包。展开这个jar包,看下是否正常,正常的是能够展开看到一些文件夹以及里面的类,如下:如果不正常,就删除这个jar包,同时找到这个jar包在本地maven仓库的地址,也删除掉&#xff…

热爱电子值得做的电子制作实验

加我zkhengyang,进嵌入式音频系统研究开发交流答疑群(课题组) AM/FM收音机散件制作,磁带随声听散件,黑白电视机散件制作,功放散件制作,闪光灯散件制作,声控灯散件,等等,可提高动手能…

Ubuntu系统下编译OpenCV4.8源码

OpenCV4.8源码编译与安装 其实很简单,只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。 01下载OpenCV4.8源码包 在Ubunt…

Oracle -在线回缩表

conn scott/tiger DROP TABLE EMP1 PURGE; CREATE TABLE EMP1 AS SELECT * FROM EMP; alter table emp1 enable row movement; -- 启动回缩特性 insert into emp1 select * from emp1; / / commit; -- 增加到14000行 -- 分析表的结构 analyze table emp1 comput…

如何编译不同目录下的两个文件

1.直接编译 2.打包成动静态库进行链接

EasyExcel处理Mysql百万数据的导入导出案例,秒级效率,拿来即用!

一、写在开头 今天终于更新新专栏 《EfficientFarm》 的第二篇博文啦,本文主要来记录一下对于EasyExcel的高效应用,包括对MySQL数据库百万级数据量的导入与导出操作,以及性能的优化(争取做到秒级性能!)。 …

【Spring Boot 源码学习】深入 ApplicationArguments 接口及其默认实现

《Spring Boot 源码学习系列》 深入 ApplicationArguments 接口及其默认实现 一、引言二、主要内容2.1 ApplicationArguments2.2 DefaultApplicationArguments2.2.1 成员变量2.2.2 构造方法2.2.3 成员方法 2.3 SimpleCommandLinePropertySource2.4 应用场景2.4.1 准备和配置应用…

ETL免费工具kettle(PDI),安装和配置

起源: Kettle最早是一个开源的ETL工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。在2006年,Pentaho公司收购了Kettle项目,原Kettle项目发起人Matt Casters加入了Pentaho团队,成…

暴力数据结构之栈与队列(队列详解)

1.队列的定义 队列是一种特殊的线性表,它遵循先进先出(FIFO)的原则。在队列中,只允许在表的一端进行插入操作(队尾),而在另一端进行删除操作(队头)。这种数据结构确保了最…

第十一篇:操作系统新纪元:智能融合、量子跃迁与虚拟现实的交响曲

操作系统新纪元:智能融合、量子跃迁与虚拟现实的交响曲 1 引言 在数字化的浪潮中,操作系统如同一位智慧的舵手,引领着信息技术的航船穿越波涛汹涌的海洋。随着人工智能、物联网、量子计算等前沿技术的蓬勃发展,操作系统正站在一个…

98、技巧-颜色分类

思路 这道题的思路是什么,首先典型荷兰国旗问题: 该问题的关键在于我们要将所有的0放到数组的前部,所有的1放在中间,所有的2放在后部。这可以通过使用两个指针,一个指向数组开头的“0”的最后一个位置,另…

计算图与自动微分

计算图与自动微分 一、自动梯度计算1.1 数值微分(Numerical Differentiation)1.2 符号微分(Symbolic Differentiation)1.3 自动微分(Automatic Differentiation,AD)1.3.1 计算图1.3.2 正向传播1…

postman常用功能超全使用教程

Postman 使用 一、Postman 简介 Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求(如:get/post/delete/put…等等),将请求数据发送至服务端,获取对应的响应结果。 二、Postman 功能简介 三、Postman 下载安装 Post…

Android GPU渲染SurfaceFlinger合成RenderThread的dequeueBuffer/queueBuffer与fence机制(2)

Android GPU渲染SurfaceFlinger合成RenderThread的dequeueBuffer/queueBuffer与fence机制(2) 计算fps帧率 用 adb shell dumpsys SurfaceFlinger --list 查询当前的SurfaceView,然后有好多行,再把要查询的行内容完整的传给 ad…

2024C题生物质和煤共热解问题的研究 详细思路

背景 随着全球能源需求的不断增长和对可再生能源的追求,生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源,源自植物和动物的有机物质,而煤则是一种化石燃料。** 在共热解过程中,生物质和煤在高温和缺氧…

Java入门基础学习笔记14——数据类型转换

类型转换: 1、存在某种类型的变量赋值给另一种类型的变量; 2、存在不同类型的数据一起运算。 自动类型转换: 类型范围小的变量,可以直接赋值给类型范围大的变量。 byte类型赋值给int类型,就是自动类型转换。 pack…

【AMBA Bus ACE 总线 8 -- ICache maintenance】

请阅读【AMBA Bus ACE 总线与Cache 专栏 】 欢迎学习:【嵌入式开发学习必备专栏】 文章目录 ACE ICache maintenanceACE ICache maintenance 图 1-1 当一个OS run 多个cpu的时候,根据调度算法的不同,OS 可以根据调度算法的不同分别 run 在某个具体的CPU上,因此,它们会有…

非模块化 Vue 开发的 bus 总线通信

个人感觉,JavaScript 非模块开发更适合新人上手,不需要安装配置一大堆软件环境,不需要编译,适合于中小项目开发,只需要一个代码编辑器即可开发,例如 vsCode。网页 html 文件通过 script 标签引入 JavaScrip…