📜  关系代数中的笛卡尔积运算

📅  最后修改于: 2021-08-25 10:25:33             🧑  作者: Mango

先修课程–关系代数
我们已经意识到这样的事实,关系不过是一组元组,这里我们将有2组元组。

在对两组元组上的两个关系应用笛卡尔乘积时,它将把每个元组从左组(关系)中逐一取出,并将其与右组(关系)中的所有元组配对。

因此,两个度为p的关系A(R1,R2,R3,…,Rp)和度为n的B(S1,S2,S3,…,Sn)的叉积为关系C(R1,R2, R3,…,Rp,S1,S2,S3,…,Sn)具有度p + n属性。

CROSS PRODUCT是二进制设置运算手段,一次我们可以对两个关系应用该运算。但是,我们要在其上执行操作的两个关系没有相同的元组类型,这意味着这两个关系的并集兼容性(或类型兼容性)不是必需的。

符号:

A ✕ S

其中A和S是关系,
符号“✕”用于表示CROSS PRODUCT运算符。

例子:
考虑以下两个关系STUDENT(SNO,FNAME,LNAME)和DETAIL(ROLLNO,AGE):

SNO FNAME LNAME
1 Albert Singh
2 Nora Fatehi

ROLLNO AGE
5 18
9 21

在学生和细节上应用CROSS PRODUCT时:

STUDENT ✕ DETAILS

SNO FNAME LNAME ROLLNO AGE
1 Albert Singh 5 18
1 Albert Singh 9 21
2 Nora Fatehi 5 18
2 Nora Fatehi 9 21

我们可以看到,STUDENT关系中的元组数为2,DETAIL中的元组数为2。因此,执行CROSS PRODUCT时所得关系中的元组数为2 * 2 = 4。

关于笛卡尔产品(交叉产品)操作的要点:

  1. 叉积运算所得关系的基数(元组数)等于第一个关系中的属性数(例如m)乘以第二个关系中的属性数(例如n)。
    Cardinality = m*n
  2. 两个度为p的关系A(R1,R2,R3,…,Rp)的叉积与度为n的B(S1,S2,S3,…,Sn)的叉积为C(R1,R2,R3, …,Rp,S1,S2,S3,…,Sn),其度数为p + n。
    Degree = p+n
  3. 在SQL中,可以使用CROSS JOIN来应用CARTESIAN PRODUCT(CROSS PRODUCT)。
  4. 通常,我们不会不必要地使用笛卡尔积,这意味着没有适当的含义,我们不会使用笛卡尔积。通常,我们使用笛卡尔积,然后进行选择运算并在运算符上进行比较,如下所示:
    σ A=D (A ✕ B)

    上面的查询给出了有意义的结果。

    选择和交叉乘积运算的这种组合是如此流行,以至于JOIN操作是受此组合启发的。

  5. CROSS PRODUCT是二进制设置运算手段,一次我们可以对两个关系应用该运算。