精华内容
下载资源
问答
  • 关系代数

    2020-10-22 11:02:39
    关系代数

    1.专业术语

    在这里插入图片描述

    2.关系模型的三要素

    在这里插入图片描述

    3.唯一的数据结构——关系

    在这里插入图片描述

    4.关系操作

    在这里插入图片描述

    5.关系完整性约束

    在这里插入图片描述

    展开全文
  • 关系代数运算When working with the relational model, we have 2 groups of operations we can use. 使用关系模型时 ,我们可以使用2组操作。 The first is called relational algebra, and it’s a procedural ...

    关系代数运算

    When working with the relational model, we have 2 groups of operations we can use.

    使用关系模型时 ,我们可以使用2组操作。

    The first is called relational algebra, and it’s a procedural language.

    第一种称为关系代数 ,它是一种过程语言

    This is what SQL is based upon, and as such it is very important to learn - as SQL is the de-facto standard for working with relational databases.

    这是SQL的基础,因此学习非常重要-因为SQL是使用关系数据库的实际标准。

    The second is called relational calculus and instead of being procedural, it’s a declarative language. It’s a fundamental difference in how we interact with databases, because you don’t tell the database software what to do, you just tell it what you want, and let it sort out the details of how to do it.

    第二种称为关系演算 ,而不是程序性的,它是一种声明性语言 。 这是我们与数据库交互的方式的根本区别,因为您没有告诉数据库软件该怎么做 ,而只是告诉您想要什么 ,然后让它整理出如何做的细节。

    This is a common distinction among programming languages. In modern frontend, we say interaction with the DOM in React is declarative. Using vanilla JavaScript to modify the DOM is procedural.

    这是编程语言之间的常见区别。 在现代的前端中,我们说与React中的DOM交互是声明性的。 使用原始JavaScript修改DOM是过程性的。

    Languages like Datalog, QBE and QUEL have relational calculus as its base. I’m not going to talk about this because I think it’s a much more niche way of doing things compared to the more practical approach followed by SQL, but you can look at it if you want.

    诸如DatalogQBEQUEL之类的语言都以关系演算为基础。 我不打算讨论这个问题,因为与SQL所采用的更实际的方法相比,这是一种更利基的处理方式,但是您可以根据需要进行查看。

    Given this introduction, let’s go on with relational algebra.

    有了这个介绍,让我们继续关系代数

    We have 2 types of operations:

    我们有2种操作类型:

    • primary operations

      主要操作

    • join operations

      加盟行动

    关系代数中的主要运算 (Primary operations in relational algebra)

    Primary operations are:

    主要操作是:

    • union to get data from two tables, generating a sum of the tuples, as long as the two tables have the same columns and attribute types (domain).

      只要两个表具有相同的列和属性类型(域),就可以通过并集从两个表中获取数据,并生成元组的和。

    • difference to get data contained in the first table but not in the second table, generating a difference of the tuples, as long as the two tables have the same columns and attribute types (domain).

      差异以获取包含在第一个表中但不包含在第二个表中的数据,从而产生元组的差异,只要两个表具有相同的列和属性类型(域)即可。

    • cartesian product to get data from two tables into and generate one single table that combines the data of them, based on an attribute value.

      笛卡尔乘积可将两个表中的数据获取并生成一个基于属性值将它们的数据组合在一起的单个表。

    • select to only extract some of the tuples (rows) contained in a table based on certain criteria.

      选择仅基于某些条件提取表中包含的一些元组(行)。

    • project to generate a new table containing only one or more attributes (columns) of an existing table

      项目以生成仅包含现有表的一个或多个属性(列)的新表

    • rename used to rename an attribute, used to prevent conflicts when multiple tables have the same name for different data

      重命名用于重命名属性,用于防止多个表对不同数据使用相同名称时发生冲突

    关系代数中的联接运算 (Join operations in relational algebra)

    Joins are probably the most powerful operations you can perform with relational algebra. They build on top of primary operations, and they allow you to correlate data contained in different relations (tables).

    连接可能是关系代数可以执行的最强大的运算。 它们建立在主要操作之上,并且使您可以关联包含在不同关系(表)中的数据。

    Note: I’ll soon talk about joins in practice in a DBMS, this is mostly theory.

    注意:我将很快讨论DBMS在实践中的联接,这主要是理论上的。

    We have 2 main join versions: natural join and theta join. All the other versions are extracted from those 2.

    我们有2个主要的join版本: 自然联接theta联接 。 所有其他版本均摘自那些2。

    自然加入 (Natural Join)

    Natural join correlates two relations (tables), and creates a new table based on the same values of an attribute.

    自然联接将两个关系(表)相关联,并基于属性的相同值创建一个新表。

    We need two relations with the same attribute name (column), first. Then if values in the attributes in relation A are unmatched in the attributes in relation B, the row is not part of the result, it’s ignored.

    首先,我们需要两个具有相同属性名称(列)的关系。 然后,如果关系A中的属性值与关系B中的属性不匹配,则该行不是结果的一部分,将忽略该行。

    Example:

    例:

    Relation A

    关系A

    Employee ID Name
    1 Mark
    2 Tony
    3 Rick
    员工ID 名称
    1个 标记
    2 托尼
    3 里克

    Relation B

    关系B

    Manager Name Employee ID
    Todd 1
    Albert 2
    经理姓名 员工ID
    托德 1个
    阿尔伯特 2

    We can perform a natural join to get the boss name for each employee:

    我们可以进行自然加入以获得每个员工的老板姓名:

    Employee ID Name Manager Name
    1 Mark Todd
    2 Tony Albert
    员工ID 名称 经理姓名
    1个 标记 托德
    2 托尼 阿尔伯特

    Since the relations have the Employee ID attribute name in common, it is only present once in the result, not 2 times.

    由于这些关系具有共同的Employee ID属性名称,因此在结果中仅出现一次,而不是2次。

    The employee #3 present in relation A, Rick, is not included in this table, because there’s no corresponding entry in relation B.

    由于在关系B中没有相应的条目,因此关系A中存在的#3雇员Rick不包括在此表中。

    θ联接 (Theta-join)

    A theta-join allows to perform a join based on any criteria to compare two columns in two different relations, not just equality like the natural join does.

    Theta-join允许根据任何条件执行连接以比较两个不同关系中的两个列,而不仅仅是自然连接那样的相等性。

    It performs a cartesian product of two tables, and filters the results based on the selection we want to make.

    它执行两个表的笛卡尔积,并根据我们要选择的内容过滤结果。

    等值联接 (Equi-join)

    The equi-join is a theta join, where the selection is based on equality between attribute values in the two different tables.

    等值联接是theta联接,其中选择基于两个不同表中属性值之间的相等性。

    The difference with the natural join is that we can choose which attributes names (columns) we want to compare.

    自然连接的区别在于我们可以选择要比较的属性名称(列)。

    We’ll talk much more about joins later when SQL is introduced, so we can use them in practice.

    稍后在引入SQL时,我们将详细讨论联接,因此我们可以在实践中使用它们。

    翻译自: https://flaviocopes.com/relational-algebra/

    关系代数运算

    展开全文
  • 关系代数的由来 首先从宏观上来认识一下关系演算这个概念,换句话讲也就是什么是关系代数,这也是我在接触一些东西的首要工作。大家都知道对于关系型数据库的数据库操作语言分为查询和更新两类。而查询语言这块,又...

    关系代数的由来 首先从宏观上来认识一下关系演算这个概念,换句话讲也就是什么是关系代数,这也是我在接触一些东西的首要工作。大家都知道对于关系型数据库的数据库操作语言分为查询和更新两类。而查询语言这块,又分为关系代数语言与关系演算语言。这里讲的

    关系代数的由来

    首先从宏观上来认识一下关系演算这个概念,换句话讲也就是什么是关系代数,这也是我在接触一些东西的首要工作。大家都知道对于关系型数据库的数据库操作语言分为查询和更新两类。而查询语言这块,又分为关系代数语言与关系演算语言。这里讲的就是关系代数。所以可以这样定义,关系代数就是为数据库操作语言进行查询的集合操作。

    关系代数中的操作可分为两类

    (1)传统的集合操作:并、差、交、笛卡儿积、除法。

    (2)扩充的关系操作:投影、选择、连接、。

    常见符号

    697c53bce42c08fcb8484903821aee70.png

    五种基本的关系代数

    1、并

    设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。形式定义如下:喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+UqHIU6HUe3Qg" t∈R ∨ t∈S},t是元组变量,R和S的元数相

    0bf6b5767cc8a5936ec1c7a1d601d697.png

    2、差(Difference)

    设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的元组构成的集合,记为R-S。形式定义如下:

    R-S≡{ t " t∈R ∧ t∈S},R和S的元数相同。

    6310c7775f63d4c679e5fa9b79eb1642.png

    3、笛卡儿积(Cartesian Product)

    设关系R和S的元数分别为r和s,定义R和S的笛卡儿积是一个(r+s)元的元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量来自S的一个元组,记为R×S。

    3a04a55177e2b55806d6ec5bc8914479.png

    4、投影(Projection)

    这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。

    表示符号

    π

    8268460aa1d128dd9fea6e2d957354f5.png

    5、连接

    这个操作是根据某些条件,对既定的集合进行条件选择。

    σ为选择运算符

    92f0fab673c6db8bcde1f16726782660.png

    对于基本的关系代数操作,可以发现。之前的三种针对的都是两个或者两个至上的集合操作,而后两种操作的都为一个集合。

    扩充的代数操作

    这个操作就是从两个集合内找出既属于R有属于S集合的元素的集合。符号:∩

    如图

    f098ab733c2b446b2232e9ca0a0f30a7.png

    图中两个集合相同的部分为第一行元素。

    除的操作要求进行操作的两个关系集合需要有重叠的属性。

    实例图表

    eafc6e5f48103c28c4c563777eaa610c.png

    结果

    7b9ca55065d079b540677d65b1138e39.png

    连接

    所有的连接操作都是在进行笛卡尔积的基础上进行一些相应的条件操作。所以根据条件不同,分为等值连接、自然连接、θ连接。

    θ连接

    cf1a1cdc51547f232462d998f572220f.png

    表示从RS中分别选取R的第i列和S的第j列进行连接操作。

    等值连接

    等值连接就是当θ的值为等于号时的连接。

    自然连接

    自然连接是一种比较特殊的连接,要求两个连接的关系中必须要有相同的属性。如

    d9c694c37fc908cb7ead53ab668a3c20.png

    如图,两个集合存在相同的属性Sno这样将这两个不同集合中相同属性的一行连接,得到结果。

    如上就是关系代数的一些基本操作和扩展操作,更多的需要从实际的例子来理解定义这样会便于理解。对于基本的操作,并、差、笛卡尔积针对的都是两个不同的集合的操作;而投影和连接针对既定集合的操作。扩展中的运算主要是连接,连接根据θ的值的不同来区分到底是自然连接和等值连接;等值连接和自然连接都是θ值在不同情况下的特殊状态。

    f68f2add0b68e4f9810432fce46917b7.png

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • 关系代数之基本操作 关系代数操作分为集合操作和纯关系操作: 并相容性 某些关系代数操作,如并、差、交等,需满足“并相容性”。 参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性。 R(A1, ...
  • -是MySQL查询语句的理论基础-是一种关系运算-运算的对象是关系,运算的过程是关系,运算的结果也是关系关系代数的运算符号:集合运算符,比较运算符,关系运算符,逻辑运算符关系代数的运算:关系代数的基本运算包括...

    关系代数是什么?

    -是MySQL查询语句的理论基础

    -是一种关系运算

    -运算的对象是关系,运算的过程是关系,运算的结果也是关系

    关系代数的运算符号:集合运算符,比较运算符,关系运算符,逻辑运算符

    关系代数的运算:

    关系代数的基本运算包括:选择、投影、并、差、笛卡尔积,更名。

    关系代数的附加运算包括:集合交运算, 连接运算(自然连接,内连接,外连接),除法。

    选择:通过选择运算关系中符合条件的部分,和SQL 中的select 语句相近

    SQL 语句:SELECT * FROM student WHERE id=1

    关系代数表达:σid=1(student)

    投影:对应SQL select 语句基本相同

    SQL 语句:SELECT student_name FROM student

    关系代数表达:∏student_name(student)

    并:对应SQL中的UNION 操作

    SQL语句:SELECT id FROM student UNION SELECT id FROM profile;

    关系代数表达:∏id(student)∪∏id(profile)

    差:对应SQL 中的EXCEPT 操作

    SQL语句:SELECT id FROM user EXCEPT SELECT id FROM profile;

    关系代数表达:∏id(user)−∏id(profile)

    笛卡尔积:任意两个关系的信息结合。对应SQL 中的CROSS JOIN

    SQL语句:SELECT * FROM user CROSS JOIN profile

    更名:对应SQL中的AS

    交运算:对应SQL语句中的INTERSECT 语句

    连接运算:对应SQL语句中的JOIN 语句

    -自然连接/内连接/外连接:

    参考网站:数据库笔记(十)——关系代数​www.jianshu.comf729a97553ed6456b20882ad3d2ee7d8.png关系代数的基本运算​keelii.comd4f0460144e94ae9ad4570d387d0e3f4.pngSQL 与关系代数​rgb-24bit.github.iohttps://zh.wikipedia.org/wiki/%E5%85%B3%E7%B3%BB%E4%BB%A3%E6%95%B0_(%E6%95%B0%E6%8D%AE%E5%BA%93)​zh.wikipedia.org关系代数运算SoEasy_小火子-CSDN博客​blog.csdn.net65b64cd35934446f213a5f44d86ba3f4.png

    展开全文
  • 此文档有关关系数据库、关系演算、关系代数有关基本理论以及基本代码。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,544
精华内容 2,217
关键字:

关系代数