软考数据库部分 ---- (概念数据库模型,三级模式,两级映像,事物管理)
文章目录
- 一、概念数据库模型
- 二、结构数据库模型
- 三、三级模式
- 四、两级映像
- 五、关系模式基本术语
- 六、关系模式
- 七、关系的数学定义
- 八、数据定义语言
- 九、SQL访问控制
- 十、视图
- 十一、索引
- 十二、关系模式
- 十三、范式
- 十四、数据库设计
- 十五、事物管理(ACID)
- 十六、数据库的备份
- 十七、锁
- 十八、分布式数据库
一、概念数据库模型
- 实体:客观存在并可以相互区别的事物称为实体,如一个单位、一个职工、一个部门或一个项目等。
- 属性:描述实体的特性称为属性,一个实体可以由若干个属性来刻画,如学生实体用若干属性(学号、姓名、性别、出生日期和班号)来描述。
- 码:唯一标识实体的属性集称为码,例如学号是学生实体的码。
- 域:属性的取值范围称为该属性的域,如性别域为(男,女)。联系:实体(型)之间的对应关系称为联系。
- 联系分为两种,一种是实体内部各属性之间的联系;另一种是实体之间的联系。
– 一对一联系(1:1)
– 一对多联系(1:n)
– 多对多联系(m:n) - 实体–联系方法表示的概念数据模型为E-R图
–实体是矩形,属性是椭圆形,联系是菱形
二、结构数据库模型
结构数据模型主要包括:层次、网状、关系和面向对象模型
- 层次,树结构,一对多
- 网状,图结构,多对多
- 关系模型,二维表
三、三级模式
- 概念模式(模式),基本表
- 外模式(子模式/用户模式),视图
- 内模式(存储模式),存储文件
四、两级映像
- 模式/内模式映像。物理独立性
- 外模式/模式映像。逻辑独立性
五、关系模式基本术语
- 关系模式基本术语
- 关系:一个关系就是一张二维
- 元组:表中的一行即为一个元组
- 属性:表中的列称为属性,每一列有一个属性名。
- 域:属性的取值范围,即不同元组对同一个属性的值所限定的范围。
- 关系模式:对关系的描述称为关系模式
- 码/键
- 候选码(或候选键):属性或属性组合,其值能够唯一地标识一个元组
- 主码(或主键):在一个关系中可能有多个候选码,从中选择一个作为主码
- 主属性:包含在任何候选码中诸属性称为主属性,不包含在任何候选码中诸属性称为非码属性。
- 外码(或外键):如果一个关系中的属性或属性组并非该关系的码,但它们是另外一个关系的码,则称其为该关系的外码。
- 全码:关系模式的所有属性组是这个关系模式的候选码,称为全码。
- 超码(超键):一个包含码的属性集称为超码,例如学号是码,则(学号,姓名)就是一个超码。
六、关系模式
- 关系的描述称为关系模式,它可以形式化地表示为:R(U,D,dom,F)
- 关系模型由关系数据结构(一张二维表)、关系操作集合(关系操作有:选择、投影、连接、除、并、交、差等查询操作和增加、删除操作等。)和关系完整性约束三部分组成。
- 关系完整性约束
- 实体完整性,主键不能为空
- 参照完整性,外键
- 用户定义的完整性
七、关系的数学定义
-
交,并,差,笛卡尔积
例如:D₁{0,1},D₂=fa,b,c}
则:笛卡尔积D₁ X D₂={(0,a),(0,b),(0,c),(1,a),(1,b),(1,c);
-
投影
-
选择
-
连接
连接分为θ连接、等值连接和自然连接3种。
-
外连接
外连接运算有3种,即左外连接、右外连接和全外连接。
- 左外连接。取出左侧关系表中所有与右侧关系中任一元组都不匹配的元组,用空值 nul 充填所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。
- 右外连接。取出右侧关系表中所有与左侧关系中任一元组都不匹配的元组,用空值 nul 填充所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中。
- 全外连接。完成左外连接和右外连接的操作。即填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,并填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的新元组加入自然连接的结果中。
- 自然连接
自然连接是除去重复属性的等值连接,它是连接运算的一个特例,是最常用的连接运算。 - 查询效率
八、数据定义语言
- SQL Server数据库的体系结构是由视图、基本表和存储文件三级结构组成。
- SQL语言的分类
- DDL(数据定义语言):在数据库系统中,每一个数据库、数据库中的表、视图和索引等都是数据库对象。要建立和删除一个数据库对象都可以通过 SQL语言来完成。DDL包括CREATE、ALTER和 DROP等。
- DML(数据操纵语言):DML 是指用来添加、修改和删除数据库中数据的语句,包括 INSERT(插入)、DELETE(删除)和 UPDATE(更新)等。
- DQL(数据查询语言):查询是数据库的基本功能,查询操作通过 SQL数据查询语言来实现,例如,用SELECT 查询表中的内容。
- DCL(数据控制语言):DCL包括数据库对象的权限管理和事务管理等。
- SQL数据定义语言
①建立数据库
CREATE DATABASE 数据名
②建立数据库表
CREATE TABLE 表名
(列名 数据类型,
...
完整性约束,
...
)
③修改基本表结构
- 增加一个新列的基本语句为:
ALTER TABLE 表名 ADD 列名 类型
- 修改一个新列的基本语句为:
ALTER TABLE 表名 ALTER COLUMN 列名 新类型
- 删除一个列的语句为:
ALTER TABLE 表名 DROP COLUMN 列名
④删除基本表
DROP TABLE 表名
- 约束
列级完整性 NOT NULL ,UNIQUE,NOT UNIQUE,DEFAULT
实体完整性(主键) PRIMARY KEY
用户自定义CHECK
参照完整性(外键) FOREIGN KEY
- 数据操作
①插入
insert into 表名(列名序列) values (元组值);
- 插入查询值
insert into 表名(列名序列) select 查询语句
②删除
delete from 表名 where 条件表达式
③更新
update 表名
set 列名 = 值表达式
[where 条件表达式]
- 查询
SELECT 目标表的名或列表达式序列
FROM 关系名表列
[WHERE 行条件表达式]
[GROUP BY 列名列 # 分组
[HAVING 条表达式]]
[ORDER BY 列名[ASCIDESC]…] # 排序
①投影查询
select distinct 列名 as '列名别名' from 表名
distinct去重,as取别名
②选择查询
- %(百分号)代表任意长度(长度可以为0)的字符串。例如a%b表示以a开头,以b结尾的任意长度的字符串,如acb、addgb、ab等都满足该匹配串。
- _(下划线)代表任意单个字符。例如ab表示以a开头,以b结尾的长度为3的任意字符串,acb、afb等都满足该匹配串。
③聚合函数
函数名 | 功能 |
---|---|
AVG | 计算一个数值型表达式的平均值 |
COUNT | 计算指定表达式中选择的项数,COUNT(*)统计查询输出的行数 |
MIN | 计算指定表达式中的最小值 |
MAX | 计算指定表达式中的最大值 |
SUM | 计算指定表达式中的数值总和 |
STDEV | 计算指定表达式中所有数据的标准差 |
STDEVP | 计算总体标准差 |
- 交,并,差
union:并
intersect:交
except:差
九、SQL访问控制
获得权限的用户也可以给别人权限
with grant option
grant 权限 on 表/库 to 用户
收回权限
revoke 权限 on 表/库 from 用户
十、视图
- 视图是从一个或者多个基本表或视图中导出的表,是一个虚拟表
- 视图的创建语句格式:
CREATE VIEW 视图名(列表名)
AS SELECT 查询子句
[WITH CHECK OPTION];
- 视图的删除语句格式:
DROP VIEW 视图名
- WITH CHECK OPTION表示增删改查条件表达式
十一、索引
create index 索引名 on 表名
索引改变的是内模式(存储文件)
十二、关系模式
- 一个关系模式应当是一个五元组(含关系名)。R <U,D,dom,F>
(1)R为关系名,它是符号化的元组语义;
(2)U为一组属性;
(3)属性组U中的属性来自域D;
(4)dom为属性到域的映射;
(5)F为属性组U上的一组数据依赖。 - A→B,A决定B,B依赖A
- 函数依赖
①平凡函数依赖, A→B,B⊆A⊊
②非平凡函数依赖, A→B,B⊊A
③完全函数依赖:如果 X→Y,并且对于X的任何一个真子集X’都有X’不能决定 Y,则称Y对X完全函数依赖,
④部分函数依赖:如果X→Y,但Y不完全函数依赖于X,则称对X部分函数依赖
⑤传递函数依赖, A→B,B⊊A,B→A
十三、范式
伪传递率:X→Y,WX→Y,XW→Z
1NF→2NF:消除主属性对候选码的部分函数依赖
2NF→3NF:消除非主属性对候选码的传递函数依赖
3NF→BCNF:消除主属性对候选码的部分函数依赖和传递函数依赖
十四、数据库设计
需求分析→概念结构设计→逻辑结构设计→物理设计→数据库实施→运行,维护
- 需求分析
①需求分析阶段的工作以及形成的相关文档(作为概念结构设计阶段的依据)
②建立需求说明文档、数据字典和数据流程图 - 概念结构设计
①实体
②属性
③联系(一对一(1:1),一对多(1∶n),多对多(m:n))
步骤:选择局部应用→逐一设计分E-R图→E-R合并
E-R图之间的冲突:
① 属性冲突。属性的类型、取值范围和数据单位等可能会不一致
②命名冲突。相同意义不同命名,或是名称相同意义不同
③ 结构冲突。同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体,而在另一分E-R图中又被抽象为属性,需要统一。
- 逻辑结构设计(关系规范化)
①一对一(1:1)
②一对多(1∶n)
③多对多(m:n)
十五、事物管理(ACID)
BEGIN TRANSACTION:事务开始。
COMMIT:事务提交。
ROLLBACK:事务回滚。
- 原子性:事务是原子的,要么都做,要么都不做。
- 一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。因此,当数据库只包含成功事务提交的结果时,称数据库处于一致性状态。
- 隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事务都是不可见的。
- 持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效。
十六、数据库的备份
- 故障类型
①事务内部故障 ②系统故障 ③介质故障 ④计算机病毒 - 备份方法
①静态转储和动态转储。静态转储是指在转储期间不允许对数据库进行任何存取、修改操作;动态转储是在转储期间允许对数据库进行存取、修改操作。因此,转储和用户事务可并发执行。
②海量转储和增量转储。海量转储是指每次转储全部数据:增量转储是指每次只转储上次转储后更新过的数据。
③日志文件。在事务处理的过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。因此,DBMS利用日志文件来进行事务故障恢复和系统故障恢复,并可协助后备副本进行介质故障恢复。 - 恢复
①反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
②对事务的更新操作执行逆操作。
③继续反向扫描日志文件,查找该事务的其他更新操作,并做同样的处理,直到事务的开始标志。
十七、锁
- 排它锁:若事务T对数据对象A加上X锁,则只允许T读取和修改 A,其他事务都不能再对 A 加任何类型的锁,直到T释放A上的锁。
- 共享锁:若事务T对数据对象A加上S锁,则只允许T读取 A,但不能修改 A,其他事务只能再对A加S锁,直到T释放A上的S锁。这就保证了其他事务可以读 A,但在T释放A上的S锁之前不能对A进行任何修改。
十八、分布式数据库
- 分片透明:指用户或应用程序不需要知道逻辑上访问的表具体是怎么分块存储的
- 复制透明:指采用复制技术的分布方法,用户不需要知道数据是复制到哪些节点,如何复制的。
- 位置透明:指用户无须知道数据存放的物理位置
- 逻辑透明:指用户或应用程序无需知道局部场地使用的是哪种数据模型
- 共享性:指数据存储在不同的结点数据共享
- 自治性:指每结点对本地数据都能独立管理
- 可用性:指当某一场地故障时,系统可以使用其他场地上的副本面不至于使整个系统瘫
- 分布性:指数据在不同场地上的存储
相关文章:

软考数据库部分 ---- (概念数据库模型,三级模式,两级映像,事物管理)
文章目录 一、概念数据库模型二、结构数据库模型三、三级模式四、两级映像五、关系模式基本术语六、关系模式七、关系的数学定义八、数据定义语言九、SQL访问控制十、视图十一、索引十二、关系模式十三、范式十四、数据库设计十五、事物管理(ACID)十六、…...

AI 概念大杂烩
目录 介绍 数据挖掘 / 机器学习 / 深度学习 一、数据挖掘(Data Mining) 1. 定义 2. 目标 3. 常用算法 二、机器学习(Machine Learning) 1. 定义 2. 目标 3. 常用算法 三、深度学习(Deep Learning࿰…...

Composer和PHP有什么关系
Composer是PHP的一个依赖管理工具,以下是对Composer及其与PHP关系的详细解释: Composer简介 核心功能:Composer的核心思想是“依赖管理”,它能够自动下载和安装项目所依赖的库、框架或插件等。这些依赖项可以是PHP本身的库文件&…...

【PGCCC】在 Postgres 上构建图像搜索引擎
我最近看到的最有趣的电子商务功能之一是能够搜索与我手机上的图片相似的产品。例如,我可以拍一双鞋或其他产品的照片,然后搜索产品目录以查找类似商品。使用这样的功能可以是一个相当简单的项目,只要有合适的工具。如果我们可以将问题定义为…...

性能测试之性能问题分析
开始性能测试前需要了解的内容: 1、项目具体需求。 2、指标:响应时间在多少以内,并发数多少,tps多少,总tps多少,稳定性交易总量多少,事务成功率,交易波动范围,稳定运行…...

错过了A股,别再错过AI表情包!N款变现攻略,你选哪个?
本文背景 据 Swyft Media 统计,全世界每天各类聊天 app 发送的表情符号有 60 多亿,我们国家每天表情包发送量大概 6 亿次。 表情包简直就是个大淘金池,最近用 AI 做表情包也挺火。所以今天给大家讲讲一个用 AI 做表情包变现的项目。 以前没…...

SpringBoot驱动的美发沙龙管理系统:优雅地管理您的业务
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理美发门店管理系统的相关信息成为必然。开发…...

prometheus + alertmanager 搭建告警通知
prometheus 下载prometheus-2.53.2 prometheus.yml文件修改 global:scrape_interval: 15sevaluation_interval: 15salerting:alertmanagers:- static_configs:- targets:- 127.0.0.1:9093rule_files:- "rules/rule-*.yml"scrape_configs:- job_name: "promet…...

爬虫案例——爬取腾讯社招
案例需求: 1.爬取腾讯社招的数据(搜索 | 腾讯招聘)包括岗位名称链接时间公司名称 2.爬取所有页(翻页) 3.利用jsonpath进行数据解析 4.保存数据:txt文本形式和excel文件两种形式 解析: 1.分…...

VAS1800Q奇力科技线性芯片电荷泵热处理
高效恒流LED驱动器——VAS1800Q在汽车应用中的卓越表现 VAS1800Q是一款专为汽车应用设计的高效恒流LED驱动器。它具备多个显著特点,不仅提升了LED驱动效率,还大大减少了热量的产生,使其在汽车照明领域中具有极高的应用价值。本文将详细介绍VA…...

SQL Inject-基于报错的信息获取
常用的用来报错的函数 updatexml() : 函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。 extractvalue(): 函数也是MYSQL对XML文档数据进行查询的XPATH函数。 floor(): MYSQL中用来取整的函数。 思路: 在MySQL中使用一些指定的函数来制造报错&am…...

redistemplate宇jedis区别
redistemplate是Spring Data Redis提供的一个模板类,用于简化Redis操作的代码编写。它提供了常见的操作方法,如存储、读取、删除等,可以更方便地操作Redis数据库。 而Jedis是Redis官方推荐的Java客户端库之一。它提供了丰富的功能和灵活的接…...

JavaWeb--09Servlet深入:JavaWeb三层架构---注册系统
一套完整的网页到Java到数据库的创建: html:进行数据收集以及呈现 第一层:根据servlet处理前台html的响应和请求,对数据进行接收,封装和验证 第二层:业务,验证是否存在调用创建的dao查&#x…...

教育技术革新:SpringBoot在线教育系统开发指南
6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…...

EasyAnimate
https://github.com/aigc-apps/EasyAnimate/blob/main/README_zh-CN.mdhttps://github.com/aigc-apps/EasyAnimate/blob/main/README_zh-CN.md EasyAnimate v4是一个用于生成高分辨率和长视频的端到端解决方案。我们可以训练基于转换器的扩散生成器,训练用于处理长视频的VAE,…...

Unity实现自定义图集(五)
以下内容是根据Unity 2020.1.0f1版本进行编写的 在Unity编辑器上的自定义图集已经完成了,但是如何将自定义图集文件打包,以及在移动平台将自定义图集和对应的纹理图(Texture)加载出来是个问题,本篇就来解决这些问题 1、思路 首先是自定义图集的打包。 自定义图集实际…...

2024年最佳平替电容笔对比:西圣、摩米士、倍思,哪款更适合你?
作为一位专注于数码产品的博主,我深知近年来平替电容笔在消费者中的热度不断攀升。这种电容笔以其亲民的价格和卓越的书写体验引起了广泛关注,尤其适合那些需要用iPad学习和办公的无纸化爱好者。 西圣这款自带充电仓的电容笔备受关注,尤其因…...

关系型数据库索引操作
前言:关系型数据库索引总结-作用,类型,适用场景,缺点简介 在MySQL、SQL Server、Oracle中,建立、修改、删除索引的操作有很多相似之处,但由于每个数据库系统的语法和特性不同,具体操作有一些差异。以下是三种数据库中关于索引操作…...

深度学习基础—卷积神经网络示例
1.卷积神经网络的结构 在之前的博客《深度学习—简单的卷积神经网络》,仅由卷积层构成网络的全部,这还不是标准的网络结构,本文将继续介绍标准的卷积神经网络结构有哪些? 深度学习基础—简单的卷积神经网络https://blog.csdn.net…...

vite学习教程03、vite+vue2打包配置
文章目录 前言一、修改vite.config.js二、配置文件资源/路径提示三、测试打包参考文章资料获取 前言 博主介绍:✌目前全网粉丝3W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&…...

Java | Leetcode Java题解之第461题汉明距离
题目: 题解: class Solution {public int hammingDistance(int x, int y) {int s x ^ y, ret 0;while (s ! 0) {s & s - 1;ret;}return ret;} }...

ubuntu 开放 8080 端口快捷命令
文章目录 查看防火墙状态开放 80 端口开放 8080 端口开放 22端口开启防火墙重启防火墙**使用 xhell登录**: 查看防火墙状态 sudo ufw status [sudo] password for crf: Status: inactivesudo ufw enable Firewall is active and enabled on system startup sudo…...

关于头文件为什么要加条件编译语句
因为有些情况重复包含头文件会出现重复定义或者导致多次包含导致增加编译时间。 下述是没有假如条件编译和宏定义的例子: // common_functions.h int addTwoNumbers(int a, int b); // data_structures.h #include "common_functions.h"struct MyStruc…...

strstr
strstr函数原型: char *strstr(conset char *s, conset char *s2); 功能:在字符串s中查找字符串s2出现的位置 返回值: 成功:返回第一次出现的s2的地址 失败:NULL...

C语言 | Leetcode C语言题解之第454题四数相加II
题目: 题解: struct hashTable {int key;int val;UT_hash_handle hh; };int fourSumCount(int* A, int ASize, int* B, int BSize, int* C, int CSize, int* D, int DSize) {struct hashTable* hashtable NULL;for (int i 0; i < ASize; i) {for (…...

Leetcode 删除链表倒数第 N 个节点
算法思想: 使用了双指针法。下面是详细的算法思想: 1. 引入虚拟头节点(dummy node) 为了处理链表的一些边界情况(比如删除头节点),我们在链表的头部引入了一个虚拟节点 dummy,并让…...

[移植] tgi 编译
这里写自定义目录标题 报错 报错 Collecting numpy1.26.4 (from -r requirements_cuda.txt (line 21))Downloading numpy-1.26.4.tar.gz (15.8 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.8/15.8 MB 15.0 MB/s eta 0:00:00Inst…...

vue-element-admin后台集成方案
文章目录 vue-element-admin后台集成方案介绍使用安装目录介绍 vue-element-admin后台集成方案 介绍 官方网站 https://panjiachen.github.io/vue-element-admin-site/zh/guide/#%E5%8A%9F%E8%83%BD使用 安装 这里有三个模板,我们一般选择基础模板进行开发就好…...

40条经典ChatGPT论文指令,圈定选题和进行论文构思
目录 1、用ChatGPT圈定选题范围2、用ChatGPT生成研究方法和思路3、用ChatGPT扩展论文观点和论证4、用ChatGPT辅助论文结构设计5、如何直接使用ChatGPT4o、o1、OpenAI Canvas6、OpenAI Canvas增强了啥?7、编程功能增强 👇 ChatGPT o1网页入口在文末&#…...

在不支持WSL2的Windows环境下安装Redis并添加环境变量的方法
如果系统版本支持 WSL 2 可跳过本教程。使用官网提供的教程即可 官网教程 查看是否支持 WSL 2 如果不支持或者觉得麻烦可以按照下面的方式安装 下载 点击打开下载地址 下载 zip 文件即可 安装 将下载的 zip 文件解压到自己想要解压的地方即可。(注意&#x…...