软件设计师备考笔记(九):数据库技术基础

文章目录

  • 一、基本概念
  • 二、数据模型
    • (一)基本概念
    • (二)E-R模型
    • (三)数据模型
  • 三、关系代数
    • (一)关系数据库的基本概念
    • (二)五种基本的关系代数运算
    • (三)扩展的关系代数运算
  • 四、关系数据库SQL语言简介
    • (一)SQL体系结构
    • (二)SQL数据定义
    • (三)SQL数据查询
    • (四)SQL数据更新
    • (五)SQL数据控制
  • 五、关系数据库的规范化
    • (一)函数依赖
    • (二)规范化
    • (三)模式分解及分解应具有的特性
  • 六、数据库的控制功能
    • (一)事务管理
    • (二)数据库的备份与恢复
    • (三)并发控制
    • (二)数据库的备份与恢复
    • (三)并发控制


一、基本概念

  1. 数据库系统(DBS):广义上讲,数据库系统是由数据库、硬件、软件和人员组成的。DBS包括DB和DBMS。

  2. 数据库(DB):统一管理的、长期储存在计算机内的、有组织的相关数据的集合。

  3. 数据库管理系统(DBMS):实现功能包括数据定义、数据库操作、数据库运行管理、数据的组织存储和管理、数据库的建立和维护、其他功能。

  4. 数据库系统的体系结构:集中式数据库系统、客户端/服务器结构、并行数据库系统、分布式数据库系统。

    a. 分布式数据库相关概念:分片透明(无需知道如何分块存储)、复制透明(无需知道如何复制)、位置透明(无需知道物理位置)、逻辑透明(无需知道局部使用哪种模型)。

    b. 分布式数据库特性:共享性(不同节点数据共享)、自治性(独立管理本地数据)、可用性(使用副本避免瘫痪)、分布性(数据不同场地存储。)

  5. 数据库的三级模式结构:采用“三级模式和两级映像”。

    a. 概念模式(模式):数据库中全部数据的逻辑结构和特征的描述,若若干个概念记录类型组成。

    b. 外模式(用户模式或子模式):用户与数据库系统的接口,用户用到的那部分数据的描述。

    c. 内模式(存储模式):数据物理结构和存储方式的描述,定义所有的内部记录类型、索引和文件组织方式等内容。

    d. 两级映像:包括模式/内模式映像(保证数据的物理独立性)和外模式/模式映像(保证数据的逻辑独立性)。


二、数据模型

(一)基本概念

  1. 最常见的数据模型分为:概念数据模型、基本数据模型。

  2. 数据模型的三要素:数据结构、数据操作、数据的约束条件。

(二)E-R模型

  1. 实体。

  2. 联系:一对一、一对多、多对多。

  3. 属性:简单属性和复合属性、单值属性和多值属性、NULL属性(无意义或不知道)、派生属性(能从其他属性得来)。

  4. 实体-联系方法。

  5. 扩充的E-R模型:

    a. 弱实体:一个实体的存在必须以另一个实体为前提。用双线矩形框表示。

    b. 特殊化:从普遍到特殊的过程。超类-子类关系模型使用特殊化圆圈和连线的一般方式表示。

在这里插入图片描述

(三)数据模型

  1. 层次模型:树结构。

  2. 网状模型:图结构。

  3. 关系模型:目前最常用的数据模型之一,采用表格结构表达实体集以及实体集之间的联系。 由关系数据结构、关系操作集合和关系完整性约束三部分组成。

  4. 面向对象模型。


三、关系代数

(一)关系数据库的基本概念

  1. 关系模型的一些基本术语。

    a. 关系:一个关系就是一张二维表,每个关系有一个关系名。

    b. 元组:表中的一行即为一个元组,对应存储文件中的一个记录值。

    c. 属性:表中的列称为属性,包括属性名和属性值。

    d. 域:属性的取值范围。

  2. 关系的相关名词。

    a. 码:能够唯一标识一个元组的属性或属性组合。

    b. 候选码(候选键):能够唯一标识一个元组的最小属性或属性组合。

    c. 主码(主键):在一个关系中可能有多个候选码,从中选择一个作为主码。

    d. 主属性:包含在任一候选码中的诸属性称为主属性,否则称为非主属性。

    e. 外码(外键):如果一个关系中的属性或属性组并非该关系的码但他们是另外一个关系的码,则称其为该关系的外码。

    f. 全码:关系模式中所有的属性为一组是这个关系模式的候选码,称为全码。

    g. 超码(超键):一个包含码的属性集称为超码。

  3. 关系模式:关系的描述称为关系模式。

    a. 可以形式化地表示为: R ( U , D , d o m , F ) R(U,D,dom,F) R(U,D,dom,F),其中R表示关系名,U是组成该关系式的属性名集合,D是属性的域,dom是属性向域的映像集合,F为属性间数据的依赖关系集合。

    b. 通常将关系模式简记为: R ( U ) R(U) R(U) R ( A 1 , A 2 , A 3 , … , A n ) R(A_1,A_2,A_3,…,A_n) R(A1,A2,A3,,An),其中 A 1 , A 2 , A 3 , … , A n A_1,A_2,A_3,…,A_n A1,A2,A3,,An为属性名或域名。

  4. 完整性约束:实体完整性、参照完整性、用户定义的完整性。

    a. 实体完整性:主属性不能取空值。

    b. 参照完整性:外码或者取空值或者取其作为主码所在关系中某个元组的主码值。

    c. 用户自定义完整性:针对某一具体的关系数据库的约束条件。

(二)五种基本的关系代数运算

  1. 并: R ∪ S = { t 丨 t ∈ R ∨ t ∈ S } R∪S=\{t丨t∈R∨t∈S\} RS={ttRtS}

  2. 差: R − S = { t 丨 t ∈ R ∧ t ∉ S } R-S=\{t丨t∈R∧t∉S\} RS={ttRt/S}

  3. 广义笛卡尔积: R × S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S } R×S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S\} R×S={tt=<tn,tm>tnRtmS}

  4. 投影: π A ( R ) = { t [ A ] 丨 t ∈ R } π_A(R)=\{t[A]丨t∈R\} πA(R)={t[A]tR}。(垂直选择若干属性列)

  5. 选择: σ F ( R ) = { t 丨 t ∈ R ∧ F ( t ) = T r u e } σ_F(R)=\{t丨t∈R∧F(t)=True\} σF(R)={ttRF(t)=True}。(水平选择满足条件的元组行)

(三)扩展的关系代数运算

  1. 交: R ∩ S = { t 丨 t ∈ R ∧ t ∈ S } 。 R∩S=\{t丨t∈R∧t∈S\}。 RS={ttRtS}

  2. 连接:分为θ连接、等值连接、自然连接。

    a. θ连接: R ⋈ X θ Y S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ t n [ X ] θ t m [ Y ] } R⋈_{XθY}S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S∧t^n[X]θt^m[Y]\} RYS={tt=<tn,tm>tnRtmStn[X]θtm[Y]}。(θ是比较运算符,θ连接可有笛卡尔积和选取运算导出)

    b. 等值连接: R ⋈ X = Y S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ t n [ X ] = t m [ Y ] } R⋈_{X=Y}S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S∧t^n[X]=t^m[Y]\} RX=YS={tt=<tn,tm>tnRtmStn[X]=tm[Y]}。(即θ为“=”时)

    c. 自然连接: R ⋈ S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ R . B 1 = S . B 1 ∧ R . B 2 = S . B 2 ∧ … ∧ R . B k = S . B k } R⋈S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S∧R.B_1=S.B_1∧R.B_2=S.B_2∧…∧R.B_k=S.B_k\} RS={tt=<tn,tm>tnRtmSR.B1=S.B1R.B2=S.B2R.Bk=S.Bk}。(比较分量必须是相同属性组且在结果集中将重复属性列去掉)

  3. 除: R ÷ S = { t n [ X ] 丨 t n ∈ R ∧ π y ( S ) ⊆ Y x } R÷S=\{t^n[X]丨t^n∈R∧π_y(S)⊆Y_x\} R÷S={tn[X]tnRπy(S)Yx}

  4. 广义投影: π F 1 , F 2 , . . . , F n ( R ) π_{F_1,F_2,...,F_n}(R) πF1,F2,...,Fn(R)。(允许在投影列表中使用算术运算)

  5. 外连接:分为左外连接、右外连接、全外连接。

    a. 左外连接: R = ⋈ S R=⋈S R=⋈S。(对于左侧关系中所有与右侧关系任意元组都不匹配的元组用空值null填充所有右侧关系的属性)

    b. 右外连接: R ⋈ = S R⋈=S R⋈=S。(对于右侧关系中所有与左侧关系任意元组都不匹配的元组用空值null填充所有左侧关系的属性)

    c. 全外连接: R = ⋈ = S R=⋈=S R=⋈=S。(完成左外连接和右外连接的操作)

在这里插入图片描述


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

(一)SQL体系结构

  1. SQL支持三级模式结构:视图对应外模式,基本表对应模式,存储文件对应内模式。

  2. SQL语言的分类。

    a. 数据定义(DDL):CREATE、DROP、ALERT。

    b. 数据查询(DQL):SELECT。

    c. 数据操纵(DML):INSERT、UPDATE、DELETE。

    d. 数据控制(DCL):GRANT、REVORK。

(二)SQL数据定义

  1. 创建表。
    在这里插入图片描述

  2. 修改和删除表。

    在这里插入图片描述

    在这里插入图片描述

  3. 索引建立与删除。

    在这里插入图片描述

    在这里插入图片描述

  4. 视图创建与删除。

    在这里插入图片描述

    在这里插入图片描述

(三)SQL数据查询

  1. SELECT基本结构

    在这里插入图片描述

  2. 简单查询。

  3. 连接查询。

  4. 子查询与聚集函数。

  5. 分组查询。

  6. 更名运算。

  7. 字符串操作。

  8. 视图的查询。

在这里插入图片描述

(四)SQL数据更新

  1. 插入。

    在这里插入图片描述

  2. 删除。

    在这里插入图片描述

  3. 修改。

    在这里插入图片描述

(五)SQL数据控制

  1. 授权。

    在这里插入图片描述

  2. 收回权限。

    在这里插入图片描述
    在这里插入图片描述


五、关系数据库的规范化

(一)函数依赖

  1. 函数依赖: X → Y X→Y XY

  2. 非平凡的函数依赖: X → Y X→Y XY,但 Y ⊈ X Y⊈X YX

  3. 平凡的函数依赖: X → Y X→Y XY,但 Y ⊆ X Y⊆X YX

  4. 完全函数依赖: X → F Y X \overset F \rightarrow Y XFY(X的任一真子集都不能决定Y)。

  5. 部分函数依赖: X → P Y X \overset P \rightarrow Y XPY(存在X的真子集能决定Y)。

  6. 传递依赖: X → 传递 Z X \overset {传递} \rightarrow Z X传递Z X → Y X→Y XY,但 Y ⊈ X Y⊈X YX Y → Z Y→Z YZ)。

  7. 函数依赖的公理系统:设关系模式 R ( U , F ) R(U,F) R(U,F)

    a. 合并规则:若 X → Y X→Y XY X → Z X→Z XZ,则 X → Y Z X→YZ XYZ F F F所蕴涵。

    b. 伪传递率:若 X → Y X→Y XY W Y → Z WY→Z WYZ,则 X W → Z XW→Z XWZ F F F所蕴涵。

    c. 分解规则:若 X → Y X→Y XY Z ⊆ Y Z⊆Y ZY,则 X → Z X→Z XZ F F F所蕴涵。

(二)规范化

  1. 范式之间, 5 N F ⊂ 4 N F ⊂ B C N F ⊂ 3 N F ⊂ 2 N F ⊂ 1 N F 5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF 5NF4NFBCNF3NF2NF1NF 成立。

  2. 1 N F 1NF 1NF(第一范式):关系模式R的每一个分量是不可再分的数据项。

    a. 可能存在部分函数依赖,不能排除数据冗余和更新异常等问题。

  3. 2 N F 2NF 2NF(第二范式):关系模式 R ∈ 1 N F R∈1NF R1NF ,且每一个非主属性完全依赖于码。

    a. 相较 1 N F 1NF 1NF 消除了部分函数依赖。

    b. 可能存在传递函数依赖,不能排除数据冗余和更新异常等问题(但能排除插入异常、删除异常和修改复杂等问题)。

  4. 3 N F 3NF 3NF(第三范式):关系模式 R ( U , F ) ∈ 1 N F R(U,F)∈1NF R(U,F)1NF 中不存在这样的码 X X X ,属性组 Y Y Y 及非主属性 Z ( Z ⊈ Y ) Z(Z⊈Y) Z(ZY) 使得 X → Y ( Y ↛ X ) X→Y(Y↛X) XY(YX) Y → Z Y→Z YZ 成立。

    a. 相较 2 N F 2NF 2NF 消除了非主属性对码的传递函数依赖。

    b. 产生冗余和异常的两个重要原因是部分函数依赖和传递依赖。

  5. B C N F BCNF BCNF(BC范式):关系模式 R ( U , F ) ∈ 1 N F R(U,F)∈1NF R(U,F)1NF X → Y X→Y XY Y ⊈ X Y⊈X YX X X X 必含有码。

    a. 排除了任何属性对码的传递依赖与部份依赖。

    b. 所有非主属性对每一个码都是完全函数依赖,所有主属性对每一个不含它的码也是完全函数依赖,没有任何属性完全依赖于非码的任何一组属性。

在这里插入图片描述

(三)模式分解及分解应具有的特性

  1. 分解。

  2. 无损连接。

  3. 保持函数依赖。


六、数据库的控制功能

(一)事务管理

  1. 事务。

  2. 事务定义语句:BEGIN TRANSACTION(事务开始)、COMMIT(事务提交)、ROLLBACK(事务回滚)。

  3. 事务的ACID性质。

    a. 原子性:要么都做,要么都不做。

    b. 一致性:数据库只包含成功事务提交的结果。

    c. 隔离性:多个事务并发执行时对其他事物都不可见。

    d. 持久性:一旦事务成功提交即使崩溃也将永久有效。

(二)数据库的备份与恢复

  1. 故障类型。

  2. 备份方法。

  3. 恢复。

  4. 数据库镜像。

(三)并发控制

  1. 并发操作带来的三类数据不一致性:丢失修改、不可重复读、读脏数据。

  2. 并发控制技术:封锁。

    a. 排它锁(X锁或写锁):只允许读取和修改,其他事物不能再加任何锁。

    b. 共享锁(S锁或读锁):只允许读取而不能修改,其他事物只能再加共享锁。
    b. 一致性:数据库只包含成功事务提交的结果。

    c. 隔离性:多个事务并发执行时对其他事物都不可见。

    d. 持久性:一旦事务成功提交即使崩溃也将永久有效。

(二)数据库的备份与恢复

  1. 故障类型。

  2. 备份方法。

  3. 恢复。

  4. 数据库镜像。

(三)并发控制

  1. 并发操作带来的三类数据不一致性:丢失修改、不可重复读、读脏数据。

  2. 并发控制技术:封锁。

    a. 排它锁(X锁或写锁):只允许读取和修改,其他事物不能再加任何锁。

    b. 共享锁(S锁或读锁):只允许读取而不能修改,其他事物只能再加共享锁。

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

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

相关文章

bugku 网络安全事件应急响应

开启靶场&#xff1a; 开始实验&#xff1a; 使用Xshell登录服务器&#xff0c;账号及密码如上图。 1、提交攻击者的IP地址 WP: 找到服务器日志路径&#xff0c;通常是在/var/log/&#xff0c;使用cd /var/log/&#xff0c;ls查看此路径下的文件. 找到nginx文件夹。 进入ng…

【Jenkins】Centos7安装Jenkins(环境:JDK11,tomcat9,maven3.8)

目录 Jenkins部署环境Maven安装1.上传安装包2.解压3.配置Maven环境变量4.使配置文件立即生效5.校验Maven安装6.Maven配置阿里云仓库7.Maven配置依赖下载位置 Git安装安装监测安装 JDK17安装1.查看旧版本JDK2.卸载旧版本JDK3.查看是否卸载干净4.创建java目录5.下载JDK11安装包6.…

Excel中Lookup函数

#Excel查找函数最常用的是Vlookup&#xff0c;而且是经常用其精确查找。Lookup函数的强大之处在于其“二分法”的原理。 LOOKUP&#xff08;查找值&#xff0c;查找区域&#xff08;Vector/Array&#xff09;&#xff0c;[返回结果区域]&#xff09; 为什么查找区域必须升序/…

【UE HTTP】“BlueprintHTTP Server - A Web Server for Unreal Engine”插件使用记录

1. 在商城中下载“BlueprintHTTP Server - A Web Server for Unreal Engine”插件 该插件的主要功能有如下3点&#xff1a; &#xff08;1&#xff09;监听客户端请求。 &#xff08;2&#xff09;可以将文件直接从Unreal Engine应用程序提供到Web。 &#xff08;3&#xff…

Antd Vue项目引入TailwindCss之后出现svg icon下移,布局中的问题解决方案

目录 1. 现象&#xff1a; 2. 原因分析&#xff1a; 3. 解决方案&#xff1a; 写法一&#xff1a;扩展Preflight 写法二&#xff1a; 4. 禁用 Preflight 1. 现象&#xff1a; Antd Vue项目引入TailwindCss之后出现svg icon下移&#xff0c;不能对齐显示的情况&#xff0…

k8s笔记 | Prometheus安装

kube-prometheus 基于github安装 选择对应的版本 这里选择 https://github.com/prometheus-operator/kube-prometheus/tree/release-0.11 下载修改为国内镜像源 image: quay.io 改为 quay.mirrors.ustc.edu.cn image: k8s.gcr.io 改为 lank8s.cn 创建 prometheus-ingres…

在AndroidStudio创建虚拟手机DUB-AI20

1.DUB-AI20介绍 DUB-AL20是华为畅享9全网通机型。 华为畅享9采用基于Android 8.1定制的EMUI 8.2系统&#xff0c;最大的亮点是配置了1300万AI双摄、4000mAh大电池以及AI人脸识别功能&#xff0c;支持熄屏快拍、笑脸抓拍、声控拍照、手势拍照等特色的拍照功能&#xff0c;支持移…

Windows安装mingw32/w64

1.下载 MinGW-w64 WinLibs - GCCMinGW-w64 compiler for Windows Releases niXman/mingw-builds-binaries (github.com) MinGW-w64、UCRT 和 MSVCRT 是 Windows 平台上常用的 C/C 运行库&#xff0c;它们有以下不同点&#xff1a; MinGW-w64&#xff1a;是一个基于 GCC 的…

【数据结构】【C语言】堆~动画超详细解读!

目录 1 什么是堆1.1 堆的逻辑结构和物理结构1.2 堆的访问1.3 堆为什么物理结构上要用数组?1.4 堆数据上的特点 2 堆的实现2.1 堆类型定义2.2 需要实现的接口2.3 初始化堆2.4 销毁堆2.5 堆判空2.6 交换函数2.7 向上调整(小堆)2.8 向下调整(小堆)2.9 堆插入2.10 堆删除2.11 //堆…

微服务项目收获和总结---第2,3天(分库分表思想,文章业务)

①分库分表思想 文章表一对一为什么要拆分&#xff1f;因为文章的内容会非常大&#xff0c;查询效率会很低&#xff0c;我们经常操作文章的基本信息&#xff0c;不会很经常查询文章内容。充分发挥高频数据的操作效率。 ②freemarker和minIO 由于文章内容数据量过大&#xff0c…

办公自动化-Python如何提取Word标题并保存到Excel中?

办公自动化-Python如何提取Word标题并保存到Excel中&#xff1f; 应用场景需求分析实现思路实现过程安装依赖库打开需求文件获取word中所有标题去除不需要的标题创建工作簿和工作表分割标题功能名称存入测试对象GN-TC需求标识符存入测试项标识存入需求标识符 完整源码实现效果学…

Vue02-黑马程序员学习笔记

一、今日学习目标 1.指令补充 指令修饰符v-bind对样式增强的操作v-model应用于其他表单元素 2.computed计算属性 基础语法计算属性vs方法计算属性的完整写法成绩案例 3.watch侦听器 基础写法完整写法 4.综合案例 &#xff08;演示&#xff09; 渲染 / 删除 / 修改数量 …

一个简约高级视差效果PR动态图文开场视频模板

这是一个高质量且易于定制的pr模板。具有模块化结构&#xff0c;可以轻松更改内容。包括视频教程&#xff0c;即使是新手小白也可以轻松套用模板制作视频。 主要特点&#xff1a; 水平&#xff08;19201080&#xff09;和垂直&#xff08;10801920&#xff09;分辨率&#xff…

c语言:利用随机函数产生20个[120, 834] 之间互不相等的随机数, 并利用选择排序法将其从小到大排序后输出(每行输出5个)

利用随机函数产生20个[120, 834] 之间互不相等的随机数&#xff0c; 并利用选择排序法将其从小到大排序后输出&#xff08;每行输出5个&#xff09; 代码如下&#xff1a; #include <stdio.h> #include <time.h> #include <stdlib.h> int shenchen(int a[…

三维模型相互转换(obj文件转inp文件)

三维模型文件根据其含义都是可以进行相互转换的&#xff0c;这里主要介绍obj文件转化为inp文件。 什么是inp文件&#xff1f; inp文件是以.inp为后缀的文本文件&#xff0c;它包括了模型的全部数据信息&#xff0c;ABAQUS求解器分析的对象是inp文件&#xff0c;软件生成的.ca…

AI智能体|扣子Coze“图像流”功能速览

大家好&#xff0c;我是无界生长。 AI智能体&#xff5c;扣子Coze“图像流”功能速览Coze提供易上手的图像处理工作流&#xff0c;包含智能生成、智能编辑和基础编辑三类节点&#xff0c;旨在通过AI技术简化图像处理过程。本文对扣子Coze“图像流”功能做了简单介绍&#xff0…

【qt】初识模型和视图

模型和视图 一.模型和视图的概念1.关系2.模型3.数据4.视图5.特点 二.文件系统模型1.那种数据&#xff1f;2.界面拖放3.创建模型4.模型设置数据5.视图设置模型6.模型索引7.模型操作数据①文件名②文件大小③文件类型④是否是目录⑤文件路径 三.字符串链表模型1.那种数据&#xf…

论Promise在前端江湖的地位及作用

系列文章&#xff1a; 先撸清楚&#xff1a;并发/并行、单线程/多线程、同步/异步 论Promise在前端江湖的地位及作用 前言 上篇文章阐述了并发/并行、单线程/多线程、同步/异步等概念&#xff0c;这篇将会分析Promise的江湖地位。 通过本篇文章&#xff0c;你将了解到&#x…

AI崛起,掌握它,开启智能新生活!

AI崛起&#xff0c;掌握它&#xff0c;开启智能新生活&#xff01; &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 博客首页 怒放吧德德 To记录领地 &…

Linux中vim的基本使用

目录 vim中的三种模式以及基本操作命令模式(默认模式)插入模式底行模式 命令模式下的命令底行模式下的命令 vim是Linux和Unix环境下最基本的文本编辑器&#xff0c;类似于windows上的记事本 vim和Visual studio相比&#xff0c;vim并不集成&#xff0c;vim只能用来写代码 VS把写…