4.基础知识-数据库技术基础

news2024/11/27 22:39:17

基础知识

  • 一、数据库基本概念
    • 1、数据库系统基础知识
    • 2、三级模式-两级映像
    • 3、数据库设计
    • 4、数据模型:
      • 4.1 E-R模型★
      • 4.2 关系模型★
    • 5、关系代数
  • 二、规范化和并发控制
    • 1、函数依赖
    • 2、键与约束
    • 3、范式★
      • 3.1 第一范式1NF
      • 实例
      • 3.2 第二范式2NF
      • 3.3 第三范式3NF
      • 3.4 BC范式BCNF
      • 3.5 求候选键
    • 4、模式分解★
    • 5、并发控制(事务)
    • 6、封锁协议
  • 三、数据库新技术
    • 1、数据库安全
    • 2、分布式数据库★
    • 3、数据仓库
    • 4、反规范化技术
    • 5、大数据
    • 6、SQL语言

一、数据库基本概念

1、数据库系统基础知识

数据:是数据库中存储的基本对象,是描述事物的符号记录。
数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等。

数据库DB:是长期存储在计算机内、有组织的、可共享的大量数据的集合

数据库的基本特征:
1.数据按一定的数据模型组织、描述和存储;
2.可为各种用户共享:
3.冗余度较小;
4.数据独立性较高;
5.易扩展。

数据库系统DBS:是一个采用了数据库技术,有组织地、动态地存储大量相关数据,方便多用户访问的计算机系统。其由下面四个部分组成:
1.数据库(统一管理、长期存储在计算机内的,有组织的相关数据的集合)
2.硬件(构成计算机系统包括存储数据所需的外部设备)
3.软件(操作系统、数据库管理系统及应用程序)
4.人员(系统分析和数据库设计人员、应用程序员、最终用户、数据库管理员DBA)。

数据库管理系统DBMS的功能
实现对共享数据有效的组织、管理和存取。(编写sql语言)
包括数据定义、数据库操作、数据库运行管理、数据的存储管理、数据库的建立和维护等。
例如:plsql,mysql等

2、三级模式-两级映像

  1. 内模式:管理如何存储物理的数据,对应具体物理存储文件

  2. 模式:又称为概念模式,就是我们通常使用的基本表,根据应用、需求将物理数据划分成一张张表。

  3. 外模式:对应数据库中的视图这个级别,将表进行一定的处理后再提供给用户使用

  4. 外模式一模式映像:是表和视图之间的映射,存在于概念级和外部级之间,保证了数据之间的逻辑独立性。若表中数据发生了修改,只需要修改此映射,而无需修改应用程序。(目的)。

  5. 模式一内模式映像:是表和数据的物理存储之间的映射,保证了数据之间的物理独立性。存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要去修改应用程序。(目的)。

在这里插入图片描述

3、数据库设计

  1. 需求分析:即分析数据存储的要求,产出物有数据流图数据字典需求说明书
  2. 概念结构设计:就是设计E-R图,也即实体-联系图,与物理实现无关,说明有哪些实体,实体有哪些属性。
  3. 逻辑结构设计:将E-R图,转换成关系模式(即表),也即转换成实际的表和表中的列属性,这里要考虑很多规范化的东西。
  4. 物理设计:根据生成的表等概念,生成物理数据库
    在这里插入图片描述

4、数据模型:

分类:

  • 关系模型二维表的形式表示的实体-联系模型,是将实体-联系模型转换而来的,经过开发人员设计的;
  • 概念模型从用户的角度进行建模的(就是E-R图),是现实世界到信息世界的第一抽象是真正的实体-联系模型。
  • 网状模型表示实体类型及其实体之间的联系,一个事物和另外几个都有联系形成一张网。
  • 面向对象模型是采用面向对象的方法设计数据库,以对象为单位,每个对象包括属性和方法,具有类和继承等特点。

数据模型三要素
数据结构(所研究的对象类型的集合)、
数据操作(对数据库中各种对象的实例允许执行的操作的集合)、
数据的约束条件(一组完整性规则的集合)。

4.1 E-R模型★

用E-R图来描述概念数据模型,世界是由一组称作实体的基本对象和这些对象之间的联系构成的。
在E-R模型中,使用椭圆表示属性一般没有)长方形表示实体菱形表示联系联系的两端要填写联系类型,示例如下图:
在这里插入图片描述

实体客观存在并可相互区别的事物。可以是具体的人、事、物或抽象概念如人、汽车、图书、账户、贷款。
弱实体和强实体弱实体依赖于强实体的存在而存在。例如员工就是强实体,经理,部门经理,业务员都是弱实体。因为如果员工不存在,那他们也不会存在。
实体集:具有相同类型和共享相同属性的实体的集合,如学生、课程
属性实体所具有的特性
属性分类:简单属性和复合属性;单值属性和多值属性;NULL属性;派生属性。
域:属性的取值范围称为该属性的域
码(key):唯一标识实体的属性集。
联系:现实世界中事物内部以及事物之间的联系,在E-R图中反映为实体内部的联系和实体之间的联系
联系类型一对一1:1一对多1:N多对多M:N

联系的类型怎么判断?

一对一1:1

超市经理释义
11一个超市有一个经理
11一个经理管理一个超市

一对多1:N只出现一次N,那就是一对多的类型

部门员工释义
1N1个部门有多个员工(正方向理解)
111个员工只属于一个部门(反方向理解)

多对多M:N:出现2次N,那就是多对多的类型`。

业务员商品释义
1N1个业务员可以配送多件商品
N11个商品可以由多个业务员配送。

两个以上实体型的联系:(最多就三个,一般就两个)
在这里插入图片描述

释义:教师使用参考书讲授课程。(三个实体)

4.2 关系模型★

关系模型中数据的逻辑结构是一张二维表,由行列组成。用表格结构表达实体集,用外键标识实体间的联系。如下图:
在这里插入图片描述

优点:建立在严格的数学概念基础上;概念单一、结构简单、清晰,用户易懂易用;存取路径对用户透明,从而数据独立性、安全性好,简化数据库开发工作。
缺点:由于存取路径透明,查询效率往往不如非关系数据模型。

E-R模型(E-R图)转换为关系模型(表)

  1. 每个实体(强实体,不是弱实体)都对应一个关系模式
  2. 并不是每一个联系都要转换为单独的一个关系模式,联系分为三种:
    • 1:1联系中,联系可以放到任意的两端实体中,作为一个属性(要保证1:1的两端关联),也可以转换为一个单独的关系模式
      • 例如:超市和经理,联系是管理,可以把管理,作为一个字段,放到超市的这个表里,也可以放到经理的这个表里。
    • 1:N的联系中,联系可以单独作为一个关系模式,也可以在N端中加入1端实体的主键
      • 例如:员工和部门,员工是N端,部门是1端,一般是在员工的表里,加上部门表的主键(例如:id)
    • M:N的联系中,联系必须作为一个单独的关系模式,其主键是M和N端的联合主键

5、关系代数

并交差
并:结果是两张表中所有记录数合并,相同记录只显示一次
交:结果是两张表中相同的记录。
差:S1-S2,结果是S1表中有而S2表中没有的那些记录,
在这里插入图片描述

笛卡尔积
笛卡尔积:S1*S2,产生的结果包括S1和S2的所有属性列,并且S1中每条记录依次和S2中所有记录组合成一条记录,最终属性列为S1+S2属性列,记录数为S1*S2记录数。
投影:实际是按条件选择某关系模式中的某列,列也可以用数字表示
选择:实际是按条件选择某关系模式中的某条记录
在这里插入图片描述

自然连接
自然连接的结果显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同值相同的记录。设有关系R、S如下左图所示,自然连接结果如下右图所示:
在这里插入图片描述

例题
在这里插入图片描述

二、规范化和并发控制

1、函数依赖

给定一个X,能唯一确定一个,就称X确定Y(X --> Y),或者说Y依赖于X,例如Y=x*x函数。

函数依赖又可扩展以下两种规则:

  • 部分函数依赖:A可确定C,(A,B)也可确定C,(A,B)中的一部分(即A)可以确定C,称为部分函数依赖。
  • 传递函数依赖:当A和B不等价时,A可确定B,B可确定C,则A可确定C,是传递函数依赖;若A和B等价,则不存在传递,直接就可确定C。
  • 在这里插入图片描述

函数依赖的公理系统(Armstrong)
设关系模式R<U,F>,U是关系模式R的属性全集,F是关系模式R的一个函数依赖集。对于R<U,F>来说有以下的:

  • 自反律:若YCXCU,则X→Y为F所逻辑蕴含
  • 增广律:若X→Y为F所逻辑蕴含,且ZSU,则XZ-YZ为F所逻辑蕴含
  • 传递律:若X->y和Y-Z为F所逻辑蕴含,则X-Z为F所逻辑蕴含
  • 合并规则:若X→Y,X→Z,则X→YZ为F所蕴涵
  • 伪传递率:若X→Y,WY-Z,则XW→Z为F所蕴涵
  • 分解规则:若X→Y,ZSY,则X→Z为F所蕴涵

2、键与约束

  • 超键:能唯一标识此表的属性的组合

    • 例如学生表,有学号,姓名,年龄,身份证号字段,学号和身份证号都是唯一标识,学号是超键,身份证号也是超键,(学号,姓名)也是超键,(学号,姓名年龄)也是超键,只要包含了唯一标识的,都算超键
  • 候选键:超键中去掉冗余的属性,剩余的属性就是候选键。

    • 去掉冗余的属性,上述案例中,去掉姓名和年龄,只留下唯一标识,就是候选键,候选键可以是多个。例如:【学号,身份证号】,当有多个的时候,可以把多个看成一个就行,例如【学号,身份证号】=guid
  • 主键任选一个候选键,即可作为主键。

  • 外键其他表中的主键

  • 主属性候选键内的属性为主属性,其他属性为非主属性。

    • 【学号,身份证号】就是主属性,其他属性为非主属性
  • 实体完整性约束:即主键约束,主键值不能为空,也不能重复.

  • 参照完整性约束:即外键约束外键必须是其他表中已经存在的主键的值或者为空

  • 用户自定义完整性约束:自定义表达式约束,如设定年龄属性的值必须在0到150之间。

3、范式★

3.1 第一范式1NF

关系中的每一个分量必须是一个不可分的数据项。通俗地说,第一范式就是表中不允许有小表的存在。比如,对于如下的员工表,就不属于第一范式:
在这里插入图片描述

实例

用一个单一的关系模式学生来描述学校的教务系统:学生(学号,学生姓名,系号,系主任姓名,课程号,成绩)

依赖关系(学号->学生姓名,学号->系号,系号->系主任姓名,学号->课程号,(学号,课程号)->成绩)
在这里插入图片描述

  1. 先求主键
    主键:任选一个候选键,即可作为主键。所以需要先算候选键。
    候选键:唯一标识,去除冗余属性。
    唯一标识:(学号,课程号),这是个联合主键。因为只有学号+课程号,才能单独标识一条数据。

3.2 第二范式2NF

通俗地说,2NF就是在1NF的基础上,表中的每一个非主属性不会依赖复合主键中的某一个列
其实是:消除非主属性 对 主属性的 部分函数依赖

注意
1.只有主键是复合主键(联合主键)的时候,才会有部分函数依赖
2.单属性的主键,必然是第二范式

按照定义,上面的学生表就不满足2NF,因为上表中,唯一标识是学号,课程号,所以学号+课程号—>学生姓名,但根据题目给的依赖关系,学号->学生姓名,所以是含有部分函数依赖的,不满足第二范式。

将学生表分解为:
学生(学号,学生姓名,系编号,系名,系主任)
选课(学号,课程号,成绩)。
每张表均属于2NF

3.3 第三范式3NF

满足1NF的基础上,表中不存在非主属性对码(主键)的传递依赖
其实是:消除传递依赖

注意
1.无非主属性的,天然就是3NF

继续上面的实例,学生关系模式就不属于3NF,因为学生无法直接决定系主任和系名,是由学号->系编号,再由系编号->系主任,系编号->系名,因此存在非主属性对主属性的传递依赖,

将学生表进一步分解为:
学生(学号,学生姓名,系编号)
系(系编号,系名,系主任)
选课(学号,课程号,成绩)每张表都属于3NF。

3.4 BC范式BCNF

BC范式BCNF,是指在第三范式的基础上进一步消除主属性对于码的部分函数依赖和传递依赖

注意
1.BC范式的判断,一般是有多个候选关键字的情况下

判断方法
通俗的来说,就是在【每一种情况】下,每一个【依赖的左边】决定因素都 【必然包含候选键】,如下

ps:每一种情况:
【学号,课程号】是候选键,这是一种情况,
如果还有身份证号,假设【学号,身份证号】也能唯一标识一组数据,那么此时【学号,身份证号】也是候选键,这是第二种情况。

在这里插入图片描述

上图中,候选键有两种情况:组合键(S,T)或者(S,J),依赖集为 {SJ-T,T-J},可知,STJ三个属性都是主属性,因此其达到了3NF((无非主属性),然而第二种情况,即(S,J)为候选键的时候,对于依赖T->J,T在这种情况不是候选键,即T-J的决定因素不包含任意候选码,因此上图不是BCNF。
要使上图关系模式转换为BCNF也很简单,只需要将依赖T->J变为TS->J即可这样其左边决定因素就包含了候选键之一S。

3.5 求候选键

**方法:**根据依赖集,找出从未在右边出现过的属性,必然是候选键之一,以该属性为基础,根据依赖集依次扩展,看能否遍历所有属性,将无法遍历的加入候选键中
在这里插入图片描述

4、模式分解★

范式之间的转换一般都是通过拆分属性,即模式分解,将具有部分函数依赖和传递依赖的属性分离出来,来达到一步步优化,一般分为以下两种:

  1. 保持函数依赖分解
    • 对于关系模式R,有依赖集F,若对R进行分解,2分解出来的多个关系模式,保持原来的依赖集不变,则为保持函数依赖的分解。
    • 如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(这是一个充分条件)。
    • 即简单判断方法:看函数每个依赖的左右两边属性是否都在同一个分解的模式(表)中
  2. 无损分解
    • 分解后的关系模式能够还原出原关系模式,就是无损分解,不能还原就是有损。
    • 当分解为两个关系模式,可以通过以下定理判断是否无损分解:
    • 如果R的分解为p={R1,R2},F为R所满足的函数依赖集合,分解p具有无损连接性的充分必要条件R1∩R2->(R1-R2)或者R1∩R2->(R2-R1)
    • 当分解为三个及以上关系模式时,可以通过表格法求解,如下:
    • 在这里插入图片描述

例题
在这里插入图片描述

5、并发控制(事务)

事务:由一系列操作组成,这些操作,要么全做,要么全不做,拥有四种特性,详解如下:

  • (操作)原子性:要么全做,要么全不做。
  • (数据)一致性:事务发生后数据是一致的,例如银行转账,不会存在A账户转出,但是B账户没收到的情况。
  • (执行)隔离性:任一事务的更新操作直到其成功提交的整个过程对其他事务都是不可见的,不同事务之间是隔离的,互不干涉。
  • (改变)持续性:事务操作的结果是持续性的。

事务是并发控制的前提条件,并发控制就是控制不同的事务并发执行,提高系统效率,但是并发控制中存在下面三个问题:
在这里插入图片描述

6、封锁协议

  • X锁排它锁(写锁)。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
  • s锁共享锁(读锁)。若事务T对数据对象A加上s锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁(也即能读不能修改),直到T释放A上的s锁。
  • 核心要是包含了写操作,就加X锁,要是只需要读,那就加s锁

共分三级封锁协议,如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、数据库新技术

1、数据库安全

在这里插入图片描述

在这里插入图片描述

2、分布式数据库★

在这里插入图片描述

3、数据仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、反规范化技术

在这里插入图片描述

5、大数据

在这里插入图片描述

6、SQL语言

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

鸿蒙智联:一统多设备,跨端融合新魔法

在当今科技飞速发展的时代&#xff0c;操作系统的优劣直接影响着用户的体验和设备的性能。而鸿蒙系统&#xff0c;宛如一颗璀璨的新星&#xff0c;凭借其卓越的跨端能力&#xff0c;为我们展现了一个全新的科技世界。 鸿蒙系统的最大魅力之一&#xff0c;就在于它能够实现一个系…

【嵌入式开发之数据结构】树的基本概念、逻辑结构和四种常用的遍历算法及实现

树&#xff08;Tree&#xff09;的定义及基本概念 树的定义 树(Tree)是个结点的有限集合T&#xff0c;它满足两个条件&#xff1a; 有且仅有一个特定的称为根&#xff08;Root&#xff09;的节点&#xff1b;其余的节点分为个互不相交的有限合集&#xff0c;其中每一个集合又…

【无重叠空间】python刷题记录

润到贪心篇。 class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:#十行贪心大神if not intervals:return 0#按照第第二个元素进行排序&#xff0c;贪心思想&#xff0c;参考活动安排都是以结束时间进行排序的intervals.sort(keylambda x:…

分离式网络变压器的集成化设计替代传统网络变压器(网络隔离滤波器)尝试

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是应用了分离式网络变压器设计的的新型网络变压器&#xff08;网络隔离变压器&#xff09; 今天我们一起来看这款新型网络变压器&#xff0c;它就是应用分离式网络变压器集成到电路板上&#xff0c;加上外…

git协同开发与冲突解决

协同开发流程 基本的使用方法 # 1 多人开发同一个项目-张三&#xff1a;本地 版本库-李四&#xff1a;本地 版本库-我&#xff1a; 本地 版本库----远程仓库&#xff1a;本地版本库内容--》推送到远程仓库-----# 2 演示&#xff08;我是项目管理员&#xff09;-1 增加几个开发…

(二刷)代码随想录第21天|236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先 递归三部曲&#xff1a; 1、确定参数和返回值&#xff1a; class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {} 2、确定中止条件&#xff1a; if (root null || root p || root q) { // 递归结…

lua 游戏架构 之 SceneLoad场景加载之 SceneBase (三)

谢谢大家关注一下啊我的微信 框架上 设计一个 基类 SceneLoad&#xff1a;BaseSceneLoad lua 游戏架构 之 SceneLoad场景加载&#xff08;一&#xff09;-CSDN博客https://blog.csdn.net/heyuchang666/article/details/140560014?spm1001.2014.3001.5501 设计多个 场景类&a…

无需业务改造,一套数据库满足 OLTP 和 OLAP,GaiaDB 发布并行查询能力

在企业中通常存在两类数据处理场景&#xff0c;一类是在线事务处理场景&#xff08;OLTP&#xff09;&#xff0c;例如交易系统&#xff0c;另一类是在线分析处理场景&#xff08;OLAP&#xff09;&#xff0c;例如业务报表。 OLTP 数据库擅长处理数据的增、删、改&#xff0c…

STM32测测速---编码电机读取速度的计算

1、首先先了解一下计算的公式 速度计算&#xff1a; 轮胎每转一圈的脉冲数取决于编码器的分辨率&#xff0c;可由下面公式进行计算&#xff1a; PPR是电机的线数 以GA25-370电机为例。 图片来源&#xff1a;第四节&#xff1a;STM32定时器&#xff08;4.JGA25-370霍尔编码器…

规范:前端工程代码规范

准备工作 前端工程化介绍 前端工程化是指将前端开发流程标准化、自动化和模块化的过程。以下是一些常见的步骤或配置&#xff1a; 代码版本控制&#xff1a;使用 Git 等版本控制系统来管理代码的变更和协作。 依赖管理&#xff1a;使用 npm 或 yarn 等包管理工具来管理项目依…

园区道路车辆智能管控视频解决方案,打造安全畅通的园区交通环境

一、背景需求分析 随着企业园区的快速发展和扩张&#xff0c;道路车辆管理成为了保障园区秩序、提升运营效率及确保员工安全的重要任务。针对这一需求&#xff0c;旭帆科技TSINGSEE青犀提出了一种企业园区道路车辆管控的解决方案&#xff0c;通过整合视频监控、智能识别等技术…

6.2 基础功能介绍

本节重点介绍 : 数据源操作新增一个数据源dashboard操作folder操作alerting操作用户和组操作 本节重点总结 : 数据源操作dashboard操作folder操作alerting操作用户和组操作

linux时间服务器——软件安装,配置时间服务器客户端 ,配置时间服务器服务端

1 、软件安装 # 设置当前时区 [rootlocalhost ~] # timedatectl set-timezone Asia/Shanghai [rootlocalhost ~] # yum install -y chrony [rootlocalhost ~] # systemctl enable --now chronyd [rootserver1 ~] # cat /etc/chrony.conf # 设置时间服务器的服务端名字 s…

ceph log内容解析

log内容构造 如osd的一条log 分别表示 时间戳 线程id 日志等级 子模块 内容实体 剖析源码实现 每条log都是由一个Entry构成 定义在src/log/entry.h中 Entry(short pr, short sub) :m_stamp(clock().now()), // 打印日志时的时间戳m_thread(pthread_self()), // 打印日志的线…

MySQL进阶_11.主从复制

文章目录 一、主从复制概述1.1、如何提升数据库并发能力1.2、主从复制的作用 二、主从复制的原理2.1、原理剖析2.2、原理剖析 一、主从复制概述 1.1、如何提升数据库并发能力 应用对数据库而言都是“ 读多写少 ”&#xff0c;也就说对数据库读取数据的压力比较大&#xff0c;有…

【Android】使用视图绑定ViewBinding来代替findViewById

文章目录 介绍作用用法开启ViewBinding功能自动生成绑定类在Activity中使用访问视图控件 区别 介绍 ViewBinding 是 Android 开发中的一个功能&#xff0c;它简化了访问视图的过程&#xff0c;避免了使用 findViewById 的繁琐步骤。它通过生成与布局文件相对应的绑定类&#xf…

【python基础】组合数据类型:元组、列表、集合、映射

文章目录 一. 序列类型1. 元组类型2. 列表类型&#xff08;list&#xff09;2.1. 列表创建2.2 列表操作2.3. 列表元素遍历 ing元素列表求平均值删除散的倍数 二. 集合类型&#xff08;set&#xff09;三. 映射类型&#xff08;map&#xff09;1. 字典创建2. 字典操作3. 字典遍历…

OV7670寄存器读出0x00或0xFF

文章目录 问题描述原因分析解决方案 问题描述 OV7670的输出图像异常&#xff0c;怀疑寄存器没有正确配置&#xff0c;在SignalTap中观察到SIO_D在读出阶段一直为高或低 寄存器读出0x00 寄存器读出0xFF 原因分析 在确保电源、时钟和读写时序没有问题的情况下&#xff0c;有…

mysql的索引、事务和存储引擎

目录 索引 索引的概念 索引的作用 作用 索引的副作用 创建索引 创建索引的原则和依据 索引的类型 创建索引 查看索引 删除索引 drop 主键索引 普通索引 添加普通索引 唯一索引 添加唯一索引 组合索引 添加组合索引 查询组合索引 全文索引 添加全文索引 …

K12智慧校园智能化解决方案

1. 项目背景 “十三五”期间&#xff0c;教育信息化工作旨在为教育改革发展提供动力与手段&#xff0c;目标是到2020年建成与国家教育现代化发展目标相适应的教育信息化体系。 2. 建设需求 智慧校园系统框架解析与建设目标分析&#xff0c;旨在实现教育信息化目标任务。 3.…