【数据库】第二章 关系数据库

news2024/11/19 3:31:29

第二章 关系数据库

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

关系

域(domain) :域是一组具有相同数据类型的值的集合,可以取值的个数叫基数

笛卡尔积 :一个记录叫做一个元组(tuple),元组中每一个属性值,叫一个分量

基数: 域的元素个数

笛卡尔乘积是指在数学中,两个集合XY的笛卡尔积,表示为X×Y,所有有序对

假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

基数为2 x 3=6

在这里插入图片描述

关系: 关系是笛卡尔积的子集,每一行对应一个元组,每一列对应一个域,列名叫做属性(attribute)

R是表的名字,n是属性个数,叫做关系的目或度(degree)

在这里插入图片描述

候选码(candidate key): 某一属性组的值能唯一标识一个元组,而他的子集不能,则称该属性组为候选码。

主码(primary key): 若一个关系有多个候选码,则选定其中一个为主码。

主属性: 属于候选码的属性叫主属性。其他属性叫非主属性或非码属性

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

外码:依赖于另一个关系的主码

关系的三种类型

  • 基本关系(基本表/基表):实际存在的表
  • 查询表:查询结果对应的表
  • 视图表:是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

基本关系的6条性质:

  1. 列是同质的。(同一数据类型)
  2. 不同的列可以出自同一个域,不同的属性要有不同的属性名
  3. 列的顺序无所谓。
  4. 任意两个元组的候选码不能取相同的值。
  5. 行的顺序无所谓。
  6. 分量必须取原子值,每一个分量都不可分。

关系模式

在这里插入图片描述

或者表示为R(U,D,DOM,F)

R:关系名。

U:组成该关系的属性名的集合。

D: U中的属性所来自的域。

DOM:属性向域的映像集合。

F:属性见数据的依赖关系集合。

关系是关系模式在某一时刻的状态或内容

关系模式是静态的、稳定的,而关系是动态的,随时间不断变化的。

关系数据库

关系数据库的型就是关系数据库模式

关系数据库的值就是关系数据库模式在某一时刻对应的关系的集合

2.2关系操作

特点:集合操作方式,操作对象和结果都是集合

也称为一次一集合的方式,非关系数据库模型的操作方式则成为一次记录的方式

关系数据语言的分类

  • 代数方式:关系代数,用关系的运算来表达查询要求
  • 逻辑方式:关系演算,用谓词来表达查询要求
    • 元组关系演算
    • 域关系演算

以上三种方式在表达能力上是等价的,都具有完备的表达能力;它们是抽象的查询语言。与实际的查询语言并不完全一样,但它们能用作评估实际系统中查询语言能力的标准或基础

  • 具有关系代数和关系演算双重特点的语言:SQL(Structured Query Language)

SQL是集查询(DQL),数据定义语言(DDL),数据操纵语言(DML)和数据控制语言(DCL)于一体的关系 数据语言

2.3关系的完整性

关系模型中有三类完整性约束:实体完整性,参照完整性和用户定义完整性。

前两个是关系模型必须满足的

实体完整性

若属性A是基本关系R的主属性,那么A不能取空值。

参照完整性

若属性或属性组F是关系R的外码, 它与基本关系S的主码K相对应,则对于R中的每个元组在F上的值必须:

  1. 或者等于空值(F的每个属性均为空)。
  2. 或者等于S中某个元组的主码值。

用户定义完整性

用户自定义完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 主要包括非空约束、唯一约束、检查约束、主键约束、外键约束。

2.4 关系代数

关系代数是一种抽象的查询语言,他用对关系的运算来表达查询

三要素: 运算对象(一种关系),运算符,运算结果(一种关系)

在这里插入图片描述

传统的集合运算

并(Union)

R和S
具有相同的目n(即两个关系都有n个属性)
相应的属性取自同一个域

R∪S
仍为n目关系,由属于R或属于S的元组组成
R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R∪S = \{ t|t \in R∨t \in S \} RS={ttRtS}

差(difference)

R和S
具有相同的目n
相应的属性取自同一个域

R - S
仍为n目关系,由属于R而不属于S的所有元组组成
R − S = { t ∣ t ∈ R ∧ t ∉ S } R -S = \{ t|t\in R∧t \notin S \} RS={ttRt/S}

交(intersection)

R和S
具有相同的目n
相应的属性取自同一个域

R∩S
仍为n目关系,由既属于R又属于S的元组组成
R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R ∩ S = R – ( R − S ) R∩S = \{ t|t \in R∧t \in S \} \\ R∩S = R –(R-S) RS={ttRtS}RS=R(RS

笛卡尔积

严格地讲应该是广义的笛卡尔积(Extended Cartesian Product)
R: n目关系,k 1 个元组
S: m目关系,k2 个元组

R×S
列:(n+m)列元组的集合
元组的前n列是关系R的一个元组
后m列是关系S的一个元组
行:k1 × k2 个元组
R × S = { t r   t s ^ ∣ t r ∈ R ∧ t s ∈ S } R×S = \{\widehat{tr \ ts} |tr \in R ∧ ts \in S \} R×S={tr ts trRtsS}

专门的关系符运算

选择(selection)

在这里插入图片描述

关系代数中<> 表示不等于

投影(project)

在这里插入图片描述

如果有重复的,要去掉

连接(join)

也称为θ-连接

在这里插入图片描述

DBMS在进行连接操作的时候,不会先生成笛卡尔积,因此效率更高

对自身的连接,要用到更名

在这里插入图片描述

等值连接

当θ为“=” 时,称为等值连接

自然连接

自然连接是一种特殊的等值连接
在这里插入图片描述

在自然连接中被舍弃的元组被称为悬浮元组

外连接

如果把悬浮元组保留在结果关系中,而在其他属性上填空值null,那么这种链接就叫做外连接
在这里插入图片描述

除(divide)

在这里插入图片描述

S 可以有R没有的属性
在这里插入图片描述

R ÷ S 和 S 的笛卡尔积 是 R 和S 自然连接 的子集

2.5关系演算

关系元组演算

在这里插入图片描述

在这里插入图片描述

关系域演算

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

35测试不如狗?是你自己技术不够的怨怼罢了

一、做软件测试怎么样&#xff1f; 引用著名软件测试专家、清华大学郑人杰教授的说法&#xff1a;软件测试工程师是一个越老越吃香的职业。 其中就表达了软件测试工作相对稳定、对年龄没有限制、而且随着项目经验的不断增长和对行业背景的深入了解&#xff0c;会越老越吃香。…

刚上岸字节测试开发岗,全网最真实的大厂面试真题

首先我来解释一下为什么说是全网最真实的面试题&#xff0c;相信大家也发现软件测试面试题在网上流传也已不少&#xff0c;但是经过仔细查看发现了两个很重要的问题。 第一&#xff0c;网上流传的面试题的答案并不能保证百分百正确。也就是说各位朋友辛辛苦苦花了很多时间准备…

《程序员的自我修养》阅读笔记

文章目录【第2部分】静态链接1 编译过程2 编辑器的工作流程3 链接——模块的拼接4 目标文件目标文件中的段&#xff08;section&#xff09;ELF文件结构5 静态链接1 空间与地址分配2 符号解析与重定位【第3部分】装载与动态链接1 装载的方式2 进程的启动3 为什么需要动态链接&a…

通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码

文章目录1、什么是DES2、DES的基本概念3、DES的加密流程4、DES算法步骤详解4.1 初始置换(Initial Permutation&#xff0c;IP置换)4.2 加密轮次4.3 F轮函数4.3.1 拓展R到48位4.3.2 子密钥K的生成4.3.3 当前轮次的子密钥与拓展的48位R进行异或运算4.3.4 S盒替换&#xff08;Subs…

学习 create-vite 源码后,感觉真不一样

前言 已经学习了一段时间的源码了&#xff0c;在写源码 demo 小例子的时候都是使用 react 项目作为模板&#xff0c;而我的 react 项目正好是由create-vite来创建的&#xff0c;因此&#xff0c;今天来学习一下关于create-vite的源码。话不多说&#xff0c;咱们直接开始学习。…

【深度学习】什么是线性回归逻辑回归单层神经元的缺陷

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录逻辑回归&线性回归单层神经元的缺陷单层神经元的缺陷逻辑回归&线性回归 线性回归预测的是一个连续值&#xff0c; 逻辑回归给出的”是”和“否”的回答. 等…

MySQL事务与索引

MySQL事务与索引 一、事务 1、事务简介 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性&#xff0c;保证成批的 SQL 语句要么全部执行&#xff0c;要么全部不执行。事务用来管理 insert,update,delete 语句 事务特性…

SQL性能优化的47个小技巧,果断收藏!

1、先了解MySQL的执行过程 了解了MySQL的执行过程&#xff0c;我们才知道如何进行sql优化。 客户端发送一条查询语句到服务器&#xff1b; 服务器先查询缓存&#xff0c;如果命中缓存&#xff0c;则立即返回存储在缓存中的数据&#xff1b; 未命中缓存后&#xff0c;MySQL通…

【编程入门】应用市场(go语言版)

背景 前面已输出多个系列&#xff1a; 《十余种编程语言做个计算器》 《十余种编程语言写2048小游戏》 《17种编程语言10种排序算法》 《十余种编程语言写博客系统》 《十余种编程语言写云笔记》 《N种编程语言做个记事本》 目标 为编程初学者打造入门学习项目&#xff0c;使…

qt源码--信号槽

本篇主要从Qt信号槽的连接、断开、调用、对象释放等方面展开&#xff1b; 1.信号建立连接过程 connect有多个重载函数&#xff0c;主要是为了方便使用者&#xff0c;比较常用的有2种方式&#xff1a; a. QObject::connect(&timer, &QTimer::timeout, &loop, &am…

一步步教你电脑变成服务器,tomcat的花生壳设置(原创)

1&#xff0c;首先你去https://console.oray.com/这网站注册个帐号&#xff0c;如果注册成功它会送你一个免费域名&#xff0c;当然不记得也没关系&#xff0c;你记住你注册的 帐号跟密码&#xff0c;然后下载它的软件&#xff08;花生壳动态域名6.0正式版&#xff09;有xp跟li…

19_FreeRTOS软件定时器

目录 软件定时器介绍 FreeRTOS软件定时器特点 软件定时器的命令队列 软件定时器的相关配置 单次定时器和周期定时器 软件定时器结构体成员 FreeRTOS软件定时器相关API函数 实验源码 软件定时器介绍 定时器描述:从指定的时刻开始,经过一个指定时间,然后触发一个超时事件…

操作系统权限提升(十三)之绕过UAC提权-MSF和CS绕过UAC提权

系列文章 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述 注&#xff1a;阅读本编文章前&#xff0c;请先阅读系列文章&#xff0c;以免造成看不懂的情况&#xff01;&#xff01; MSF和CS绕过UAC提权 CS绕过UAC提权 拿到一个普通管理员的SHELL,在CS中没有*号代表有…

样式冲突太多,记一次前端CSS升级

目前平台前端使用的是原生CSSBEM命名&#xff0c;在多人协作的模式下&#xff0c;容易出现样式冲突。为了减少这一类的问题&#xff0c;提升研效&#xff0c;我调研了业界上主流的7种CSS解决方案&#xff0c;并将最终升级方案落地到了工程中。 样式冲突的原因 目前遇到的样式…

数组:二分查找、移除数组等经典数组题

二分查找&#xff1a;相关题目链接&#xff1a;https://leetcode.cn/problems/binary-search/题目重现&#xff1a;给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值…

【c++】文件操作(文本文件、二进制文件)

文章目录文件操作文本文件写文件读文件二进制文件写文件读文件文件操作 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放&#xff1b; 通过文件可以将数据持久化&#xff1b; c中对文件操作需要包含头文件 文件类型分为两种&#xff1a; 1、文本文…

Playbook的用法

目录 Playbook Playbook 与 Ad-Hoc 对比 YAML 语言特性 YAML语法简介 支持的数据类型 写法格式 1 scalar 标量 建议缩进两个空格&#xff0c;可多 2 Dictionary 字典 3 List 列表 三种常见的数据格式 Playbook 核心组件 不要用 tab 可以#注释 hosts remote_us…

【编程入门】应用市场(Python版)

背景 前面已输出多个系列&#xff1a; 《十余种编程语言做个计算器》 《十余种编程语言写2048小游戏》 《17种编程语言10种排序算法》 《十余种编程语言写博客系统》 《十余种编程语言写云笔记》 《N种编程语言做个记事本》 目标 为编程初学者打造入门学习项目&#xff0c;使…

【Linux】进程间通信(匿名管道和命名管道通信、共享内存通信)

文章目录1、进程间通信1.1 进程的通信1.2 如何让进程间通信&#xff1f;1.3 进程间通信的本质2、管道通信2.1 匿名管道2.2 匿名管道通信2.3 命名管道2.4 命名管道的通信3、SystemV中的共享内存通信3.1 共享内存3.2 共享内存的通信3.3 共享内存的缺点以及数据保护3.4 共享内存的…

13.STM32超声波模块讲解与实战

目录 1.超声波模块讲解 2.超声波时序图 3.超声波测距步骤 4.项目实战 1.超声波模块讲解 超声波传感器模块上面通常有两个超声波元器件&#xff0c;一个用于发射&#xff0c;一个用于接收。电路板上有4个引脚&#xff1a;VCC GND Trig&#xff08;触发&#xff09;&#xff…