关系型数据库的介绍与历史(History of 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.mfbz.cn/a/371678.html

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

相关文章

C/C++内存管理的底层调用逻辑

✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏:C语言🤪、Cpp😶‍🌫️、数据结构初阶💀 💽座右铭:“記住,每一天都是一個新的開始&#x1…

10_机械臂运动学_机械臂C++逆解——2023

就是算! 遨博机械臂改进DH参数表: 机械臂正运动学连杆变换通式: 其中si代表sin(θi),ci代表cos(θi) sij代表sin(θi-θj),cij代表cos(θi-θj) sijk代表sin(θi-θjθk),cijk代表cos(θi-θj-θk),用两角和差公式直接展开即可. 每…

如何获取气象数据

问题 如何获取气象数据 详细问题 笔者使用NOAA获取部分气象数据,但是涉及字段有限,如何获取更丰富的气象数据,譬如包括太阳辐射、温度、湿度、云覆盖等信息呢? 解决方案 步骤1、访问https://power.larc.nasa.gov/data-access…

财务数据处理问题及解决方案分享

一、平台介绍 财务自营计费主要承接京东自营数据在整个供应链中由C端转B端的功能实现,在整个供应链中属于靠后的阶段了,系统主要功能是计费和向B端的汇总。 二、问题描述 近年来自营计费数据量大增,有百亿的数据量,一天中汇总占…

【Linux】信号-下

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 🌎推荐文章:【LeetCode】winter vacation training 目录 👉🏻信号递达,信号未决&#x…

软考20-上午题-串及其模式匹配

串(字符串)是一种特殊的线性表,其数据元素为字符。如:"abc"。 一、串的定义 由字符构成的有限序列,是一种线性表。 串的比较:以字符的ASCII值作为依据。比较操作从两个字符串的第一个字符开始&a…

Openresty+Lua+Redis实现高性能缓存

一、背景 当我们的程序需要提供较高的并发访问时,往往需要在程序中引入缓存技术,通常都是使用Redis作为缓存,但是要再更进一步提升性能的话,就需要尽可能的减少请求的链路长度,比如可以将访问Redis缓存从Tomcat服务器…

4. 树(二叉树、二叉查找树/二叉排序树/二叉搜索树、平衡二叉树、平衡二叉B树/红黑树)

树 1. 二叉树1.1 概述1.2 特点1.3 二叉树遍历方式1.3.1 前序遍历(先序遍历)1.3.2 中序遍历1.3.3 后序遍历1.3.4 层序遍历 2. 二叉查找树(二叉排序树、二叉搜索树)2.1 概述2.2 特点 3. 平衡二叉树3.1 概述3.2 特点3.3 旋转3.3.1 左旋3.3.2 右旋 3.4 平衡二…

Quartus IP 之mif与hex文件创建与使用

一、mif与hex概述 ROM IP的数据需要满足断电不丢失的要求,ROM IP数据的文件格式一般有三种文件格式:.mif、.hex、.coe,Xilinx与Intel Altera支持的ROM IP数据文件格式如下: Xilinx与Altera支持的ROM文件格式 Alterahex、mifAM&am…

JS第二天、原型、原型链、正则

☆☆☆☆ 什么是原型? 构造函数的prototype 就是原型 专门保存所有子对象共有属性和方法的对象一个对象的原型就是它的构造函数的prototype属性的值。prototype是哪来的?所有的函数都有一个prototype属性当函数被创建的时候,prototype属性…

项目02《游戏-08-开发》Unity3D

基于 项目02《游戏-07-开发》Unity3D , 本次任务做物品相互与详情的功能, 首先要做 点击相应, 接下来用接口实现点击相应事件,具体到代码中,我们找到需要响应鼠标事件的对象, 双击PackageCell…

食堂预约系统

文章目录 前言​部分沟通内容技术点小程序功能部分代码段功能图 商家管理系统功能说明功能图登录页面商家管理页面 食品管理订单管理其他功能 结束语 前言​ 最近,接了个小项目——学校食堂预约取餐系统。 具体需求如下图: 部分沟通内容 技术点 系统…

C++:模板初阶

泛型编程 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。 函数模板 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。…

百面嵌入式专栏(面试题)网络编程面试题

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍网络编程面试题 。 1、什么是IO多路复用 I/O多路复用的本质是使用select,poll或者epoll函数,挂起进程,当一个或者多个I/O事件发生之后,将控制返回给用户进程。以服务器编程为例,传统的多进程(多线程…

antv/x6 边添加鼠标悬浮高亮和删除功能

antv/x6 边添加鼠标悬浮高亮和删除功能 效果添加悬浮效果和删除工具取消悬浮效果边删除后的回调函数 效果 添加悬浮效果和删除工具 this.graph.on(edge:mouseenter, ({ cell }) > {let cellId cell.store.data.source.celllet sourceCell _this.graph.getCellById(cellId…

绝地求生:盘点游戏内七款真人脸模,你最喜欢哪款?

从27.1版本更新后,游戏内上线了荣都地图代言人吴彦祖和李政宰的真人脸模,从此闲游盒的各位盒友灵魂搭配的资源库里又多了两位英俊脸庞,那么今天闲游盒来盘点一下游戏内上线的七款真人脸模,看看大家更喜欢哪款呢? 吴彦祖和李政宰 …

CSS-IN-JS

CSS-IN-JS 为什么会有CSS-IN-JS CSS-IN-JS是web项目中将CSS代码捆绑在JavaScript代码中的解决方案。 这种方案旨在解决CSS的局限性,例如缺乏动态功能,作用域和可移植性。 CSS-IN-JS介绍 1:CSS-IN-JS方案的优点: 让css代码拥…

【MySQL】DQL的总结和案例学习

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-VWRkWqFrRMi4uLRa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

bert分类模型使用

使用 bert-bert-chinese 预训练模型去做分类任务,这里找了新闻分类数据,数据有 20w,来自https://github.com/649453932/Bert-Chinese-Text-Classification-Pytorch/tree/master/THUCNews 数据 20w ,18w 训练数据,1w 验…

挑战!贪吃蛇小游戏的实现(1)

引言 相信大家都玩过贪吃蛇这个游戏! 玩家控制一个不断移动的蛇形角色,在一个封闭空间内移动。随着时间推进,这个蛇形角色会逐渐增长,通常是通过吞食屏幕上出现的物品(如点或者其他标志)来实现。每当贪吃…