【从零开始学习计算机科学】数据库系统(二)关系数据库 与 关系代数

news2025/3/14 12:03:49

【从零开始学习计算机科学】数据库系统(二)关系数据库 与 关系代数

  • 关系数据库
    • 结构化查询语言SQL
      • 数据定义语言(DDL)
      • 数据查询语言(Data Query Language, DQL)
      • 数据操纵语言(Data Manipulation Language, DML)
      • 数据控制语言(Data Control Language, DCL)
    • 关系型数据库的优缺点
    • 关系数据结构及形式化定义
      • 相关概念
    • 关系代数
      • 传统的集合运算
        • 并 Union
        • 差 Difference
        • 交 Intersection
        • 广义笛卡尔积 Extended Cartesian Product
        • 专门的关系运算
        • 选取Selection
        • 投影Projection
        • θ \theta θ连接( θ \theta θ Join)
        • 除法Division

关系数据库

关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。关系数据库的定义造成元数据的一张表格或造成表格、列、范围和约束的正式描述。每个表格(有时被称为一个关系)包含用列表示的一个或更多的数据种类。 每行包含一个唯一的数据实体,这些数据是被列定义的种类。当创造一个关系数据库的时候,你能定义数据列的可能值的范围和可能应用于那个数据值的进一步约束。而SQL语言是标准用户和应用程序到关系数据库的接口。其优势是容易扩充,且在最初的数据库创造之后,一个新的数据种类能被添加而不需要修改所有的现有应用软件。主流的关系数据库有oracle、db2、sqlserver、sybase、mysql等。

在关系型数据库中,实体以及实体间的联系均由单一的结构类型来表示,这种逻辑结构是一张二维表。
以下为一个学生选课系统,区实体和实体间联系在数据库中的逻辑结构可通过下图展示。

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

关系型数据库以行和列的形式存储数据,这一系列的行和列被称为表,一组表组成了数据库。下图所示的员工信息表就是关系型数据库的表。

在这里插入图片描述

属性说明:

二维表:也称为关系,它是一系列二维数组的集合,用来代表与存储数据对象之间的关系。它由纵向的列和横向的行组成。

行:也叫元组或记录,在表中是一条横向的数据集合,代表一个实体。

列:也叫字段或属性,在表中是一条纵行的数据集合。列也定义了表中的数据结构。

主属性:关系中的某一属性组,若它们的值唯一地标识一个记录,则称该属性组为主属性或主键。主属性可以是一个属性,也可以由多个属性共同组成。在上图中,学号是学生信息表的主属性,但是课程信息表中,学号和课程号共同唯一地标识了一条记录,所以学号和课程号一起组成了课程信息表的主属性。

结构化查询语言SQL

关系型数据库的核心是其结构化的查询语言(Structured Query Language, SQL),SQL 涵盖了数据的查询、操纵、定义和控制,是一个综合的、通用的且简单易懂的数据库管理语言。同时 SQL 又是一种高度非过程化的语言,数据库管理者只需要指出做什么,而不需要指出该怎么做即可完成对数据库的管理。

SQL 可以实现数据库全生命周期的所有操作,所以 SQL 自产生之日起就成了检验关系型数据库管理能力的“试金石”,SQL 标准的每一次变更和完善都引导着关系型数据库产品的发展方向。

SQL 至少包含以下四个部分。

数据定义语言(DDL)

DDL 包括 CREATE、DROP、ALTER 等动作。在数据库中使用 CREATE 来创建新表,DROP 来删除表,ALTER 负责数据库对象的修改。

例如,创建学生信息表使用以下命令:

CREATE TABLE StuInfo(id int(10) NOT NULL,PRIMARY KEY(id),name \\varchar(20), female bool,class varchar(20));

数据查询语言(Data Query Language, DQL)

DQL 负责进行数据查询,但是不会对数据本身进行修改。
DQL的语法结构如下:

SELECT FROM 表名1,表2 

where 查询条件    \#可以组合 and、or、 not、 =、between、and、in、like 等;

group by 分组字段

having (分组后的过滤条件)

order by 排序字段和规则;

数据操纵语言(Data Manipulation Language, DML)

DML 负责对数据库对象运行数据访问工作的指令集,以 INSERT、UPDATE、DELETE 三种指令为核心,分别代表插入、更新与删除。

向表中插入数据命令如下:

INSERT 表名 (字段1,字段2,......,字段n,) VALUES (字段1值,字段2值,......,字段n值) where 查询条件;

数据控制语言(Data Control Language, DCL)

DCL 是一种可对数据访问权进行控制的指令。它可以控制特定用户账户对查看表、预存程序、用户自定义函数等数据库操作的权限,由 GRANT 和 REVOKE 两个指令组成。

DCL 以控制用户的访问权限为主,GRANT 为授权语句,对应的 REVOKE 是撤销授权语句。

关系型数据库的优缺点

关系型数据库已经发展了数十年,其理论知识、相关技术和产品都趋于完善,是目前世界上应用最广泛的数据库系统。

关系型数据库的优点主要有:

容易理解:二维表结构非常贴近逻辑世界的概念,关系型数据模型相对层次型数据模型和网状型数据模型等其他模型来说更容易理解。

使用方便:通用的 SQL 使用户操作关系型数据库非常方便。

易于维护:丰富的完整性大大减少了数据冗余和数据不一致的问题。关系型数据库提供对事务的支持,能保证系统中事务的正确执行,同时提供事务的恢复、回滚、并发控制和死锁问题的解决。

关系型数据库的缺点主要有:

随着各类互联网业务的发展,关系型数据库难以满足对海量数据的处理需求,存在以下不足。

高并发读写能力差:网站类用户的并发性访问非常高,而一台数据库的最大连接数有限,且硬盘 I/O 有限,不能满足很多人同时连接。
对海量数据的读写效率低:若表中数据量太大,则每次的读写速率都将非常缓慢。

扩展性差:在一般的关系型数据库系统中,通过升级数据库服务器的硬件配置可提高数据处理的能力,即纵向扩展。但纵向扩展终会达到硬件性能的瓶颈,无法应对互联网数据爆炸式增长的需求。还有一种扩展方式是横向扩展,即采用多台计算机组成集群,共同完成对数据的存储、管理和处理。这种横向扩展的集群对数据进行分散存储和统一管理,可满足对海量数据的存储和处理的需求。但是由于关系型数据库具有数据模型、完整性约束和事务的强一致性等特点,导致其难以实现高效率的、易横向扩展的分布式架构。

关系数据结构及形式化定义

关系模型是建立在集合代数的基础上的。关系的每个分量必须是不可分割的数据项。

相关概念

域:一组具有相同数据类型的值的集合。

笛卡尔积:是在域上的一种运算。

关系:关系是笛卡尔积的有限子集,是一张二维表,每行对应元组,每列对应属性。关系的本质就是集合。

码(键):如果一个属性能够唯一的标志一个元组,则这个属性就是一个码。

候选码:如果一个码就是最小超码,将它称为候选码。

主码:当有多个候选码时,选定一个为主码,由用户明确定义,通常用下划线表示。

外码:表B的主键出现在了表A中,这个主键称为表A的外码。

参照关系与被参照关系(目标关系):参照关系中的外码的值在被参照关系中必须实际存在或者为空。

全码:关系模式的所有属性都是这个关系模式的候选码。

关系的类型:基本关系,查询表和视图表。

关系代数

关系模型中常用的关系操作包括查询操作和更新操作(包括插入、删除和修改)两大部分。从计算机语言角度看,后者在前者的基础上工作,前者比后者复杂,但前者有理论基础,所以成为了主要的研究对象,也是关系操作中最主要的部分。

关系操作采用集合操作方式,即操作的对象和结果都是集合,称为Set-at-a-time(一次一集合)的操作方式。

早期的关系操作通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。前者用对关系的运算来表达查询要求,后者用谓词来表达查询要求。关系演算又可以根据谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。三种运算语言在表达能力上是等价的。

关系代数的运算对象是关系,运算结果也是关系。而我们说过关系是笛卡尔积集合的子集,所以也印证了我们前述Set-at-a-time的操作方式。关系代数中用到的运算符主要有以下的类型:

集合运算符 ∪ \cup (并), ∩ \cap (交), − - (差), × \times ×(笛卡尔积):

专门的关系运算符 σ \sigma σ(选取), Π \Pi Π(投影), ⋈ X θ Y \bowtie_{X\theta Y} Y θ \theta θ连接), ⋈ \bowtie (自然连接), ÷ \div ÷(除)。

算术比较运算符: > , < , ≤ , ≥ , = , ≠ >,<,\leq,\geq,=,\neq >,<,,,=,=

逻辑运算符: ∧ , ∨ , ℸ \land,\lor,\daleth ,,

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

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

相关文章

Linux驱动开发实战(四):设备树点RGB灯

Linux驱动开发实战&#xff08;四&#xff09;&#xff1a;设备树点RGB灯 文章目录 Linux驱动开发实战&#xff08;四&#xff09;&#xff1a;设备树点RGB灯前言一、驱动实现1.1 驱动设计思路1.2 关键数据结构1.3 字符设备操作函数1.4 平台驱动探测函数1.5 匹配表和平台驱动结…

vue中,watch里,this为undefined的两种解决办法

提示&#xff1a;vue中&#xff0c;watch里&#xff0c;this为undefined的两种解决办法 文章目录 [TOC](文章目录) 前言一、问题二、方法1——使用function函数代替箭头函数()>{}三、方法2——使用that总结 前言 ‌‌‌‌‌尽量使用方法1——使用function函数代替箭头函数()…

设计模式C++

针对一些经典的常见的场景, 给定了一些对应的解决方案&#xff0c;这个就叫设计模式。 设计模式的作用&#xff1a;使代码的可重用性高&#xff0c;可读性强&#xff0c;灵活性好&#xff0c;可维护性强。 设计原则&#xff1a; 单一职责原则&#xff1a;一个类只做一方面的…

前端构建工具进化论:从Grunt到Turbopack的十年征程

前端构建工具进化论&#xff1a;从Grunt到Turbopack的十年征程 一、石器时代&#xff1a;任务自动化工具&#xff08;2012-2014&#xff09; 1.1 Grunt&#xff1a;首个主流构建工具 // Gruntfile.js 典型配置 module.exports function(grunt) {grunt.initConfig({concat: {…

设备预测性维护:企业降本增效的关键密码​

在当今竞争激烈的商业战场中&#xff0c;企业犹如一艘在波涛汹涌大海上航行的巨轮&#xff0c;要想乘风破浪、稳步前行&#xff0c;降本增效便是那至关重要的 “船锚”&#xff0c;帮助企业在复杂的市场环境中站稳脚跟。而设备预测性维护&#xff0c;正是开启企业降本增效大门的…

css基本功

为什么 ::first-letter 是伪元素&#xff1f; ::first-letter 的作用是选择并样式化元素的第一个字母&#xff0c;它创建了一个虚拟的元素来包裹这个字母&#xff0c;因此属于伪元素。 grid布局 案例一 <!DOCTYPE html> <html lang"zh-CN"><head&…

信号处理抽取多项滤波的数学推导与仿真

昨天的《信号处理之插值、抽取与多项滤波》&#xff0c;已经介绍了插值抽取的多项滤率&#xff0c;今天详细介绍多项滤波的数学推导&#xff0c;并附上实战仿真代码。 一、数学变换推导 1. 多相分解的核心思想 将FIR滤波器的系数 h ( n ) h(n) h(n)按相位分组&#xff0c;每…

C++双端队列知识点+习题

在C中&#xff0c;双端队列&#xff08;Deque&#xff0c;发音为“deck”&#xff09;是标准模板库&#xff08;STL&#xff09;中的一种容器适配器&#xff0c;其全称为Double-Ended Queue。它结合了队列和栈的特点&#xff0c;允许在容器的两端&#xff08;前端和后端&#x…

【递归、搜索和回溯算法】专题二 :二叉树中的深搜

二叉树中的深搜 深度优先遍历&#xff08;DFS&#xff09;&#xff1a;一种沿着树或图的深度遍历节点的算法&#xff0c;尽可能深地搜索树或图的分支&#xff0c;如果一条路径上的所有结点都被遍历完毕&#xff0c;就会回溯到上一层&#xff0c;继续找一条路遍历。 在二叉树中…

【vue3学习笔记】(第150-151节)computed计算属性;watch监视ref定义的数据

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 本篇内容对应课程第150-151节 课程 P150节 《computed计算属性》笔记 写一个简单的 姓、名输入框效果&#xff1a; 用vue2的形式定义一个计算属性 fullName&#xff1a; 测试页面展示无问题&#xff1a; 但是&#xff0c;在vue…

MySQL 8 设置允许远程连接(Windows环境)

&#x1f31f; MySQL 8 设置允许远程连接&#xff08;Windows环境&#xff09; 在开发和部署应用时&#xff0c;经常需要从远程主机连接到MySQL数据库。默认情况下&#xff0c;MySQL仅允许本地连接&#xff0c;因此需要进行一些配置才能允许远程访问。今天&#xff0c;我将详细…

我又又又又又又更新了~~纯手工编写C++画图,有注释~~~

再再再次感谢Ttcofee提的问题 本次更新内容&#xff1a; 鼠标图案&#xff08;切换&#xff09;&#xff0c;版本号获取&#xff0c;输入框复制剪切板 提前申明&#xff1a;如果运行不了&#xff0c;请到主页查看RedpandaDevc下载&#xff0c;若还是不行就卸了重装。 版本号&…

全面解析:将采购入库单数据集成到MySQL的技术实施

旺店通旗舰版-采购入库单集成到MySQL的技术案例分享 在数据驱动的业务环境中&#xff0c;如何高效、准确地实现系统间的数据对接是企业面临的重要挑战。本文将聚焦于一个具体的系统对接集成案例&#xff1a;将旺店通旗舰奇门平台上的采购入库单数据集成到MySQL数据库中&#x…

12. Pandas :使用pandas读Excel文件的常用方法

一 read_excel 函数 其他参数根据实际需要进行查找。 1.接受一个工作表 在 11 案例用到的 Excel 工作簿中&#xff0c;数据是从第一张工作表的 A1 单元格开始的。但在实际场景中&#xff0c; Excel 文件可能并没有这么规整。所以 panda 提供了一些参数来优化读取过程。 比如 s…

记录致远OA服务器硬盘升级过程

前言 日常使用中OA系统突然卡死&#xff0c;刷新访问进不去系统&#xff0c;ping服务器地址正常&#xff0c;立马登录服务器检查&#xff0c;一看磁盘爆了。 我大脑直接萎缩了&#xff0c;谁家OA系统配400G的空间啊&#xff0c;过我手的服务器没有50也是30台&#xff0c;还是…

Java网络多线程

网络相关概念: 关于访问: IP端口 因为一个主机上可能有多个服务, 一个服务监听一个端口,当你访问的时候主机通过端口号就能知道要和哪个端口发生通讯.因此一个主机上不能有两个及以上的服务监听同一个端口. 协议简单来说就是数据的组织形式 好像是两个人交流一样,要保证自己说…

VScode 运行LVGL

下载vscode解压 环境安装 安装mingw64&#xff0c;gcc 版本必须8.3以上 安装cmak 系统环境变量Path中添加&#xff08;以实际安装目录为准&#xff09; C:\Program Files\mingw64\bin C:\Program Files\CMake\bin 将GUI-Guider生成的代码目录拷贝一份放到vscode项目目录…

React Next项目中导入Echart世界航线图 并配置中文

公司业务要求做世界航线图&#xff0c;跑了三个ai未果&#xff0c;主要是引入world.json失败&#xff0c;echart包中并不携带该文件&#xff0c;源码的world.json文件页面404找不到。需要自己寻找。这是整个问题卡壳的关键点&#xff0c;特此贴出资源网址。 目录 一、安装 二…

QT与网页显示数据公式的方法

一.网页中显示数学公式通常有三种主要方法 1.图片方式 原理&#xff1a;将公式转换为图片&#xff08;如 PNG、SVG&#xff09;&#xff0c;通过 <img> 标签嵌入网页。 实现步骤&#xff1a; 使用工具&#xff08;如 LaTeX dvipng、在线生成工具&#xff09;将公式渲…

深入解析APP订阅页的运作机制(订阅页如何运作)

在当今数字经济的背景下&#xff0c;订阅模式已成为许多企业获取稳定收入的重要方式。无论是软件、视频流媒体还是电子商务&#xff0c;订阅服务都能为用户提供持续的价值体验。然而&#xff0c;如何有效地设计和运作一个订阅页&#xff0c;是决定用户是否愿意订阅的关键因素。…