每日小编都会为大家带来一些知识类的文章,那么今天小编为大家带来的是如何快速理解笛卡尔积的概念方面的消息知识,那么如果各位小伙伴感兴趣的话可以,认真的查阅一下下面的内容哦。
1.在进行笛卡尔积运算前,需要注意的是,参与运算的某属性的取值范围(域)D1,D2,...,Dn并不会取所代表意义的全部可能的值,但他们的计算值(笛卡尔积)却是所有可能的组合。例如,姓名的域往往抽取有限个{张三,李四},学号的域也是抽取有限个{100101,100102,100103}。但笛卡尔积却是他们的所有可能的组合{(张三,100101),(张三,100102),(张三,100103),(李四,100101),(李四,100102),(李四,100103)}。如果用二维表表示的话,这并没有现实的意义,因为这是所有可能的组合。而现实情况是,一个人只可能有一个学号,一个学号只能对应一个人。所以,引出另一个定义:D1×D2×...×Di×...×Dn的子集称为在域D1,D2,...,Di,...,Dn上的关系,记为R(D1,D2,...,Di,...,Dn),称关系R为n元关系。如图,用该二维表表示的关系R为4元关系。它是域D1,D2,D3,D4(学号,姓名,专业,性别)笛卡尔积的子集。而关系R具有现实意义,因为它可能就是某一学校的学生表。域D1,D2,D3,D4(学号,姓名,专业,性别)笛卡尔积的基数为3×3×3×2=54,这里是它的子集,只有3行,基数为3。同时,关系R也可以看做一个域(二维表),有三种取值,一个元组意为一个取值。可以与另一个域(二维表)做笛卡尔积,形成一个新的域(二维表)。2.在百度百科中,笛卡尔积的定义是:“两个集合X和Y的笛卡尔积(Cartesianproduct),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成”我们可以看出,这是一个特例,是两个集合的笛卡尔积。在数据表中,也经常需要做两个表的join操作,其实也就是求笛卡尔积。教课书中给的广义笛卡尔积定义:两个元数分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组,记作R×S,其形式定义如下:R×S={t|t=∧t^n∈R∧t^m∈R}如果R和S中有相同的属性名,可在属性名前加关系名作为限定,以示区别。若R有K1个元组,S有K2个元组,则R和S的广义笛卡尔积有K1×K2个元组。注意:代表元组t^n和t^m拼接成的一个元组。“∧”是“逻辑与”。如图,列数为3、元组个数为3的关系R和列数为3、元组个数为3的关系S做笛卡尔积,成为了一个列数为6、元组个数为9的新二维表。(图片引自百度百科)
本文到此结束,希望对大家有所帮助。