先修课程–关系代数
我们已经意识到这样的事实,关系不过是一组元组,这里我们将有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。
关于笛卡尔产品(交叉产品)操作的要点:
- 叉积运算所得关系的基数(元组数)等于第一个关系中的属性数(例如m)乘以第二个关系中的属性数(例如n)。
Cardinality = m*n
- 两个度为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
- 在SQL中,可以使用CROSS JOIN来应用CARTESIAN PRODUCT(CROSS PRODUCT)。
- 通常,我们不会不必要地使用笛卡尔积,这意味着没有适当的含义,我们不会使用笛卡尔积。通常,我们使用笛卡尔积,然后进行选择运算并在运算符上进行比较,如下所示:
σ A=D (A ✕ B)
上面的查询给出了有意义的结果。
选择和交叉乘积运算的这种组合是如此流行,以至于JOIN操作是受此组合启发的。
- CROSS PRODUCT是二进制设置运算手段,一次我们可以对两个关系应用该运算。