数据库:笛卡尔乘积到底是域乘域,还是元组乘元组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库:笛卡尔乘积到底是域乘域,还是元组乘元组?相关的知识,希望对你有一定的参考价值。

参考技术A 笛卡尔积相乘后,所得行为元组,列为域。
元组应该是根据笛卡尔积定义的。
而本身相乘的应该是定义好的域。
参考技术B 我们举一个例子:1、2、3和4、5、6两组数据,从第一个数组当中选一个数字,再从第二个数组当中选一个数字组成一个两位数有几种可能?如下:14、15、16、24、25、26、34、35、36,能明白这个意思的话就可以明白笛卡尔积是什么意思了……

关系数据库

关系数据库:

关系模型由:关系数据结构、关系操作集合、关系完整性约束三部分。

关系模型三个方面:完整性约束、关系数据库系统中实现关系操作的一种语言、关系演算。

完整性约束:

  1. 关系

    :一组具有相同数据类型的值的集合;

    笛卡尔积:两个域(或多个)的笛卡尔积,是把两个域的属性(类型)叠加(不删除重复项),新的域中的每个元组(可以看成二元表中的一行)包含这个新的域中的每个属性(即使部分属性为空,也不能删除此元组);

    关系:域D1、D2...Dn,这些域的笛卡尔积的子集叫做在域D1、D2...Dn上的关系。n是关系的度;

    属性:域每列取一个名字,这个列名叫属性(attribute);

    候选码:关系中能唯一标识一个元组的某一属性组(或某一属性值),就叫做候选码;

    主码:一个关系中有多个候选码,则其中任意一个可以作为主码;

    主属性:候选码的所有属性都称为主属性;

    非主属性:(非码属性)不包含任何候选码中的属性就是非主属性;

    全码:关系模式(可以看做是一个表)所有的属性共同构成这个关系的候选码(这个表所有属性一起才能确定一个元组,即这个表的主键是这个表本身)

2、关系有三种类型:基本关系、查询表、是图表

3、关系数据语言:关系代数语言(ISBL);关系演算语言(QUEL,QBE);具有关系代数和关系演算双重特点的语言(SQL)

4、关系的三类完整性约束:实体完整性、参照完整性、用户定义的完整性。

    实体完整性:主属性不能为空;

5、关系代数:传统:并、差、交、笛卡尔积;专门的运算:选择、投影、链接、除法运算

    选择:取表中行;

    投影:取表中列;

    连接:从笛卡尔积中选取属性满足一定条件的元组;(等值链接,操作条件为“=”;自然链接;semi-join(半连接);外连接)

6、选择的实现:

  • 全表扫描:对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出;缺点:对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出。

  • 索引(或散列)扫描方法:

    适合选择条件中的属性上有索引(例如B+树索引或Hash索引)

    通过索引先找到满足条件的元组主码或元组指针,再通过元组指针直接在查询的基本表中找到元组。

连接的实现:

  • 嵌套循环方法(nested loop)

  • 排序-合并方法(sort-merge join 或merge join)

  • 索引连接(index join)方法

  • Hash Join方法





本文出自 “数据库理论知识” 博客,请务必保留此出处http://mehome.blog.51cto.com/9744080/1916790

以上是关于数据库:笛卡尔乘积到底是域乘域,还是元组乘元组?的主要内容,如果未能解决你的问题,请参考以下文章

关系数据库

数据库学习摘记 —— 关系代数和关系演算

什么是笛卡尔积?

详解T-SQL的联接机制

简述啥是关系、元组、属性、域、主码?

数据库学习