数据库复习记录

news2025/1/14 1:38:23

边复习边整理。

数据库

数据库管理系统(DBMS):用来管理数据库的系统。

  • 关系型数据库:二维表格(即关系)来存储数据,一个表对应一个关系,用SQL来查询数据。如MySQL、PostgreSQL、SQLLite等。
  • 非关系型数据库(NoSQL):不基于传统关系模型的数据库系统,通常用于处理大规模、非结构化或半结构化的数据。如文档型数据库(MongoDB、CouchDB),键值型数据库(Redis),图形数据库,列式数据库,时序数据库(InfluxDB、IoTDB),分布式数据库等等。

数据库中的三模式架构是数据库系统设计中的一个经典概念,用于分离数据库的用户视图、逻辑设计和物理实现。它由外模式(子模式)、模式(概念模式)和内模式三部分组成。在三层模式体系结构中数据独立性是指数据库系统在某一层次模式上的改变不会使它的上一层模式也发生改变的能力。正是三级模式间的两层映像保证了数据库系统中的数据具有较高的数据独立性。数据独立性包括数据逻辑独立性数据物理独立性

数据模型的三要素包括数据结构、数据操作和数据约束条件‌。 数据结构用于描述系统的静态特性,是所研究对象类型的集合,也是刻画一个数据模型性质最重要的方面。数据操作用于描述系统的动态特性,包括对数据库中各种对象(型)的实例(值)允许执行的操作的集合,以及相关的操作规则。数据完整性约束条件是一组完整性规则,确保数据的准确性,限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。‌数据模型是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。

数据库的设计步骤:需求分析、概念结构设计、逻辑结构设计、物理设计、数据库实施、数据库运行和维护

关系数据库

“关系”这个概念指的是 ,而不是两个表之间的关系。在关系数据库中,关系就是数据库中的一个 表。表是由行和列组成的二维数据结构,每一行表示一个数据实例(元组),每一列表示该数据实例的一个属性(字段)。所以,关系是表的数学模型。“关系”这一术语来源于 集合论关系代数。数学中,关系通常是由多个元素组成的集合,每个元素由一个元组(tuple)表示。元组中的各个元素代表属性值。

关系代数中的物种基本运算:并、差、选择、投影、笛卡尔积。并和差的两个关系的关系模式要一致,不是属性的并,而是元组的并!!

自然连接是笛卡尔积和选择的结合,还有全外链接,左外链接(会返回左表中的所有记录,如果右表中没有匹配的行,则结果中右表的部分将显示为NULL)、右外连接。

关系数据库的特征:ACID,原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability),分别由DBMS的事务管理、完整性、并发控制、恢复管理子系统实现。

SQL语言

SQL是介于关系代数关系演算之间的语言,关系演算的表达性大于关系代数。

  • 数据定义语言(DDL):CREATE、ALTER、DROP
  • 数据操作语言(DML):SELECT、INSERT、UPDATE、DELETE
  • 数据控制语言(DCL):GRANT、REVOKE

‌T-SQL(Transact-SQL) 是SQL Server的编程语言,它是SQL(结构化查询语言)的增强版本,主要用于与Microsoft SQL Server数据库进行交互。‌ T-SQL在标准SQL的基础上增加了许多功能,包括事务控制、异常和错误处理、行处理以及声明的变量等‌,除了以上三种,还有如下两种:

  • 事务管理语言‌:用于管理事务,确保数据的一致性和完整性。
  • 流程控制语言‌:包括条件语句、循环语句等,用于编写复杂的逻辑。

索引

  • 基于存储结构分:B+树索引、哈希索引、全文索引
  • 基于逻辑结构分:主键索引、唯一索引、普通索引、组合索引

索引是数据库中一种用于加速数据查询的数据结构,可以看作是数据库表的一种辅助结构。索引存储了某些列的值及其对应的数据记录地址,类似于图书的目录,帮助快速定位目标数据。

也就是说,创建一个数据库的时候并没有索引,即使是创建了一个表,也只会在声明PRIMARY KEY时自动生成一个主键索引,声明UNIQUE时自动生成一个唯一索引普通索引都是要自己创建的,目的就是为了加速查询。如果确定只有等值查询,可以用哈希索引,或者要全文搜索的时候用全文索引,否则一般都默认用B+树,对于查找某个范围的元组非常高效,如BETWEEN、<等等,ORDER BY也很高效,因为叶子结点都是按顺序存储的。具体B+树如何实现的就不在这里赘述了,但是一定要去学!对于理解数据库的索引很重要很重要。

数据库的完整性

为维护数据库的完整性,DBMS必须能够:

  • 提供定义完整性约束条件的机制,一般由SQL的DLL语句来实现,作为数据库模式的一部分存入数据字典中。
  • 提供完整性检查的方法,在insert、update、delete语句执行完后开始检查
  • 违约处理,当违背完整性约束条件时,采取的动作(拒绝或级联)

有四种完整性:

  • 实体完整性(Entity Integrity):主键唯一且不为NULL
  • 参照完整性(Referential Integrity):外键的值要么为空要么为另一个表的主键。违约处理:拒绝(NO ACTION)执行(默认策略)、级联(CASCADE)操作、设置为空值(SET NULL)
  • 用户定义完整性(User-defined Integrity):也称域完整性(Domain Integrity),指用户定义的数据库表中的列必须满足某种特定的数据类型或约束,包括取值范围、精度等规定。

完整性约束条件作用的对象可以为列级、元组级、关系级三类。三类对象的状态既可为动态也可为静态

数据库范式

属性和键:

  • 超键:能唯一标识元组的属性集叫做超键。
  • 候选键:如果超键不包括多余的属性,那么这个超键就是候选键。
  • 主键:用户可以从候选键中选择一个作为主键。
  • 外键:如果数据表R1中的某属性集不是R1的主键,而是另一个数据表R2的主键,那么这个属性集就是数据表R1的外键。
  • 主属性:包含在任一候选键中的属性称为主属性。
  • 非主属性:与主属性相对,指的是不包含在任何一个候选键中的属性。

六大范式:

  • 第一范式:表中每个字段的值必须具有原子性
  • 第二范式:实体的属性完全依赖主键,不能只依赖主键的部分属性。
  • 第三范式:非主键属性之间不能有依赖关系,必须相互独立。
  • BC范式:称为修正的第三范式,或扩充的第三范式。消除主属性对于码的部分与传递函数依赖。只有一个候选键,或者它的每个候选键都是单属性。
  • 第四范式:消除非平凡且非函数依赖的多值依赖。
  • 第五范式:也叫完美范式,每一个连接依赖均由候选键隐含。

前面的很好理解,对第四范式的理解如下:“非平凡”指的是不是显然成立的,如果X+Y=U或者 Y 是 X 的子集的话,X →→ Y显然成立。“非函数依赖的多值依赖”就是指和其他属性无关的一对多关系,即不管Z(=U-X-Y)取什么值,X对应的一组Y的值都是一样的,比如下面这个关系中,Student→→Course,Student→→Hobby,就不满足4NF,应该分成两个表分别表示学生的课程和学生的爱好。

Student | Course | Hobby
--------|--------|---------
Alice   | Math   | Painting
Alice   | Math   | Chess
Alice   | English| Painting
Alice   | English| Chess

再附一张比较清晰的图:
在这里插入图片描述

一般来说,在关系型数据库设计中,最高也就遵循到 BCNF,普遍还是3NF。但也不绝对,有时候为了提高某些查询性能,我们还需要破坏范式规则,也就是反规范化。

数据规范化中的

  • 插入异常:应该插入的数据无法插入数据库
  • 删除异常:不该删除的数据被错误地删除
  • 更新异常:同一个数据需要在多处修改

数据一致性

并发操作带来的数据不一致性问题主要包括丢失修改、不可重复读和脏读。‌在并发操作中,多个事务可能同时访问和修改同一数据,导致数据的不一致性。具体来说,丢失修改是指一个事务的更新操作被另一个事务的更新操作覆盖,导致第一个事务的修改结果丢失。不可重复读则是指在一个事务内多次读取同一数据时,由于其他事务的修改,导致两次读取的结果不一致。脏读是指一个事务读取了另一个事务未提交的修改数据,这些数据可能最终不会被提交,从而导致读取的数据无效。‌
在这里插入图片描述

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

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

相关文章

Navicat连接SQL Server及SpringBoot连接SQL Server(jtds)

Navicat连接SQL Server 安装自带的SQL Server客户端 去到Navicat安装目录&#xff0c;找到安装程序&#xff0c;安装即可。 安装对应版本的Microsoft ODBC Driver for SQL Server 打开Navicat输入对应的SQL Server相关信息 然后点测试连接&#xff0c;提示连接成功。 Spr…

数字图像处理(15):图像灰度反转和彩色反转

&#xff08;1&#xff09;图像反转&#xff1a;是指对图像的颜色信息进行相反的处理&#xff0c;从而得到一个新的图像。在计算机视觉和图像处理领域&#xff0c;图像反转是一种常见的操作&#xff0c;它可以帮助我们实现不同的图像特效和视觉效果。 &#xff08;2&#xff09…

Linux——基础命令(3)

1.Linux——基础命令&#xff08;1&#xff09;-CSDN博客 2.Linux——基础命令&#xff08;2&#xff09; 文件内容操作-CSDN博客 一、打包压缩 打包压缩 是日常工作中备份文件的一种方式 在不同操作系统中&#xff0c;常用的打包压缩方式是不同的选项 含义 Windows 常用 rar…

【力扣热题100】—— Day4.回文链表

正视自己的懦弱和无能&#xff0c;克服自己的嫉妒与不甘 —— 24.12.3 234. 回文链表 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a…

python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250+个项目、26.6GB)

文章目录 源代码下载地址项目介绍预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250个项目、26.6GB) 预览 项目备注 1、该资源内项目代码都经过测试运行成功&#xff0c;功能ok的情…

AI与BI的火花:大语言模型如何重塑商业智能的未来

大家好&#xff0c;我是独孤风。 在当今这个数据驱动的时代&#xff0c;企业对于信息的需求如同对于氧气的需求一般至关重要。商业智能&#xff08;BI&#xff09;作为企业获取、分析和呈现数据的关键工具&#xff0c;正在经历一场深刻的变革&#xff0c;而这一变革的催化剂正是…

Pyside6 --Qt设计师--简单了解各个控件的作用之:Layouts,Spaces

目录 一、Layouts1.1 Vertical Layout说明1.1.1 Qt设计师图1.1.2 py代码 1.2 Horizontal Layout说明1.2.1 Qt设计师图1.2.2 py代码 1.3 Grid Layout说明1.3.1 Qt设计师图1.3.2 py代码 1.4 Form Layout说明1.4.1 Qt设计师图1.4.2 py代码 二、Spaces&#xff08;空格&#xff09;…

Multimodal Few-Shot Learning with Frozen Language Models译文

摘要 当经过足够规模的训练时&#xff0c;自动回归语言模型在只需要几个例子的提示下就能表现出学习新语言任务的显著能力。在这里&#xff0c;我们提出了一种简单而有效的方法&#xff0c;将这种少量学习能力转移到多模态环境&#xff08;视觉和语言&#xff09;。使用对齐的图…

电脑显示没信号显示屏不亮怎么办?电脑没信号解决方法

电脑没信号显示屏不亮这种故障的原因可能有多种&#xff0c;例如显示器的供电、连接、设置等问题&#xff0c;或者电脑的显卡、内存、硬盘、主板等硬件问题。所以我们想要解决这个问题&#xff0c;也是需要多方面排除找到具体原因然后进行修复。下面将为大家介绍一些常见的电脑…

docker中可视化rviz

docker中可视化rviz 背景1. 确定适合的 NVIDIA 驱动版本2. 检查 NVIDIA Container Toolkit 安装2.1 安装 NVIDIA Container Toolkit配置 NVIDIA Runtime重启 Docker验证 NVIDIA Docker 支持验证 OpenGL 和图形支持测试 GUI 应用验证 OpenGLlio_sam_rviz-9] process has died确认…

AC+AP漫游实验

实验拓扑 实验要求 1.AP1服务vlan10&#xff0c;AP2服务vlan20&#xff0c;实现三层漫游 2.AP1与AP2为不同AP组&#xff0c;直接转发 实验步骤 1.配置VLAN放行相关流量 交换机与AP接口为trunk口并修改PVID为30 2.配置相关业务使得ap上线 3.配置vap上线&#xff0c;AP可用…

力扣92.反转链表Ⅱ

题目描述 题目链接92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left …

BERT和RoBERTa;双向表示与单向的简单理解

目录 BERT和RoBERTa大型预训练语言模型 BERT的原理 RoBERTa的原理 举例说明 双向表示与单向的简单理解 除了预训练语言模型,还有什么模型 一、模型类型与结构 二、训练方式与数据 三、应用场景与功能 四、技术特点与优势 BERT和RoBERTa大型预训练语言模型 BERT(Bi…

群控系统服务端开发模式-应用开发-短信工厂腾讯云短信开发

一、腾讯云短信工厂开发 1、添加框架对应的SDK composer require tencentcloud/tencentcloud-sdk-php 2、添加腾讯云工厂 在根目录下extend文件夹下Sms文件夹下channel文件夹下&#xff0c;创建腾讯云短信发送工厂并命名为TencentSmsSender。记住&#xff0c;一定要在腾讯云短…

SD-WAN 2.0 在金融行业的典型应用场景

目录 全扁平化组网 场景需求 应用方案 SD-WAN 2.0 在金融行业的创新实践 SD-WAN5G提高金融行业网络接入可靠性 全扁平化组网 随着金融机构数字化转型的推进&#xff0c;机构业务的多样性、复杂性、 个性化等要求&#xff0c;对现有的金融机构网络架构与网管人员运维模式提出…

Next.js 新手容易犯的错误 | All about “use client“ (2)

在上一篇文章中&#xff08;Next.js 新手容易犯的错误 | All about "use client" (1)&#xff09;&#xff0c;我们探讨了 Next.js 中服务端组件和客户端组件的运行机制以及常见的使用误区。 这篇文章将作为续集&#xff0c;进一步分析更多开发中容易遇到的问题&…

优化SEO策略的关键在于长尾关键词的有效运用

内容概要 在数字营销的快速发展背景下&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;策略的制定显得尤为重要。而长尾关键词作为一种有效的关键词策略&#xff0c;正逐渐成为提升搜索引擎排名的重要工具。长尾关键词通常由三到四个词组成&#xff0c;具体而具有针对性&…

医学临床机器学习中算法公平性与偏差控制简析

摘要 随着医疗领域中数据的不断积累和计算能力的提升&#xff0c;临床机器学习技术发展迅速&#xff0c;但算法不公平性和偏差问题凸显。本文深入探讨了临床机器学习算法公平性的重要性、概念与定义、在临床应用中的影响、偏差来源、降低偏差方法及提升公平性策略。通过对不同…

​​​​​​​移远通信基于高通平台发布可集成边缘计算功能的5G MBB解决方案

在5G技术与人工智能深度融合的背景下&#xff0c;各行各业正迎来前所未有的创新机遇。为了加速5G移动宽带&#xff08;MBB&#xff09;行业向智能化转型&#xff0c;并简化边缘计算应用的开发流程&#xff0c;移远通信近期隆重推出了基于骁龙5G调制解调器及射频系统打造&#x…

六、文本搜索工具(grep)和正则表达式

一、grep工具的使用 1、概念 grep&#xff1a; 是 linux 系统中的一个强大的文本搜索工具&#xff0c;可以按照 正则表达式 搜索文本&#xff0c;并把匹配到的行打印出来&#xff08;匹配到的内容标红&#xff09;。 2、语法 grep [options]…… pattern [file]…… 工作方式…