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

news2024/11/20 9:34:23

文章目录

  • 一、基本概念
  • 二、数据模型
    • (一)基本概念
    • (二)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.coloradmin.cn/o/1683090.html

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

相关文章

2024 中青杯高校数学建模竞赛(B题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024 长三角高校数学建模竞赛&#xff08;A题&#xff09;的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有详尽的建模过…

sam代码简析

Segment Anything&#xff1a;建立了迄今为止最大的分割数据集&#xff0c;在1100万张图像上有超过1亿个掩码&#xff0c;模型的设计和训练是灵活的&#xff0c;其重要的特点是Zero-shot(零样本迁移性)转移到新的图像分布和任务&#xff0c;一个图像分割新的任务、模型和数据集…

Arthas,应用诊断利器!【送源码】

Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时&#xff0c;类加载信…

4---git命令详解第一部分

一、提交文件方面命令&#xff1a; 1.1第一步&#xff1a;将需要提交的文件放进暂存区&#xff1a; 添加单个文件到暂存区stage&#xff1a; git add 文件名 添加多个文件到暂存区&#xff1a; git add 文件名1 文件名2 ... 将目录下所有文件添加到暂存区&#xff1a; git…

基于BERT的医学影像报告语料库构建

大模型时代&#xff0c;任何行业&#xff0c;任何企业的数据治理未来将会以“语料库”的自动化构建为基石。因此这一系列精选的论文还是围绕在语料库的建设以及自动化的构建。 通读该系列的文章&#xff0c;犹如八仙过海&#xff0c;百花齐放。非结构的提取无外乎关注于非结构…

修改 ant design tour 漫游式导航的弹窗边框样式

一 说明 应项目要求&#xff0c;调整ant design tour 弹窗边框的样式。tour 原本样式是有遮罩层&#xff0c;因此没有边框看起来也不突兀。原图如下&#xff1a; 但是UI设计是取消遮罩层&#xff0c;并设置边框样式。当 取消 了遮罩层&#xff0c;没有设置边框样式的图片如下&a…

STM32开发学习——使用 Cortex-M3M4M7 故障异常原因与定位(三)

STM32开发学习——使用 Cortex-M3M4M7 故障异常原因与定位&#xff08;三&#xff09; 文章目录 STM32开发学习——使用 Cortex-M3M4M7 故障异常原因与定位&#xff08;三&#xff09;文档说明&#xff1a;官方参考文档线上链接&#xff08;可在线阅读与下载&#xff09;&#…

nssctf(Web刷题)

[SWPUCTF 2021 新生赛]gift_F12 打开题目是一个时间页面&#xff0c;不过看了一会儿发现没有什么用 直接F12打开网页源代码 CtrlF搜索flag 找到了flag NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft} [第五空间 2021]签到题 NSSCTF{welcometo5space} [SWPUCTF 2021 新生赛…

MySQL备份与日志练习

1、创建对mysql数据库test1的定时备份任务&#xff0c;频率是每周一的2点 create database test1;crond -e0 2 * * 1 mysqldump -u root -pAdmin123 --databases test1 > /opt/test1.sql2、test1中有t1、t2、t3三张表&#xff0c;要求只备份t2这张表 mysqldump -u root -pA…

JAVA 中 HTTP 基本认证(Basic Authentication)

目录 服务端这么做服务端告知客户端使用 Basic Authentication 方式进行认证服务端接收并处理客户端按照 Basic Authentication 方式发送的数据 客户端这么做如果客户端是浏览器如果客户端是 RestTemplat如果客户端是 HttpClient 其它参考 服务端这么做 服务端告知客户端使用 …

2.go环境配置与开发工具选择

go 环境配置 下载安装包 官网(https://go.dev/dl/) 下载地址(国内)(https://golang.google.cn/dl/) 根据自己的操作系统选择下载即可 下载后安装 记住地址 比如&#xff1a; D:\work\devtool\go 配置系统环境变量 PATH 指向 go 的安装 bin 目录 比如&#xff1a; D:\work…

如何将Docker容器打包并在其他服务器上运行

如何将Docker容器打包并在其他服务器上运行 我会幻想很多次我们的相遇&#xff0c;你穿着合身的T恤&#xff0c;一个素色的外套&#xff0c;搭配一条蓝色的牛仔裤&#xff0c;干净的像那天空中的云朵&#xff0c;而我&#xff0c;还是一个的傻傻的少年&#xff0c;我们相识而笑…

代码随想录-Day17

110. 平衡二叉树 这道题中的平衡二叉树的定义是&#xff1a;二叉树的每个节点的左右子树的高度差的绝对值不超过 111&#xff0c;则二叉树是平衡二叉树。根据定义&#xff0c;一棵二叉树是平衡二叉树&#xff0c;当且仅当其所有子树也都是平衡二叉树&#xff0c;因此可以使用递…

WPF水流动画(使用转换器模拟逻辑门控制水流信号)

前言 在使用WPF绘制流程图并模拟水流动画时&#xff0c;往往既需要控制阀泵的开合&#xff0c;又要控制动画启停。倘若能够将阀泵的开合与动画播放建立逻辑关系&#xff0c;这样就能够让业务代码“专心”地去控制阀泵开关&#xff0c;而不需要处理界面的展示。 动画示例 说明…

2024-5-4-从0到1手写配置中心Config之基于h2的config-server

添加依赖 新建的web工程中添加h2的依赖 添加h2的配置 设置数据源和密码设置初始化sql语句打开h2的控制台 初始化语句创建一个config表&#xff0c;保存服务配置信息。 完成CRUD接口 controller类 mapper接口 测试 在web控制台可以看到sql已经初始化完成&#xff0c;crud接口…

Postman进阶功能-Mock服务与监控

大家好&#xff0c;前面跟大家分享一些关于 Postman 的进阶功能&#xff0c;当我们深入探索 Postman 的进阶功能时&#xff0c;Mock 服务与监控这两个重要方面便跃然眼前。 首先&#xff0c;Mock 服务为我们提供了一种灵活便捷的方式&#xff0c;让我们在某些实际接口尚未准备好…

Transformer系列专题(二)——multi-headed多头注意力机制

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、什么是multi-headed&#xff08;多头注意力机制&#xff09;二、multi-headed三、multi-headed结果四、堆叠多层总结 前言 在实践中&#xff0c;当给定相同…

四川古力科技抖音小店,创新科技点亮购物新体验

在这个数字化浪潮汹涌的时代&#xff0c;四川古力科技以其前瞻性的战略眼光和创新能力&#xff0c;闪耀于抖音小店这片电商新蓝海&#xff0c;开启了未来购物的新纪元。作为一家集技术研发、产品创新、市场营销于一体的科技型企业&#xff0c;古力科技不仅为消费者带来了前所未…

Android Studio 与 Gradle 及插件版本兼容性

Android Studio 开始新项目时&#xff0c;会自动创建其中部分文件&#xff0c;并为其填充合理的默认值。 项目文件结构布局&#xff1a; 一、Android Gradle 及插件作用&#xff1a; Android Studio 构建系统以 Gradle 为基础&#xff0c;并且 Android Gradle 插件 (AGP) 添加…

游戏行业 2024 Q1报告 | 国内同比上升7.6%,海外收入同比环比双增长,码住!

作为中国音像与数字出版协会主管的中国游戏产业研究院的战略合作伙伴&#xff0c;伽马数据发布了《2024年1—3月中国游戏产业季度报告》。 数据显示&#xff0c; 2024年1—3月&#xff0c;中国游戏市场实际销售收入726.38亿元&#xff0c;同比增长7.60%&#xff0c;主要受移动游…