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

一、基本概念
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分布式数据库系统

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

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

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

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

七、典型例题



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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python基础---面向对象相关知识

面向对象 可以把数据以及功能打包为一个整体 类: 名称属性(数据)方法 class Person:def __init__(self, name, age):self.age ageself.name namedef print_info:print(self.name, self.age)定义 #经典类 class Dog1:pass# 新式类 class Dog2(object):pass在python3里面这…

LeetCode-741. 摘樱桃【数组 动态规划 矩阵】

LeetCode-741. 摘樱桃【数组 动态规划 矩阵】 题目描述:解题思路一:动态规划,定推初遍举。解题思路二:倒序循环解题思路三:0 题目描述: 给你一个 n x n 的网格 grid ,代表一块樱桃地&#xff0…

VMware虚拟机中Linux系统奔溃,怎么办?

一大早启动虚拟机准备开始工作,却遭遇到Linux系统崩溃,屏幕上显示以下错误提示: 这段文本看起来是来自系统引导时的日志信息,提到了一些关于文件系统的问题和建议。根据这段信息,似乎 /dev/sda1 分区中的文件系统存在一…

红日靶场ATTCK 1通关攻略

环境 拓扑图 VM1 web服务器 win7(192.168.22.129,10.10.10.140) VM2 win2003(10.10.10.135) VM3 DC win2008(10.10.10.138) 环境搭建 win7: 设置内网两张网卡,开启…

SeetaFace6人脸检测C++代码实现Demo

SeetaFace6包含人脸识别的基本能力:人脸检测、关键点定位、人脸识别,同时增加了活体检测、质量评估、年龄性别估计,并且顺应实际应用需求,开放口罩检测以及口罩佩戴场景下的人脸识别模型。 官网地址:https://github.co…

dockerk8s常用知识点

1、什么是docker 容器化和虚拟化对比 ▪开源的应用容器引擎,基于 Go 语言开发 ▪容器是完全使用沙箱机制,容器开销极低 ▪Docker就是容器化技术的代名词 ▪Docker也具备一定虚拟化职能 docker三大核心: Docker Engine: 提供了一个可以用来运行和管…

代码+视频,R语言绘制生存分析模型的时间依赖(相关)性roc曲线和时间依赖(相关)性cindex曲线

ROC曲线分析是用于评估一个因素预测能力的手段,是可以用于连续型变量分组的方法。在生存分析中,疾病状态和因素取值均会随时间发生变化。而标准的ROC曲线分析将个体的疾病状态和因素取值视作固定值,未将时间因素考虑在分析之中。在这种情况下…

edge使用心得

1. **性能提升**:基于Chromium的Edge浏览器在速度和响应方面有显著提升,特别是在处理复杂的网页结构和执行JavaScript代码时。这意味着无论是日常浏览还是运行Web应用程序,都能享受流畅的用户体验。 2. **更好的兼容性**:由于与G…

大模型最新消息

最新消息如下: 大语言模型服务的多样化:互联网上出现了许多免费的大语言模型服务,如OpenAI的ChatGPT、Google的Gemini、Anthropic的Claude、Meta的Llama等。这些服务的推出使得大语言模型的应用更加广泛和便捷。软银和苹果的AI新动向&#x…

​​【收录 Hello 算法】3.3 数字编码

目录 3.3 数字编码 3.3.1 原码、反码和补码 3.3.2 浮点数编码 3.3 数字编码 Tip 在本书中,标题带有 * 符号的是选读章节。如果你时间有限或感到理解困难,可以先跳过,等学完必读章节后再单独攻克。 3.3.1 原码、反码和补码 在…

迅睿CMS中实现关键词搜索高亮

在迅睿CMS系统中实现关键词搜索高亮是提升用户体验和搜索效果的重要手段。当用户搜索某个关键词时,将搜索结果中的关键词高亮显示,可以帮助用户更快速地定位到所需信息。 关键词高亮的实现 在迅睿CMS中,你可以使用内置的dr_keyword_highlig…

Study--Oracle-01-单实例部署Oracle11G-R2

Oracle版本发布介绍 Oracle 19c和12c和11g功能区别_数据库_oracle_支持 一、CentOS 7 环境准备 1、软件准备 操作系统:CentOS 7 数据库版本: Oracle11g R2 2、操作系统环境配置 关闭selinux ,编辑 /etc/selinux/config文件,设置SELINU…

C语言例题34、反向输出字符串(递归方式)

题目要求&#xff1a;输入5个字符后&#xff0c;使用递归方式逆序输出 #include <stdio.h>void reverse(int num) {char cur_char;if (num 1) {cur_char getchar();printf("逆序输出为&#xff1a;");putchar(cur_char);} else {cur_char getchar();revers…

宏电全栈式IoT赋能供排水智能监测,护航城市生命线

城市供水、排水系统是维系城市正常运行、满足群众生产生活需要的重要基础设施&#xff0c;是城市的“生命线”。随着城市化进程加快&#xff0c;城市规模不断扩大&#xff0c;地下管线增长迅速&#xff0c;城市“生命线安全”的监管日益面临挑战。 宏电作为物联网行业的领航者…

软件测试与管理:黑盒测试-等价类划分法和 边界值分析法

知识思维导图&#xff1a; 例题1&#xff1a;日期检查功能的等价类划分 设有一个档案管理系统&#xff0c;要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月&#xff0c;并规定日期由6位数字字符组成&#xff0c;前4位表示年&#xff0c;后2位表示月。现用等…

后台启动HIVE的JDBC连接

后台启动HIVE的JDBC连接 生活就像一杯咖啡&#xff0c;有时苦涩&#xff0c;有时香甜&#xff0c;但都是值得品味的经历。无论遇到什么挑战&#xff0c;记住在每一天的开始&#xff0c;你都有机会给自己倒上一杯清新的力量&#xff0c;为心灵添一抹温暖。勇敢地面对生活的苦与甜…

10000 字详细讲解 Spring 中常用注解及其使用

如下图京东购物页面&#xff0c;当我们选择点击访问某一类商品时&#xff0c;就会向后端发起 HTTP 请求&#xff0c;当后端收到请求时&#xff0c;就会找到对应的代码逻辑对请求进行处理&#xff0c;那么&#xff0c;后端是如何来查找处理请求相对应的代码呢&#xff1f;答案就…

C++使用单链表实现一元多项式的加,乘操作

相邀再次喝酒 待 葡萄成熟透 但是命运入面 每个邂逅 一起走到了 某个路口 是敌与是友 各自也没有自由 位置变了 各有队友 首先&#xff0c;按照惯例&#xff0c;十分欢迎大家边听歌边观看本博客&#xff01;&#xff01; 最佳损友 - 陈奕迅 - 单曲 - 网易云音乐 (163.com) 一…

leetcode295. 数据流的中位数

class MedianFinder {//A为小根堆&#xff0c;B为大根堆List<Integer> A,B;public MedianFinder() {A new ArrayList<Integer>();B new ArrayList<Integer>();}public void addNum(int num) {int m A.size(),n B.size();if(m n){insert(B,num);int top …

开源模型 Prometheus 2 能够评估其他语言模型,其效果几乎与 GPT-4 相当

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…