📜  关系代数

📅  最后修改于: 2021-01-11 06:17:00             🧑  作者: Mango


关系数据库系统应配备一种查询语言,该语言可以帮助其用户查询数据库实例。查询语言有两种-关系代数和关系演算。

关系代数

关系代数是一种过程查询语言,它将关系实例作为输入,并产生关系实例作为输出。它使用运算符执行查询。运算符可以是一元二进制。他们接受关系作为他们的投入,并接受产量关系作为他们的产出。关系代数是在关系上递归执行的,中间结果也被视为关系。

关系代数的基本运算如下-

  • 选择
  • 项目
  • 联盟
  • 设置不同
  • 笛卡尔积
  • 改名

我们将在以下各节中讨论所有这些操作。

选择操作(σ)

它从一个关系中选择满足给定谓词的元组。

符号σP(R)

其中σ代表选择谓词, r代表关系。 p是介词逻辑公式,可以使用and和or或not这样的连接符。这些术语可能使用关系运算符,例如-=,≠,≥,<,>,≤。

例如

σsubject = "database"(Books)

输出-从主题为“数据库”的书中选择元组。

σsubject = "database" and price = "450"(Books)

输出-从主题为“数据库”且“价格”为450的书中选择元组。

σsubject = "database" and price = "450" or year > "2010"(Books)

输出-从主题为“数据库”且“价格”为450的书籍或2010年以后出版的书籍中选择元组。

项目运作(∏)

它投影满足给定谓词的列。

表示法-∏ A 1 ,A 2 ,A n (r)

其中A 1 ,A 2 ,A n是关系r的属性名称。

由于关系是一个集合,因此会自动消除重复的行。

例如

∏subject, author (Books)

从“关系书”中选择和投影名为主题和作者的列。

联盟运作(∪)

它在两个给定关系之间执行二进制联合,并定义为-

r ∪ s = { t | t ∈ r or t ∈ s}

符号-r U s

其中rs是数据库关系或关系结果集(临时关系)。

为了使联合操作有效,必须满足以下条件:

  • rs必须具有相同数量的属性。
  • 属性域必须兼容。
  • 自动删除重复的元组。
∏ author (Books) ∪ ∏ author (Articles)

输出-投影写过书或文章或两者兼有的作者的姓名。

设置差异(-)

集差运算的结果是元组,元组以一种关系存在而在第二种关系中不存在。

符号-rs

查找存在于r而不是s中的所有元组。

∏ author (Books) − ∏ author (Articles)

输出-提供撰写书籍但未撰写文章的作者姓名。

笛卡尔积(Χ)

将两个不同关系的信息合并为一个。

记法− rΧs

其中rs是关系,其输出将定义为-

r X s = {qt | q∈r和t∈s}

σauthor = 'tutorialspoint'(Books Χ Articles)

输出-产生一个关系,该关系显示了tutorialspoint编写的所有书籍和文章。

重命名操作(ρ)

关系代数的结果也是关系,但没有任何名称。重命名操作使我们可以重命名输出关系。 “重命名”操作用小希腊字母rhρ表示

符号ρX(E)

其中表达式E的结果以x的名称保存。

附加操作是-

  • 设置交集
  • 分配
  • 自然加入

关系演算

与关系代数相反,关系演算是一种非过程查询语言,也就是说,它告诉做什么,但从不解释如何做。

关系演算以两种形式存在-

元组关系演算(TRC)

在元组上过滤变量范围

表示法-{T |健康)状况}

返回所有满足条件的元组T。

例如

{ T.name |  Author(T) AND T.article = 'database' }

输出-返回在“数据库”上写过文章的作者的带有“名称”的元组。

TRC可以量化。我们可以使用现有(∃)和通用量词(∀)。

例如

{ R| ∃T   ∈ Authors(T.article='database' AND R.name=T.name)}

输出-上面的查询将产生与上一个相同的结果。

领域关系演算(DRC)

在DRC中,过滤变量使用属性域而不是整个元组值(如上述在TRC中所做的那样)。

表示法

{a 1 ,a 2 ,a 3 ,…,a n | P(a 1 ,a 2 ,a 3 ,…,a n )}

其中a1,a2是属性, P代表由内部属性构建的公式。

例如

{< article, page, subject > |  ∈ TutorialsPoint ∧ subject = 'database'}

输出-从TutorialsPoint关系中产生文章,页面和主题,其中主题是数据库。

就像TRC一样,DRC也可以使用存在量词和通用量词来编写。刚果民主共和国还涉及关系运算符。

元组关系演算和域关系演算的表达能力等同于关系代数。