关系型数据库的介绍与历史(History of DataBase)

  昨晚和大家聊到 数据库(DataBase)简单概述 ,今天和大家聊聊 关系型数据库(关系数据库) 也就是DataBase(简称DB)的历史,它是以关系模型(Relational Model)来构建的数据存储系统。

  关系数据库有个核心的东西”SQL“,它是关系数据库的编程语言。其实,在关系数据库问世以前,就已经有数据库的概念了,之后出现了层次结构、网状结构等不是由关系模型构建的数据库。

在这里插入图片描述

  今天,我们把这些不是由关系模型构建的数据库统称为 NoSQL,也就是非关系数据库。“No” 最开始想表达 “不是” 关系数据库,从而跟关系数据库划开界限。如今,这个“No”,表达的意思是 Not Only,其含义是 NoSQL不仅仅是非关系数据库,还是对关系数据库一个非常好的补充(把所有不是关系型数据库的数据库统称为NoSQL)。

  谈到 History of DataBase,就必须提起关系数据库的奠基人Edgar F. Codd (埃德加·科德)。Codd 从牛津大学数学系毕业后,参加了第二次世界大战,二战胜利后加入了美国的IBM公司。1969年,他在公司内部刊物上发表了一篇关系型数据库的论述,但由于是 公司内部的刊物,所以并没有得到广泛传播。1970年,Codd在Communications of the ACM上发表了名为A Relational Model of Datafor Large Shared Data Banks(用于大型共享数据库的关系数据模型)的论文(那时候数据库还不叫DataBase,而是Data Banks也就是银行数据仓库),提出了关系模型的概念,奠定了关系型数据库的理论基础。后来,很多人看到这篇文章并以里面的内容为基础,做出了关系型数据库各种各样的产品,其中就包括拉里·埃里森受到Codd的思想和成果的启发了创立甲骨文公司 (主要从事计算机软件和技术的开发、销售和支持,是全球最大的企业级软件公司之一)。随后,Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。
在这里插入图片描述

  IBM公司则是全球知名的跨国科技公司之一,成立于1911年,总部位于美国纽约州阿蒙克市。它是电子计算机领域的先驱,曾经推出过多款具有历史意义的计算机产品,如IBM System/360、IBM PC等。目前,IBM公司的业务涉及云计算、人工智能、区块链、物联网、大数据等领域,是全球最大的信息技术和服务提供商之一。
  统计学工具SPSS(Statistical Package for the Social Sciences)是一款用于统计分析和数据挖掘的软件工具,最初由美国的一家公司开发,后来于2009年被IBM公司收购。自此以后,SPSS成为IBM的一部分,并与IBM的其他产品和服务进行整合。
  SPSS软件提供了广泛的统计分析功能,包括描述统计、回归分析、方差分析、聚类分析、因子分析等。它在社会科学、市场研究、医学研究等领域得到了广泛的应用,为用户提供更强大的数据分析和决策支持能力。

了解部分:并不影响我们后续学习

那么什么样的数据库称为关系型数据库呢?满足以下三个特点:

1、理论基础:关系代数(离散数学有提到)

关系代数用于描述和操作关系数据库中的数据,它提供了一组形式化的操作(集合论和一阶逻辑、关系运算),如选择、投影、联接、差异、并集、笛卡尔积等,这些操作都可以通过集合论和一阶逻辑进行严格定义和证明。

1)集合论(交 ∩ 、并∪、补等)和一阶逻辑(谓词、量词、命题等)

一阶逻辑是数理逻辑中的一个重要分支,也称为一阶谓词逻辑或一阶述词逻辑,它是一种用于描述真实世界中命题和量化关系的逻辑系统。一阶逻辑通过使用量词、变元、谓词等符号来建立命题和推理的形式化表示,能够进行精确的推理和证明工作。所谓的一阶逻辑就是把人们用自然语言描述的命题符号化或公式化,便于推导与演算。 一阶逻辑包含一下内容:
个体:具体的事物或抽象的概念
谓词:表示个体性质或彼此关系
量词:全称量词:用符号∀表示 ; 存在量词:用符号ョ表示
连接符:合取(与)∧、折取(或)∨、否定(非)¬、蕴含→、等价(双向蕴含)↔

虽然叫法不同,但表达的意义是等价的,都有自己专业术语,混合理解更轻松(五个联接词的优先顺序为:否定,合取,析取,蕴涵,等价;)
在这里插入图片描述

在这里插入图片描述

2)关系运算:选择(σ)、投影(π)、笛卡尔积(x,“叉积”或“交叉连接”)、并集(u)、差集(-)、重命名(ρ)六个原始运算

选择运算符(σ)用于从一个关系中选取满足指定条件的元组;
投影运算符(π)用于从一个关系中选择特定的属性列;
笛卡尔积运算符(x)用于将两个关系中的所有元组进行组合;
并集运算符(u)用于将两个关系中的所有元组合并在一起;
差集运算符(-)用于从一个关系中删除另一个关系中存在的元组;
重命名运算符(ρ)用于对一个关系中的属性列进行重命名。

举例:两个集合 P = {A, B, C} 和 Q = {1, 2, 3} 的笛卡尔积可以表示为:
P × Q = {(A, 1), (A, 2), (A, 3), (B, 1), (B, 2), (B, 3), (C, 1), (C, 2), (C, 3)}
这里,每对括号中的第一个元素来自集合 P,第二个元素来自集合 Q。这些有序对构成了 P 和 Q 的笛卡尔积。

看一眼就好,就好比老师说听不懂没关系听一耳朵就好,毕竟Codd是一个数学大牛,例如他发表的第一篇关于关系型数据库的论文内容他都是用数学知识推导证明成功,可想他有很深的数学功底。如今,我们学习数据库只需了解最基本的这些!!!当然,感兴趣的friend可以找论文钻研琢磨一番,这个过程可能需要求助数学界的大佬。

熟悉部分:方便我们后续学习

2、具体表象:用二维表保存数据

将来我们的数据库系统肯定不只是一张表,而是有很多张表连接在一起。二维表(下面简称表)有行有列,excel就是一个典型的二维表。

需要记忆:
表的每一行是一条记录(record),也称为元组 (tuple)
表的每一列是一个字段 (field),更专业称为属性 (attribute)
行和列交叉单元格就是数据
表的主键(primary key):唯一的标识和确定一条记录(独一无二的)
表的外键(foreign key):外来的主键(用于建立表与表之间的关联关系,通过外键可以引用其他表中的主键作为关联条件)
实体(entity):整张表称为实体

在这里插入图片描述
简单解析:
销售表中,purchase_number(购买编号或交易流水号)是独一无二的列,我们称为主键,主键在一张表中能够唯一确定一条记录。该表有两个外键:customer_id(用户ID)和 item_code(商品代码),这两个外键分别是用户信息表、商品表的主键,它们在各自表内是独一无二的,能够唯一确定一条记录。

3、编程语言:SQL - 结构化查询语言 Structured query language

读作C扣

  这是一个领域特定语言(DSL),与Python这样的通用语言不同,DSL更专注于解决某个具体领域中的问题,具有更高的表达能力和可读性,而Python这样的通用语言很多场景都能用到。
  这是一个声明式编程语言,不关注过程,只关注结果。在Python中,需要给一个列表排序,如果这时候并没有排序函数,就需要写排序算法,需要自行实现。在SQL中,只需要申明一下,我要排序即可,数据库底层会自行实现。
  结构化查询语言分为四个部分 (加粗部分重点记忆)
数据定义语言(DDL - 建库建表): create - 创建 / drop - 删除 / alter - 修改 / rename / truncate
数据操作语言(DML): insert - 新增 / delete - 删除 / update - 修改 / select - 查询(读写数据、提数)
数据控制语言(DCL):grant / revoke
事务控制语言(TCL):start transaction / commit / rollback

番外:二维表有行有列,让我想到统计学上的二维列联表,它们之间有什么联系吗?
  原来,二维列联表是一种特殊形式的二维表,用于统计和分析两个或多个分类变量之间的关系,在二维列联表中,单元格值用于统计和描述行变量与列变量之间的关联程度。
在这里插入图片描述

慢慢来,今天先熟悉上述需要记忆的地方,后面会逐一介绍!!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 多线程(2)——线程同步

目录 1 线程不安全2 线程同步方式2.1 简单的阻塞方法2.2 锁2.2.1 Lock使用2.2.2 互斥体Mutex2.2.3 信号量Semaphore2.2.3 轻量级信号量SemaphoreSlim2.2.4 读写锁ReaderWriterLockSlim 2.3 信号同步2.3.1 AutoResetEvent2.3.1.1 AutoResetEvent实现双向信号 2.3.2 ManualResetE…

麒麟系统—— openKylin 安装 Nginx

麒麟系统—— openKylin 安装 Nginx 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。 二、下载 nginx三、解压与运行解压检查与编译安装编译运行 四、配置加入到服务中加入环境变量nginx 配置文件 五、常用命令 Nginx 是一款高性能的 HTTP 和反向代理服务器&#xff0c…

如何访问 Oracle OKE 集群

OKE是Oracle Cloud提供的托管Kubernetes服务,为用户提供强大而灵活的容器编排平台。在本文中,我们将详细介绍如何有效地与OKE集群进行交互,包括访问集群的不同方式、管理访问权限以及执行常见操作的步骤。 1 安装oci命令 1.1 在Oracle Linux…

【数据库】mysql触发器使用

题目: 创建职工表以及职工工资表职工表字段:工号,姓名,性别,年龄工资表字段:编号自增,职工工号,基础工资10000通过触发器实现:对职工进行添加时 工资表中也要体现当前职…

解说 AIGC(人工智能生成内容) 是什么?

前言 AIGC (AI Generated Content)即人工智能生成内容,一般认为是相对于PCG(专业生成内容)、UCG(用户生成内容)而提出的概念。AIGC狭义概念是利用AI自动生成内容的生产方式。广义的AIGC可以看作是像人类一样具备生成创造能力的AI技术,即生成式AI,它可以基于训练数据和生成算法…

数据可视化 pycharts实现中国各省市地图数据可视化

自用版 数据格式如下: 运行效果如下: import pandas as pd from pyecharts.charts import Map, TreeMap, Timeline, Page, WordCloud from pyecharts import options as opts from pyecharts.commons.utils import JsCode from pyecharts.globals im…

THREE.JS动态场景开发实战【赛博朋克】

在本教程中,我们将探索如何创建类似 Three.js 的赛博朋克场景,灵感来自 Pipe 网站上的背景动画。 我们将指导你完成使用 Three.js 编码动态场景的过程,包括后处理效果和动态光照,所有这些都不需要任何着色器专业知识。 我用这个场…

3D词云图

工具库 tagcanvas.min.js vue3&#xff08;框架其实无所谓&#xff0c;都可以&#xff09; 实现 <script setup> import { onMounted, ref } from vue; import ./tagcanvas.min.js;const updateFlag ref(false);// 词云图初始化 const initWordCloud () > {let …

IP定位如何进行业务风控反欺诈

IP地址作为接入互联网的唯一标识&#xff0c;分析其归属地及网络类型等多维度信息&#xff0c;帮助识别虚假流量和欺诈账号&#xff0c;保障账号和交易安全&#xff0c;帮助企业持续优化风控与反欺诈模型&#xff0c;降低经济损失。 交易聚集分析 通过IP地址数据服务得到的交易…

【EI会议征稿中|ACM出版】#先投稿,先送审#第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024)​

#先投稿&#xff0c;先送审#ACM出版#第三届网络安全、人工智能与数字经济国际学术会议&#xff08;CSAIDE 2024&#xff09; 2024 3rd International Conference on Cyber Security, Artificial Intelligence and Digital Economy 2024年3月8日-10日 | 中国济南 会议官网&…

四通道 LVDS 差分线缆接收器MS21148T

产品简述 MS21148T 是一款四路低压差分信号 (LVDS) 线路接收器。在 输入共模电压范围内&#xff0c;每一路差分接收器都可以把 100mV 的差 分输入电压转换成有效的逻辑输出。 该芯片可应用于约 100Ω 的 受控阻抗介质上进行点对点基带数据传输。传输介质可以是印 刷电…

Git系列---远程操作

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 引用 1.理解分布式版本控制…

如何使用docker部署Swagger Editor并实现无公网ip远程协作编辑文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…

lombok导致的IndexOutOfBoundsException

一、问题描述 ERROR 25152 --- [1.190-81-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSyste…

Python处理图片生成天际线(2024.1.29)

1、天际线简介 天际线&#xff08;SkyLine&#xff09;顾名思义就是天空与地面的边界线&#xff0c;人站在不同的高度&#xff0c;会看到不同的景色和地平线&#xff0c;天空与地面建筑物分离的标记线&#xff0c;不得不说&#xff0c;每天抬头仰望天空&#xff0c;相信大家都可…

python实现贪吃蛇小游戏(附源码)

文章目录 导入所需的模块坐标主游戏循环模块得分 贪吃蛇小游戏&#xff0c;那个曾经陪伴着00后和90后度过无数欢笑时光的熟悉身影&#xff0c;仿佛是一把打开时光之门的钥匙。它不仅是游戏世界的经典之一&#xff0c;更是我们童年岁月中不可或缺的一部分&#xff0c;一个承载回…

CIFAR-10数据集详析:使用卷积神经网络训练图像分类模型

1.数据集介绍 CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成&#xff0c;每类 6000 张图像。有 50000 张训练图像和 10000 张测试图像。 数据集分为5个训练批次和1个测试批次&#xff0c;每个批次有10000张图像。测试批次正好包含从每个类中随机选择的 1000 张图像…

Android平台如何实现RTSP转GB28181

为什么要做GB28181设备接入侧&#xff1f; 实际上&#xff0c;在做Android平台GB28181设备接入模块的时候&#xff0c;我们已经有了非常好的技术积累&#xff0c;比如RTMP推送、轻量级RTSP服务、一对一互动模块、业内几乎最好的RTMP|RTSP低延迟播放器。 Android平台GB28181接…

VBA技术资料MF113:将文件夹图像添加到PowerPoint

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

第七讲_JavaScript的Iterator和Generator

JavaScript的Iterator和Generator 1. Iterator1.2 for-of语法糖 2. Generator2.1 定义一个生成器函数2.2 常用的方法2.3 基本用法2.4 传参的用法2.5 异步的用法 1. Iterator ES6 中&#xff0c;默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性。一个数据结构只要拥…