《数据库系统原理》之关系数据库 【知识点罗列+关系代数例题演练】

目录

一、关系模型

1.什么是数据模型?

2.什么是关系模型?

(1)字段:

(2)属性

(3)记录

(4)元组

二、关系模型的数据结构和定义

1.域

2.笛卡尔积

3.关系

4.关系的性质 :

5.关系的码​​​​​​​

三、关系完整性

1.实体完整性

2.参照完整性

3.用户自定义完整性

四、关系操作——关系代数

1.传统的集合运算

(1)概念:

(2)运算种类:

(3)例题:​​​​​​​

2.专门的关系运算

(1)概念:

(2)运算种类:

(3)例题:


一、关系模型

1.什么是数据模型?

数据模型一般由数据结构、数据操作和数据的完整性约束三部分组成。是数据特征的抽象,是数据库系统中用以提供信息表示和操作手段的形式架构。

2.什么是关系模型?

简单一句话来理解就是,关系模型是一张二维表。关系模型的数据结构非常简单,不管是现实世界中的实体还是实体间的相互联系都可以用单一的数据结构(关系)表示。

比如,这张reader表,其实就是一个关系数据模型。

(1)字段:

是二维表中的列。每个字段具有不同的名称,并且存储着对应数据的值。例如,在一个学生表中,字段可以是学生的姓名、年龄、性别等。

(2)属性

是指字段所描述的数据的特征或特性。它是对字段的进一步描述。例如,在学生表中,姓名字段的属性可以是字符串类型,长度不能超过20个字符。

(3)记录

是二维表中的行,包含了一组相关的数据。每一行代表了一个实体或对象,对应于现实世界中的一个个体。例如,在学生表中,每一行表示一个学生的信息,包括姓名、年龄、性别等。

(4)元组

是对记录的一种抽象,用来表示一组相关的数据。它是二维表的一个实例,可以看作是表中的一行。例如,如果学生表中有5个记录,那么可以说学生表包含了5个元组。

二、关系模型的数据结构和定义

1.域

域是一组具有相同数据类型的值的集合,又称为值域。在关系中是通过域来表示属性的取值范围;

域中所包含的值的个数称为域的基数(用m表示)

2.笛卡尔积

给定一组值可以相同的域D1,D2...Dn其笛卡尔积为:

D1\times D2...\times Dn=\left \{ (d1,d2,...,dn)|di\in Di,i=1,2,...,n \right \}

(1)笛卡尔积是一个集合,但可以用一个二维表来表示,是各集合各元素间一切可能的组合;

(2)每一个元素(d1,d2,…,dn)即任意一行,叫做一个n元组;元素中的值dn叫做一个分量;

(3)笛卡尔积的基数M(即元素d1,d2,…,dn的个数n)为所有域的基数的累乘之积,即

M=\prod_{i-1}^{n}mi         

(4)例题:给出分量小明、小王、小叶、男、女,要表示出这个学生关系中姓名和性别两个域的笛卡尔积:

  • D1\times D2={(小明,男),(小明,女),(小王,男),(小王,女),(小叶,男),(小叶,女)}
  • M=m1\times m2=3\times 2=6

3.关系

笛卡尔积D1×D2×…×Dn的任一子集称为定义在域D1,D2,…,Dn上的n元关系

R(D1,D2,...,Dn)

【R是关系的名字,n是关系的目或者度】

(1)关系是笛卡尔积的有限子集,是一张二维表。

(2)当n=1,表示单元关系;当n=2,表示二元关系;故而,n元关系就有n个属性。

(3)关系中的每一个元素是关系中的元组,通常以t来表示

(4)如上例题的D1\times D2就可以构成一个学生关系:

姓名性别
小明
小王
小叶

4.关系的性质 :

关系是一种规范化了的二维表中行的集合

(1)关系中每一个属性值都具有原子性,都是不可分解的。

(2)每一列中的分量必须来自同一个域,必须是同一类型的数据。

(3)不同的列可来自同一个域,每一列称为属性,不同的属性必须有不同的名字 。

(4)列的顺序可以任意交换。交换时属性名和属性值也要随之交换,否则得到的关系是不同的。

(5)关系中元组的顺序可任意交换,即任意交换行的位置是可以的。

(6)关系中不允许出现重复元组。

5.关系的码

关系的码相关定义性质
主码(Primary Key)

(1)关系模式中唯一标识每个元组的属性或属性组合

(2)必须是唯一且非空的。

(3)一个关系可以有一个或多个主码(联合主键)。

外码(Foreign Key)

(1)关系模式中的属性,引用了另一个关系模式中的主码。

(2)用于建立关系模式之间的连接。

(3)值必须与关联关系的主码值保持一致,或者为空(NULL)。

候选码(Candidate Key)

(1)可以成为主码的属性或属性组合,能够唯一标识关系中元组的一个属性或属性集

(2) 必须是唯一且非空的。

(3) 一个关系可以有多个候选码,但只能选择其中一个作为主码。

超码(Super Key)可以唯一标识每个元组的属性或属性组合, 可能包含冗余属性。
主属性(Key Attribute)构成主码的属性。
非主属性(Non-key Attribute)非主码的属性。
复合属性(Composite Attribute)由多个属性组成的属性。可以是主码、非主码或外码。
码的选择(Choosing Keys)根据实际需求和业务规则选择适当的主码。主码应该是稳定的、唯一的、简单的以及易于管理和维护的。

三、关系完整性

关系模型中,完整性约束必须满足实体完整性和参照完整性,这是关系的两个不变性。

1.实体完整性

主码的值不能为空(字段只有一个时)或部分为空(联合主键)。

2.参照完整性

如果关系R2的外部关系键X与关系R1的主关系键相符, 则X的每个值或者等于R1中主关系键的某一个值,或者取空值。简单来说就是,外键与其所在表的主键值要相同或者为空。

3.用户自定义完整性

针对某一具体应用所涉及的数据提出约束性条件。用户自定义完整性主要包括字段有效性约束和记录有效性。如:学生关系中的性别属性的取值范围在男-女之间。

四、关系操作——关系代数

关系代数的运算按运算符的不同主要分为两类:

1.传统的集合运算

(1)概念:

把关系看成元组的集合,其运算是从关系的“水平”方向即行的角度进行的。包括并、差、交和笛卡尔积等运算。

(2)运算种类:

操作表达式描述
R ∪ S = {t | t ∈ R ∨ t ∈ S}合并关系R和关系S中的所有元组,得到一个包含两个关系中所有元组的新关系。
R - S = {t | t ∈ R ∧ ¬t ∈ S}从关系R中删除所有在关系S中出现的元组,得到一个包含在R中但不在S中的所有元组的新关系。

R ∩ S = {t | t ∈ R ∧ t ∈ S}

R∩S = R-(R-S)

仅保留同时在关系R和关系S中出现的元组,得到一个包含同时在R和S中出现的所有元组的新关系。
广义笛卡尔积R × S = {tr⌒ ts | tr ∈ R ∧ ts ∈ S}将关系R中的每个元组与关系S中的每个元组连接在一起,得到一个包含所有可能的元组组合的新关系。

(3)例题:​​​​​​​

ABC
a1b2c1
a2b1c1
a2b1c2

 R

ABC
a1b2c2
a2b1c1
a2b1c2

S

ABC
a1b2c1
a1b2c2
a2b1c1
a2b1c2

R ∪ S

ABC
a2b1c1
a2b1c2

R ∩ S​​​​​​​

ABC
a1b2c1

R - S

ABCABC
a1b2c1a1b2c2
a1b2c1a2b1c1
a1b2c1a2b1c2
a2b1c1a1b2c2
a2b1c1a2b1c1
a2b1c1a2b1c2
a2b1c2a1b2c2
a2b1c2a2b1c1
a2b1c2a2b1c2

​​​​​​​R与S的​​​​​​​广义笛卡尔积

2.专门的关系运算

(1)概念:

不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。包括选取、投影、连接和除法等运算。

(2)运算种类:

关系运算表达式描述
选择 (σ)

\sigma _{F}(R)={t|t\in R\wedge F(t)='true')}

F为选取的条件

根据指定的条件,从关系中选择满足条件的元组,返回一个新的关系。选择是对操作。
投影 (π)

\Pi _{A}(R)={t[A] |t\in R}

A为R中的属性列

从关系中选择指定的属性,返回一个新的关系。
连接 (Join)

\left (R\infty S \right )_{x\theta y}-\left \{ t_{r} \cap t_{s}| t_{r}\in R\wedge t_{s}\in S\wedge t_{r}[X]\theta t_{s}[Y]]\right \}

θ是算术比较运算符
=等值连接
<小于连接
>大于连接
也称为θ连接,是从两个关系的笛卡尔积中选取属性间满足连接条件的元组,组成新的关系。
自然连接 (⨝)R\triangleright \triangleleft S一种特殊的等值连接, 在等值连接的情况下,当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉
除法 (/)R\div S=\left \{ tr[X] | tr\in R\wedge \Pi y(S)\subseteq Yx\right \}给定两个关系,计算满足第一个关系中的所有元组都与第二个关系中的某个属性值相关联的元组,并返回一个新的关系。

(3)例题:

【1-1】设有以下关系R、S和T,求下列各关系代数的运算结果。

​​​​​​​\Pi _{A,B}(\sigma _{c=6}(R))

  • 第一步先求\sigma _{c=6}(R)
ABC
526
  • 第二步求\Pi _{A,B}(\sigma _{c=6}(R))
AB
52

\Pi _{B,C}(\sigma _{c=3}(S\triangleright \triangleleft T))​​​​​​​

  • 第一步求S\triangleright \triangleleft T
ABCAD
32114
21322
52631
  • 第二步求\sigma _{c=3}(S\triangleright \triangleleft T)
ABCAD
21322
  • 第三步求\Pi _{B,C}(\sigma _{c=3}(S\triangleright \triangleleft T))
BC
13

【1-2】设有关系R和S,求R÷S.​​​​​​​

A

B

C

D

a2

b2

c1

d1

a1

b2

c2

d1

a1

b1

c1

d2

a2

b2

c3

d3

R

C

D

E

c1

d1

e1

c3

d3

e2

S

第一步:找到两个关系R与 S共同有的列

R.C

R.D

S.CS.D

c1

d1

c1

d1

c2

d1

c3

d3

c1

d2

c3

d3

第二步:在R表中找与S表中CD列取值相同的行

A

B

C

D

a2

b2

c1

d1

a2

b2

c3

d3

第三步:看看在R表是否能找到A、B列值所在行,是既包括{c1,d1}又包括{c3,d3}的

A

B

a2

b2​​​​​​​

所以R÷ S的结果是:

A

B

a2

b2​​​​​​​

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

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

相关文章

飞致云开源社区月度动态报告(2023年12月)

自2023年6月起&#xff0c;中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…

OrientDB使用教程:全面了解图数据库

图数据库在当今数据处理领域中扮演着越来越重要的角色&#xff0c;而OrientDB作为一种多模型的数据库&#xff0c;具有图数据库、文档数据库和对象数据库的特性&#xff0c;为应对不同场景提供了灵活的解决方案。本教程将简要介绍OrientDB的使用&#xff0c;包括基本概念、安装…

【数据结构】排序之插入排序

排序目录 1.前言2. 排序的概念及其运用2.1 排序的概念2.2 排序的运用2.3 常见的排序算法 3. 插入排序3.1 基本思想3.2 直接插入排序3.2.1 直接插入排序实现3.2.1.1 分析3.2.1.2 代码实现 3.3 希尔排序3.3.1 希尔排序实现3.3.1.1 分析3.3.1.2 代码实现 4. 附代码4.1 sort.h4.2 s…

HarmonyOS4.0系列——04、@Styles、@Extend、@Extend事件以及多态样式stateStyles

Styles、Extend、Extend事件以及多态样式stateStyles Styles 通用样式 类似于css中的class 语法一&#xff1a;内部样式 放在struct内 Styles commonStyle(){.backgroundColor(Color.Pink).padding(20px)}语法二&#xff1a;外部样式 Styles function commonStyle() {.backg…

几代WiFi有什么差异,它们有什么区别

最典型的差异指标&#xff1a;单流传输速率 第一代 基于的标准&#xff1a; 802.11 使用频率&#xff1a;2.4GHz 单流最大传输速率&#xff1a;2Mbit/s 第二代 基于的标准&#xff1a; 802.11b 使用频率&#xff1a;2.4GHz 单流最大传输速率&#xff1a;11Mbit/s 第三代 …

什么牌子冻干猫粮性价比高?性价比高的五款冻干猫粮牌子推荐

很多养猫的小伙伴们都磨刀霍霍准备给猫咪屯些猫冻干吧&#xff0c;特别是家里有挑食猫咪的家庭。有养猫的铲屎官们应该都知道&#xff0c;猫咪是对蛋白质的需求量很高&#xff0c;而且对植物蛋白的吸收效率比较低&#xff0c;所以蛋白质最好都是来自动物的优质蛋白。猫咪挑食就…

jmeter函数助手-常用汇总

一.函数助手介绍 1.介绍及作用 介绍&#xff1a; jmeter自带的一个特性&#xff0c;可以通过指定的函数规则创建后进行调用该函数&#xff0c;在后续接口请求参数中进行调用 作用 &#xff08;1&#xff09;做参数化。 2.如何使用 jmeter工具栏-->工具-->函数助手…

华为---USG6000V防火墙web基本配置示例

目录 1. 实验要求 2. 配置思路 3. 网络拓扑图 4. USG6000V防火墙端口和各终端相关配置 5. 在USG6000V防火墙web管理界面创建区域和添加相应端口 6. 给USG6000V防火墙端口配置IP地址 7. 配置通行策略 8. 测试验证 8.1 逐个删除策略&#xff0c;再看各区域终端通信情况 …

为何软件开发时需要性能测试工具

在当今数字化时代&#xff0c;软件已经成为我们生活和业务的核心。随着用户对高性能、高响应性和卓越用户体验的期望不断增长&#xff0c;软件开发过程中的性能测试变得至关重要。性能测试工具在确保软件正常运行、高效响应以及适应负载压力方面发挥着关键作用。本文将介绍为什…

台式电源质量如何检测?纳米软件为您科普

一、外观检测 观察台式机电脑电源外观是否有损伤、烧焦&#xff0c;电源线是否有破损、短线的情况。观察电源的电压、电流、功率等参数&#xff0c;是否符合台式机电脑。 二、直观检测 开通电源&#xff0c;如果所有指示灯不亮&#xff0c;风扇没有声音&#xff0c;电源损坏的可…

react学习第一天

脚手架的创建 1.创建环境变量 npm init -y 2.创建node-modules npm add -D create-react-app 3.创建脚手架 npx create-react-app react-demo1 报错一号 报错原因&#xff1a;node版本太低 解决&#xff1a;升级版本 nvm install 14.0.0 nvm use 14.0.0 报错二号 报错原因&…

搭建Vue前端项目的流程

一、搭建Vue项目流程 1、安装nodejs 测试安装是否成功 $ npm -v 6.14.16 $ node -v v12.22.122、全局安装npm install -g vue/cli&#xff0c;后续会使用到vue命令 $ vue --version vue/cli 5.0.83、使用vue create demo_project_fe命令创建项目&#xff0c;使用箭头键来选择…