关系模型与关系代数——数据库原理 总结2

news2024/9/28 14:02:48

2.1 关系模型

关系数据结构

  • 关系模型的数据结构二维表,亦称为关系
  • 关系数据库是表的集合,即关系的集合。
  • 表是一个实体集,一行就是一个实体,它由有关联的若干属性的值所构成。

关系模型的相关概念

列就是数据项 或 字段 或 属性attribute

列的个数称为关系的元或度

列的取值范围称为值域,简称域domain

行也称为元组tuple或记录record

行中的一个属性值称为分量component

行的个数称为关系的基数cardinality

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

笛卡尔积:给定一组域D1, D2, …, Dn,它们之中可以有相同的域。D1, D2, …, Dn的笛卡尔积为:

     D1×D2×…×Dn = {(d1, d2, …, dn)∣di∈Di }     (“每列来自一个域”)

笛卡尔积例子:

码(重点)

  • (Key):属性(或属性组)的值都能用来唯一标识该关系的元组,则称这些属性(或属性组)为该关系的码。
  • 超码 (super key):在码中去除某个属性,它仍然是这个关系的码。
  • 候选码 (candidate key):在码中不能去除任何一个属性,否则它就不再是这个关系的码。(最小超码

        主属性:包含在任何一个候选码中的属性称为主属性,反之为非主属性

  • 主码 (primary key):在若干个候选码中指定一个唯一标识关系的元组。
  • 外码 (foreign key):某个属性(或属性组)不是这个关系的主码或候选码,而是另一个关系的主码
  • 全码:一个关系模式的所有属性集合是这个关系的主码

关系的最基本要求

  • 关系中的每个属性的域必须是原子的,即域中的每个值都是不可再分的一个完整单元。
  • 关系中的每个元组都是可区分的,即存在唯一标识不同元组的属性(集)——码。

关系模式形式化:r(U, D, DOM, F) ,简记为:r(U) 或 r(A1, A2, …, An)

        r为关系名

        U为组成该关系的属性名的集合{A1, A2, …, An}

        D为属性集U中所有属性所来自的域的集合

        DOM为属性向域的映像集合,(描述类型、长度等)

        F为属性间数据的依赖关系集合 (即体现各属性取值之间的“关联”性)。

2.2 关系完整性约束

数据完整性:数据的正确性、合理性、相容性

完整性约束条件:实体完整性、参照完整性、用户定义的完整性

1. 实体完整性

  • 主码属性不能为空值null
  • 如果主码是由若干个属性的集合构成,则要求构成主码的每一个属性的值都不能取空值。

2. 参照完整性

  • 外码属性要么为null,要么为参照的主码值

3. 用户自定义完整性

  • 任何关系数据库管理系统都应该支持实体完整性参照完整性
  • 用户定义完整性是针对某一具体应用要求来定义的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

2.3 关系操作

关系操作的特点是集合操作方式,即操作的对象和结果都是集合。

二维表的操作:

  • 更新:添加、修改、删除
  • 查询:选择、投影、并、差、笛卡尔积(5种基础操作);连接、除、交

关系操作可用两种方式来表示——代数方式和逻辑方式。

关系代数是用代数方式表达的关系查询语言。

关系演算是用逻辑方式表达的关系查询语言。

对于关系代数、关系演算均是抽象的查询语言,在表达能力上是完全等价的。

2.4 关系代数

关系代数

  • 关系代数是一种抽象查询语言,用关系代数运算来表达查询。
  • 关系代数运算:运算对象是关系,运算结果也是关系。
  • 基本的关系代数运算有选择、投影、集合并、集合差、笛卡尔积和更名等。

一、传统的集合运算

前提假设:关系r和关系s具有相同的n个属性,且相应的属性取自同一个域,即两个关系的模式或结构相同。t是元组变量,t∈r表示t是r的一个元组。

  • 并运算:关系r与关系s的并记作 :r\cup s = \{ t | t\in r \vee t\in s \}

其结果关系仍为n目关系,由属于r或属于s的所有元组组成

  • :关系r与关系s的差:r- s = \{ t | t\in r \wedge t \notin s \}

其结果关系仍为n目关系,由属于r而不属于s的所有元组组成

  • :关系r与关系s的交记作:r \cap s = \{ t | t\in r \wedge t\in s \}

其结果关系仍为n目关系,由既属于r又属于s的所有元组组成。关系的交可以通过差来表达,即rs = r-(r-s)。  “减去特有部分”

笛卡尔积

  • 两个分别为n目和m目的关系rs的笛卡尔积是一个n+m目元组的集合。     
  • 若关系rkr个元组,关系sks个元组,则关系rs的笛卡尔积有kr×ks个元组。记作 : r×s = { tr·ts∣trÎr∧tsÎs }
  • 元组的前n列是关系r的一个元组,后m列是关系s的一个元组。

二、专门的关系运算

专门的关系运算:选择、投影、连接、除

  • 选择

选择操作是在关系r中查找满足给定谓词(即选择条件)的所有元组

记作: \sigma _p(r) = \{t | t\in r\wedge P(t) \}

P表示谓词(即选择条件),它是一个逻辑表达式,取值为“真”或“假”。

选择运算是从关系R中选取使逻辑表达式为真的元组,从行的角度进行运算。

  • 投影:

关系是一个二维表,对它的操作可以从水平(行)的角度进行,即选择操作;也可以从纵向(列)的角度进行,即投影操作

关系r上的投影是从r中选择出若干属性列组成新的关系。记作:\Pi _A(r) = \{t[A] | t\in r\}

A为关系r的属性集合。

  • 连接:

连接运算中有两种最常用、最重要的连接,一种是等值连接(equijoin),另一种是自然连接(natural join)。

1. 等值连接

θ为等值比较谓词的连接运算。记为A op B,其中AB分别为关系rs中的属性个数相等且可比的连接属性集,op为比较运算符。

θ连接是从两个关系的笛卡尔积中选取连接属性间满足谓词θ的所有元组

θ连接运算就是从关系rs的笛卡尔积r×s中,选取r关系在A属性集上的值与s关系在B属性集上的值满足连接谓词θ的所有元组。即:

一般连接操作从行的角度进行运算。

2. 自然连接

自然连接是一种特殊的等值连接,它要求两个参与连接的关系具有公共的属性集,并在这个公共属性集上进行等值连接;同时,还要求将连接结果中的重复属性列去除掉,即在公共属性集中的列只保留一次。

设关系r(R)和s(S),属性集S是R的子集,即SÍR,则关系r÷s是关系r中满足下列条件的元组在属性集R-S上的投影:\forall t_r \in r,记 x= tr[R-S],则关系r中属性集R-S的取值x的象集Sx包含关系s。记作 r\div s = \{t_r[R-S] | t_r\in r\wedge s\subset S_x \}

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

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

相关文章

C++那些你不得不知道的(2)

C那些你不得不知道的(2) 1、缺省参数在使用的遍历 (1)以下是实现顺序表的初始化和检查容量空间的方式: void Init(list* ps) {ps->arr NULL;ps->Capacity ps->size 0; }void CheckCapacity(list* ps) {…

量化系统QTYX使用攻略|“自动交易”篇——ETF量化框架,集成“策略回测仓位风控下单”(更新v2.9.2)...

QTYX系统简介 股票量化交易系统QTYX是一个即可以用于学习,也可以用于实战炒股分析的系统。 分享QTYX系统目的是提供给大家一个搭建量化系统的模版,最终帮助大家搭建属于自己的系统。因此我们提供源码,可以根据自己的风格二次开发。 关于QTYX的…

ABAP版本管理

在开发中ABAP管理有查看,生成,比对,远程比对,回滚,删除等等操作。日常中往往会遇到需要回滚到上一版本的代码,但是ABAP不像git代码管理那么专业,但是也是可以回滚代码的。在此记录一下操作过程。…

大模型时代,2024的传统程序员还需要写代码吗?需要学习大模型吗?

一.引言 随着大模型(如GPT等)的迅猛发展,软件开发领域中我们的开发方式也在悄然发生变化。当然,我作为一名传统的Java后端开发工程师,在职业生涯的初期主要专注于使用多种数据结构以及算法编写业务代码。 …

所有测试人,下半年的新方向(大模型),赢麻了!!!

现在做测试,真的挺累的。 现在测试越来越难做,晋升困难,工资迟迟不涨……公司裁员,测试首当其冲!! 做测试几年了,还没升职,就先到了“职业天花板”。 想凭工作几年积累的经验&…

面向未来的设计:推动企业架构创新的关键——The Open Group 2024生态系统架构与可持续发展年度大会

在当今快速变化的数字时代,企业的可持续发展和创新能力比以往任何时候都更为重要。The Open Group 2024生态系统架构可持续发展年度大会,为全球技术和数字化转型专业人士提供了一个无与伦比的机会,以探索先进的企业架构与建模解决方案&#x…

SQLite3模块使用详解

目录 一、引言 1.1 SQLite3 简介 1.2 Python sqlite3 模块 二、连接数据库 2.1 导入 sqlite3 模块 2.2 连接数据库 2.3 创建游标对象 三、执行 SQL 语句 3.1 创建表 3.2 插入数据 3.3 查询数据 3.4 更新数据 3.5 删除数据 四、处理查询结果 4.1 fetchall() 4.2…

FollowYourPose - 生成可编辑、姿态可控制的人物视频

文章目录 关于 FollowYourPose摘要🍻🍻🍻设置环境💃💃💃培训🕺🕺🕺推理💃💃💃 本地 Gradio 演示🕺🕺&#x1f…

性能测试常见故障和解决思路详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、性能问题分析流程 1、查看服务器的CPU、内存 、负载等情况,包括应用服务器和数据库服务器 2、查看数据库健康状态,数据库死锁、连…

监控易监测对象及指标之:全面监控Sybase_New数据库

随着企业数据量的不断增长和业务的复杂化,数据库的稳定性和性能成为了保障业务连续性的关键因素。Sybase_New数据库作为众多企业选择的数据管理解决方案,其稳定性和性能对于企业的运营至关重要。 为了确保Sybase_New数据库的稳定运行和高效性能&#xff…

在类外定义的运算符重载函数

对基本的数据类型,C提供了许多预定义的运算符,如,-,*,/,等,他们可以用一种简洁的方式工作,例如 运算符: int x, y, z; x 3; y 5; z x y; 这是将两个整数相加的方法…

急!现在转大模型还来得及吗?零基础入门到精通,收藏这一篇就够了

大模型的出现,让行内和行外大多数人都感到非常焦虑。 行外很多人想了解却感到无从下手,行内很多人苦于没有硬件条件无法尝试。想转大模型方向,相关的招聘虽然层出不穷,但一般都要求有大模型经验。而更多的人,则一直处…

指数级增长使Hugging Face上的人工智能模型达到100万个

本周四,人工智能托管平台Hugging Face的人工智能模型列表首次突破100 万个,这标志着快速扩张的机器学习领域的一个里程碑。 人工智能模型是一种计算机程序(通常使用神经网络),通过数据训练来执行特定任务或进行预测。 …

【算法】字符串相关

【ps】本篇有 4 道 leetcode OJ。 一、算法简介 字符串是一种数据结构,大多与别的算法结合在一起出题,例如模拟、高精度算法、双指针、dp、回溯等,因此这个专题的题型本身是特别丰富的。本篇选取了较为典型的字符串题型,除了涵盖一…

双端之Nginx+Php结合PostgreSQL搭建Wordpress

第一台虚拟机:安装 Nginx 更新系统包列表: sudo apt update安装 Nginx及php扩展: sudo apt install nginx php-fpm php-pgsql php-mysqli -y启动 Nginx 服务: sudo systemctl start nginx检查 Nginx 是否正常运行: xdg-open http://localhost注意:终端命令打开网址 …

【射频通信电子线路第六讲】射频信号与调制包括调幅和部分调频的内容

一、调制(Modulation)与解调(Demodulation) 1、相关概念 调制是指使一个信号(如光信号、高频电磁振荡等)的某些参数(振幅、频率和相位)按照另一个欲传输的信号的特点变化的过程。 …

Linux基础(二):磁盘分区

1.磁盘在Linux中的文件名 SATA接口的磁盘在Linux中名字为/dev/sdx。/dev 几乎是所有外接设备存放的文件夹: 磁盘在Linux中的文件名是不确定的,比如拿一个U盘插到Linux主机,可能第一次名字为sda,拔插后名字为sdc,这取…

新160个crackme - 067-CarLitoZ.1

运行分析 需要破解Code PE分析 VB程序,32位,无壳 静态分析&动态调试 使用VB Decompiler分析,发现注册模块需要满足var_18 var_ret_7var_18 abt.Label1.MousePointer 即输入框填入的信息var_ret_7 Mid(var_1C, 6, 1) Mid(var_20, 9, 1…

《Linux运维总结:使用 MongoDB工具备份和恢复mongodb 7.0.14分片集群(方案一)》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、备份说明 1、要使用mongodump备份分片集群,您必须 停止负载均衡器、 停止写入,避免备份的数据出现状态不一致问题。 2、从MongoDB7.0.2开始(也可以从6.0…

net core mvc 数据绑定 《1》

其它的绑定 跟net mvc 一样 》》MVC core 、framework 一样 1 模型绑定数组类型 2 模型绑定集合类型 3 模型绑定复杂的集合类型 4 模型绑定源 》》》》 模型绑定 使用输入数据的原生请求集合是可以工作的【request[],Querystring,request.from[]】, 但是从可读…