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

一、基本概念
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://www.hqwc.cn/news/671887.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14【PS作图】像素画尺寸大小

【背景介绍】本节介绍像素图多大合适 下图是160*144像素大小,有一个显示文本的显示器,还有一个有十几个键的键盘 像素画布尺寸 电脑16像素,但还有一个显示屏 下图为240*160 在场景素材,和对话素材中,用的是不同尺寸的头像,对话素材中的头像会更清楚,尺寸会更大 远处…

docker的commit命令使用制作镜像

docker run -it ubuntu 最基础的ubuntu启动后安装vim 的命令 apt-get update apt-get -y install vim docker commit -m"my_test_ubuntu" -a"za" 80977284a998 atljw/myubuntu:1.0 将本地镜像推送到阿里云 首先登录阿里云服务-控制台 记得一定要设定设…

APScheduler定时器使用【重写SQLAlchemyJobStore版】:django中使用apscheduler,使用mysql做存储后端

一、环境配置 python3.8.10 包: APScheduler3.10.4 Django3.2.7 djangorestframework3.15.1 SQLAlchemy2.0.29 PyMySQL1.1.0 项目目录情况 gs_scheduler 应用 commands : 主要用来自定义命令,python manage.py crontab schedulers&#…

(网络初识)

网络发展史 独立模式 在最开始计算机被发明出来,但网络还未普及的情况下,每个计算机之间都是相互独立的: 假设现在有一份数据需要处理,然后这份数据的处理又分给三个人分别处理。假设小松处理进行第一部分的处理,当小…

Chromium编译指南2024 Windows11篇-配置depot_tools工具(二)

前言 在《Chromium编译指南2024(一)》我们探讨了Chromium编译前的准备工作和Visual Studio安装。 接下来,我们将详细介绍如何下载、解压并配置depot_tools工具,以便顺利进行后续的开发工作。 1. 下载解压depot_tools 包 下载d…

【docker 】 push 镜像提示:denied: requested access to the resource is denied

往 Docker Registry &#xff08;私服&#xff09;push 镜像提示&#xff1a;denied: requested access to the resource is denied 镜像push 语法&#xff1a;docker push <registry-host>:<registry-port>/<repository>:<tag> docker push 192.16…

MWeb Pro for Mac:功能强大的Markdown博客编辑器

MWeb Pro for Mac是一款功能强大的Markdown博客编辑器&#xff0c;专为Mac用户设计&#xff0c;提供了一站式的博客写作和发布体验。这款软件不仅支持Markdown语法&#xff0c;还提供了丰富的编辑和排版功能&#xff0c;让用户能够轻松创建出精美的博客内容。 MWeb Pro的即时预…

本地的git仓库和远程仓库

文章目录 1. 远程创建仓库2. 关联远程和本地代码3. 推送本地分支到远程 1. 远程创建仓库 2. 关联远程和本地代码 上面创建完后会得到一个git仓库的链接&#xff0c;有SSH或者http的 http://gitlab.xxxxx.local:18080/xxxxx/dvr_avm.git ssh://gitgitlab.xxxxx.local:10022/xx…

AWS宣布推出Amazon Q :针对商业数据和软件开发的生成性AI助手

亚马逊网络服务&#xff08;AWS&#xff09;近日宣布推出了一项名为“Amazon Q”的新服务&#xff0c;旨在帮助企业利用生成性人工智能&#xff08;AI&#xff09;技术&#xff0c;优化工作流程和提升业务效率。这一创新平台的推出&#xff0c;标志着企业工作方式的又一次重大变…

sqlx执行案例

SQLx简介 SQLx是Rust语言中的一个异步SQL数据库连接库&#xff0c;它支持多种数据库&#xff0c;如PostgreSQL、MySQL和SQLite。SQLx提供了简单的API和异步执行查询的能力&#xff0c;使得Rust程序员可以轻松地与数据库交互1。 本章节以PostgreSQL为例。 目录结构 cargo.tom…

Linux 基础IO篇

1. C语言中的文件操作 1 #include<stdio.h>2 3 int main()4 {5 FILE* pf fopen("log.txt", "w");6 if(NULL pf)7 {8 perror("fopen");9 return 1; 10 }11 fprintf(pf, &quo…

Adobe系列软件安装

双击解压 先运行Creative_Cloud_Set_Up.exe。 完毕后&#xff0c;运行AdobeGenP.exe 先Path&#xff0c;选路径&#xff0c;如 C:\Program Files\Adobe 后Search 最后Patch。 关闭软件&#xff0c;修图&#xff01;