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

文章目录

  • 一、基本概念
  • 二、数据模型
    • (一)基本概念
    • (二)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,一经查实,立即删除!

相关文章

React hooks - forwardRef+useImperativeHandle

forwardRefuseImperativeHandle React.forwardRef用法useImperativeHandle用法第三个参数的用法 React.forwardRef与useImperativeHandle配合使用注意事项 React.forwardRef用法 1.创建一个 能够接受到ref属性的React 组件。 ref 用来获取实例&#xff0c;但函数组件不存在实例…

bugku 网络安全事件应急响应

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

hyperopt、optuna、gridsearch、randomsearch自动调参

开始使⽤hyperopt进⾏⾃动调参 algo partial(tpe.suggest, n_startup_jobs1) best fmin(lightgbm_factory, space, algoalgo, max_evals20, pass_expr_memo_ctrlNone) RMSE lightgbm_factory(best) print(‘best :’, best) print(‘best param after transform :’) argsD…

【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.…

“开源与闭源大模型:数据隐私、商业应用与社区参与的多维比较“

开源大模型和闭源大模型各有其优势和局限&#xff0c;它们在数据隐私、商业应用和社区参与方面的表现也各有不同。以下是对这三个方面进行的分析&#xff1a; 方向一&#xff1a;数据隐私 开源大模型&#xff1a; 优点&#xff1a;开源模型通常允许用户和开发者查看和修改代…

Excel中Lookup函数

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

一种处理checked exception的方法

一种处理checked exception的方法 在网上看到的一种处理异常的方法 public abstract class Try<V> {private Try() {}public abstract Boolean isSuccess();public abstract Boolean isFailure();public abstract void throwException();public abstract Throwable getMe…

【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 的…

Edge浏览器报错:Ref A Ref B: Ref C

今天发现微软Edge浏览器非常频繁的出现以下报错&#xff1a;Ref A: 0BF6B9E03845450C8E6A6C31006AD7B9 Ref B: BJ1EDGE1116 Ref C: 2024-05-23T12:41:30Z 通过搜索发现用如下问题解决&#xff1a; 1.打开Edge浏览器 2.进入设置选项 3.找到隐私、搜索和服务 4.关闭跟踪防护后面…

【数据结构】【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…

git clone 出现的问题

问题: core源码ref新API % git clone https://github.com/xxxx.git Cloning into core... remote: Enumerating objects: 58033, done. remote: Counting objects: 100% (1393/1393), done. remote: Compressing objects: 100% (750/750), done. error: 432 bytes of body are …

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

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

Nginx学习与使用记录

这里写自定义目录标题 定义域名&#xff08;本地&#xff09;Nginx的一下常用命令记录win系统使用 .bat来启动nginx配置 定义域名&#xff08;本地&#xff09; 本地定义域名不需要证书&#xff0c;直接更改hosts文件。 注意&#xff1a;在这个文件夹中是无法更改hosts文件的&…

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…