数据库知识汇总1

一. 数据库系统概述

信息需要媒体(文本、图像视频等)表现出来才能被人类所获取,媒体可以转换成比特或者符号,这些称为数据;
数据/信息的特点:爆炸式增长、无限复制、派生;

数据库是指长期长期存储在计算机内、有组织、可共享的大量数据的集合;(DB)
数据库管理系统:位于用户与操作系统之间的一层数据管理软件(DBMS);
数据库系统(20实际60年代末至今):数据库、数据库管理系统(及其开发工具)、应用程序、数据库管理员;

                                                
数据库系统的特点:

  1. 数据结构化
  2. 数据的共享性高,冗余度低且易扩充
  3. 数据独立性高
  4. 数据由数据库管理系统统一管理和控制

(前三者是相比文件系统(20世纪50年代末-20世纪60年代中)的优点)

区分

        (对某一类数据的结构和属性的说明,Type),(一个型的具体赋值, Value)
       模式(型的描述,不涉及具体值,schema),实例(模式的一个具体值,instance)

                       

一个数据库只有一个模式;
模式定义:数据的逻辑结构(数据项的名字、类型、取值范围等)、数据之间的联系、数据有关的安全性、完整性要求;

外模式(子模式/用户模式)
1.数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
2.数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
3.模式与外模式的关系:一对多
4.外模式与应用的关系:一对多
目的:
保证数据库安全性的一个有力措施
每个用户只能看见和访问所对应的外模式中的数据

内模式(存储模式):
1.是数据物理结构和存储方式的描述
2.是数据在数据库内部的表示方式(记录的存储方式、索引的组织方式、数据是否压缩存储、数据是否加密、数据存储记录结构的规定)
3.一个数据库只有一个内模式


二级映像:外模式/模式映像、模式/内模式映像 
作用:
保证数据的逻辑独立性
保证数据的物理独立性
保证了数据库外模式的稳定性

数据库管理员(DBA)具体职责: 
决定数据库中的信息内容和结构
决定数据库的存储结构和存取策略
定义数据的安全性要求和完整性约束条件
监控数据库的使用和运行
数据库的改进和重组

二. 关系数据库

数据模型:对现实世界数据特征的抽象,即对现实世界的模拟
超码:关系模式中的一组属性,可以唯一标识关系的元组,每个关系至少有一个 superkey,超码的任何超集都是超码
:唯一标识实体的属性集(不可再分的超码的最小集合)
候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
主码:若一个关系有多个候选码,则选定其中一个为主码(Primary key)(通常选择属性数最少的候选键为主码)
候选码中的属性称为主属性(Prime attribute)
不包含在任何侯选码中的属性称为非主属性(Non-Prime attribute)或非码属性(Non-key attribute) 

整体范围:超码>码/候选码>主码

关系模型:在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
三类完整性约束

  1. 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值
  2. 参照完整性:关系间的引用、外码、参照完整性规则
  3. 用户定义的完整性

设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码;
基本关系R称为参照关系,基本关系S称为被参照/目标关系
F可以取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值

三. 关系数据理论

要求:不会发生插入异常、删除异常和更新异常,数据冗余应尽可能少
数据依赖:是一个关系内属性与属性之间的一种约束关系
主要类型:

  1. 函数依赖(Functional Dependency,简记为FD)
  2. 多值依赖(Multi-Valued Dependency,简记为MVD)

函数依赖

设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y ”或“Y函数依赖于X ”,记作X→Y
其中:         X→Y,X 是决定因素;
                   若X→Y,并且Y→X, 则记为X←→Y;
                   若Y不函数依赖于X, 则记为X→Y。

平凡函数依赖和非平凡函数依赖:

X→Y,但Y⊈X则称X→Y是非平凡的函数依赖( NON-Trivial  FD)
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖( Trivial FD) 

完全函数依赖和部分函数依赖:

在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ 推不出Y, 则称Y对X完全函数依赖,记作X → Y;
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X → Y;

传递函数依赖

在R(U)中,如果X→Y(Y⊈X),Y推不出X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖(transitive functional dependency),记为:X → Z。

闭包:

在关系模式R<U,F>中为F所逻辑蕴涵的函数依赖的全体叫作F的闭包(closure),记为F +;

Armstrong公理系统(1974):

简单讲,可以推出更小的,同乘一个子集,传递)

  1. A1 自反律(reflexivity rule):若Y ⊆  X ⊆ U,则X →Y 为F所蕴涵。
  2. A2 增广律(augmentation rule):若X→Y为F所蕴涵,且Z ⊆  U,则XZ→YZ 为F所蕴涵。
  3. A3 传递律(transitivity rule):若X→Y及Y→Z为F所蕴涵,则X→Z 为F所蕴涵。

根据Armstrong公理系统三条推理规则可以得到下面三条推理规则

  1.  合并规则(union rule):由X→Y,X→Z,有X→YZ。
  2.  伪传递规则(pseudo transitivity rule):由X→Y,WY→Z,有XW→Z。
  3.  分解规则(decomposition rule):由X→Y及Z⊆Y,有X→Z。

注意:一般不计算F+,计算代价比较昂贵,一般计算X+(当前函数依赖左边的闭包)
如果计算出的X+包括所有的R集合,证明它是超码,如果不可继续分,则他是候选码。

如何找候选码:

方法一:先找单属性的候选码,再找剩余属性的组合

方法二:画图法,流程如下:
1. 根据函数依赖画图
2. 确定没有传入边的顶点 Vni 集;(入度为0)
声明 1:任何候选码都必须具有 Vni中的所有属性。
声明 2:如果 Vni 形成候选码,则 Vni 是唯一的候选键。
3.  标识仅具有传入边的顶点 Voi 集;(出度为0
声明 3:候选码不包含Voi中的任何属性。
4.   使用观察查找其他候选码(如果有)

画图法详细示例:

关系分解:无损连接分解、依赖保留分解

无损连接判断:

1. 针对分解成两个表,满足下式则是无损链接

                        

2. 针对分解成多个表,使用如下算法:

1)构造一个kn列的表,第i行对应于关系模式Ri,第j列对应于属性Aj。如果Aj∈Ri则在第i行第j列上放符号aj,否则放符号bij;

2逐一检查F中的每一个函数依赖,并修改表中的元素。方法:取F中一个函数依赖XY,在X的列中寻找相同的行,然后将这些行中Y的分量改为相同的符号,如果其中有aj,则将bij改为aj;若其中无aj,则改为某一个bij;

3反复检查第(2)步直至无改变,若存在某一行为a1,a2,…,ak,则分解  具有无损连接性;如果F中所有函数依赖都不能再修改表中的内容,且没有发现这样的行,则分解不具有无损连接性。

简单而言,首先建表,有属性为aj,无为bij;接着遍历函数依赖FDs,对于函数依赖X->Y,在X中寻找相同的行,对应到Y中,如果Y中有aj,则全部改为aj,否则统一改为序号最小的bij。

详细例子如下:

已知R<U,F>U={A,B,C,D,E}F={A→C,B→C,C→D,DE→C,CE→A}R的一个分解为R1(AD)R2(AB)R3(BE)R4(CDE)R5(AE),判断这个分解是否具有无损连接性。

step1:初始化二维表

                

step2:使用A->C进行更新(处理1、2、5行)

                ​​​​​​​

step3:使用B->C进行更新(处理2、3行)

        ​​​​​​​   ​​​​​​​     

step4:使用C->D进行更新(处理1、2、3、5行)

        ​​​​​​​        

step5:使用DE->C进行更新(处理3、4、5行)

        ​​​​​​​        

step6:使用CE->A进行更新(处理3、4、5行)

        ​​​​​​​        

此时发现有一行为a1到a5,说明是无损的函数分解。

依赖保留分解:

定义:对关系 R 和函数依赖F, 分解 {R1, R2, ..., Rn} 保持函数依赖,如果满足
           F+ = (F1 U F2 U . . . U Fn)+ 
   where Fi = ΠRi(F),    i = 1, ..., n.

 使用DP算法进行检验:

  1. 对于每个函数依赖 在同一张表中 此时函数依赖保留
  2. 否则使用XYGP算法找W,如果Y在W中,则保留

XYGP算法:在每个分解后的关系Ri中寻找X可以确定的属性集
对于依赖关系:X→Y
初始化W为X
                W := W U ((W ∩ Ri)+ ∩ Ri);   
一直迭代直到W不变

注意实际上我们可以发现只有与W有交集的R需要进行上述操作,因为其他的是空集。

详细示例:

        

        

          

需要一直进行,更新所有R之后发现Y确实不在W中,则其不保持函数依赖;如迭代发现Y在W中即可停止,函数依赖保持。

----- 以上为本人学习数据库这门课总结出的一些知识点,有错误或者疑问可以评论区交流,欢迎指正!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Dubbo扩展点加载机制

加载机制中已经存在的一些关键注解&#xff0c;如SPI、©Adaptive> ©Activateo然后介绍整个加载机制中最核心的ExtensionLoader的工作流程及实现原理。最后介绍扩展中使用的类动态编译的实 现原理。 Java SPI Java 5 中的服务提供商https://docs.oracle.com/jav…

Elasticsearch向量检索需要的数据集以及768维向量生成

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一&#xff1a;使用fromsize实现分页 快速掌握Elasticsearch检索之二&#xff1a;滚动查询(scrool)获取全量数据(golang) Elasticsearch检索之三&#xff1a;官方推荐方案search_after…

网关的主要作用

在网络安全领域&#xff0c;网关扮演着举足轻重的角色&#xff0c;它不仅是网络间的桥梁&#xff0c;更是安全防线的守护者。以下是网关在网络安全中的几个关键作用&#xff1a; 1. 防火墙功能&#xff1a;网关常常集成了防火墙技术&#xff0c;能够对进出网络的数据包进行严格…

【Cocos TypeScript 零基础 4.1】

目录 背景滚动 背景滚动 创建一个 空节点 背景丟进去 ( 复制一个,再丢一次都行) 新建TS脚本 并绑定到 空节点 上 再对TS脚本进行编辑 export class TS2bg extends Component {property (Node) // 通过属性面板去赋值bg1:Node nullproperty (Node) bg2:Node nullprope…

如何利用群晖NAS实现远程访问你的网页版Linux虚拟桌面环境

文章目录 前言1. 下载Docker-Webtop镜像2. 运行Docker-Webtop镜像3. 本地访问网页版Linux系统4. 群晖NAS安装Cpolar工具5. 配置异地访问Linux系统6. 异地远程访问Linux系统7. 固定异地访问的公网地址 前言 今天我要给大家介绍一下如何在群晖NAS设备上部署Docker-Webtop&#x…

MySQL 04 章——运算符

一、算数运算符 算数运算符主要用于数学运算&#xff0c;其可以连接运算符前后的两个数值或表达式 运算符名称作用示例加法运算符计算两个值或表达式的和SELECT AB-减法运算符计算两个值或表达式的差SELECT A-B*乘法运算符计算两个值或表达式的乘积SELECT A*B/或DIV除法运算符…

ES IK分词器插件

前言 ES中默认了许多分词器&#xff0c;但是对中文的支持并不友好,IK分词器是一个专门为中文文本设计的分词工具&#xff0c;它不是ES的内置组件&#xff0c;而是一个需要单独安装和配置的插件。 Ik分词器的下载安装&#xff08;Winows 版本&#xff09; 下载地址&#xff1a;…

Oracle DG备库数据文件损坏修复方法(ORA-01578/ORA-01110)

今天负责报表的同事反馈在DG库查询时出现如下报错 ORA-01578:ORACLE数据块损坏(文件号6,块号 2494856)ORA-01110:数据文件6: /oradata/PMSDG/o1 mf users_molczgmn_.dbfORA-26040:数据块是使用 NOLOGGING 选项加载的 可以看到报错是数据文件损坏&#xff0c;提示了file id和b…

idea无法安装插件

目录 修改工具配置 本地安装 无法下载很多时候就是延迟太高导致的&#xff0c;我们先打开插件官网看一下 Python - IntelliJ IDEs Plugin | Marketplace 修改工具配置 1、配置代理&#xff08;点击 setting-点击 plugins-在点击 http proxy Settings&#xff09; 输入&…

Linux部署web项目【保姆级别详解,Ubuntu,mysql8.0,tomcat9,jdk8 附有图文】

文章目录 部署项目一.安装jdk1.1 官网下载jdk81.2 上传到Linux1.3 解压1.4 配置环境变量1.5 查看是jdk是否安装成功 二.安装TomCat2.1 官网下载2.2 上传到Linux2.3 解压2.4配置2.5 启动Tomcat2.6 验证是否成功 三.安装mysql四.部署javaweb项目4.1 打包4.2 启动tomcat 部署项目 …

服务器等保测评日志策略配置

操作系统日志 /var/log/message 系统启动后的信息和错误日志&#xff0c;是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息 /var/log/cron 与定时任务相关的日志信息 /var/log/spooler 与UUCP和news设备相关的…

初学stm32 --- FSMC驱动LCD屏

目录 FSMC简介 FSMC框图介绍 FSMC通信引脚介绍 FSMC_NWE 的作用 FSMC_NWE 的时序关系 FSMC_NOE 的含义 FSMC_NOE 的典型用途 FSMC_NOE 的时序关系 使用FSMC驱动LCD FSMC时序介绍 时序特性中的 OE ILI9341重点时序&#xff1a; FSMC地址映射 HADDR与FSMC_A关系 LCD的…

业务模型与UI设计

业务数据模型的设计、UI设计这应该是程序设计中不可缺少的部分。做程序设计的前提应该先把这两块设计好&#xff0c;那么&#xff0c;来一个实际案例&#xff0c;看看这2块的内容。 汽车保养记录业务模型与UI设计&#xff1a; 一、【车辆清单】 记录车辆相关的数据&#xff0…

【JavaScript】变量-常量-数据类型-类型转换

目录 一、JavaScript 介绍 1. JavaScript &#xff08;是什么&#xff1f;&#xff09; 2. 作用&#xff08;做什么&#xff1f;&#xff09; 3. JavaScript的组成&#xff08;有什么&#xff1f;&#xff09; 3.1 ECMAScript: 3.2 Web APIs : 总结&#xff1a; 4. Jav…

day30-awk精讲

awk其实不仅仅是工具软件&#xff0c;还是一种编程语言。 不过&#xff0c;本文只介绍它的命令行用法&#xff0c;对于大多数场合&#xff0c;应该足够用了。 awk是什么 awk是一个强大的linux命令&#xff0c;有强大的文本格式化的能力&#xff0c;好比将一些文本数据格式化…

实战设计模式之建造者模式

概述 在实际项目中&#xff0c;我们有时会遇到需要创建复杂对象的情况。这些对象可能包含多个组件或属性&#xff0c;而且每个组件都有自己的配置选项。如果直接使用构造函数或前面介绍的工厂方法来创建这样的对象&#xff0c;可能会导致以下两个严重问题。 1、参数过多。当一个…

滤波器的主要参数

为什么选择高阶&#xff1a; 滤波器的主要参数通常包括以下几个方面&#xff1a; 截止频率 (Cutoff Frequency)&#xff1a; 这是滤波器能够有效通过或抑制信号的频率点。对于低通滤波器&#xff0c;信号低于截止频率的部分会被通过&#xff0c;高于截止频率的部分会被衰减。高…

HNSW概述

1. \textbf{1. } 1. 一些导论 1.1. \textbf{1.1. } 1.1. 朴素基于图的 ANN \textbf{ANN} ANN 1️⃣建图&#xff1a;对数据库中所有的点&#xff0c;构建 k -NN k\text{-NN} k-NN图(下图以 3 -NN 3\text{-NN} 3-NN为例) 2️⃣检索&#xff1a; GreedySearch \text{GreedySearch…

小程序学习07—— uniapp组件通信props和$emit和插槽语法

目录 一 父组件向子组件传递消息 1.1 props &#xff08;a&#xff09;传递静态或动态的 Prop &#xff08;b&#xff09;单向数据流 二 子组件通知父组件 2.1 $emit &#xff08;a&#xff09;定义自定义事件 &#xff08;b&#xff09;绑定自定义事件 三 插槽语法…

【视频笔记】基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil【持续更新】

视频链接: 基于PyTorch从零构建多模态(视觉)大模型 by Umar Jamil 从头编写一个视觉语言模型:PloyGamma,是谷歌的一个模型 1:原始图像 2:视觉编码器(本文是viT),通过对比学习进行训练。这个对比学习最开始是CLIP,后来被谷歌改成了SigLIP 3:线性投影层 4:如何将图…