大家好,又见面了,我是你们的朋友全栈君。
一:笛卡尔积的解释
例 给出二个域:
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。 [编辑本段]笛卡尔积的运算性质 由于有序对<x,y>中x,y的位置是确定的,因此A×B的记法也是确定的,不能写成B×A.
笛卡尔积也可以多个集合合成,A1×A2×…×An.
笛卡尔积的运算性质. 一般不能交换.
笛卡尔积,把集合A,B合成集合A×B,规定
A×B={<x,y>½xÎAÙyÎB}
在任意集合A上都可以定义笛卡尔积因为对任意两个集合A和B,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合就是集合A和B的笛卡尔积.当集合A = B 时,笛卡尔积就记作A A. [编辑本段]推导过程 给定一组域D1,D2,…,Dn,这些域中可以有相同的。D
例 给出三个域:
D1=SUPERVISOR ={ 张清玫,刘逸 }
D2=SPECIALITY={计算机专业,信息专业}
D3=POSTGRADUATE={李勇,刘晨,王敏}
则D1,D2,D3的笛卡尔积为D:
D=D1×D2×D3 =
{(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),
(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),
(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),
(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }
二:笛卡尔积的应用
某些情况下,用于 寻找连续日期中残缺的数据 的时候,可以先笛卡尔积做一个排列组合。然后和目标表进行关联,查找哪些数据缺少了。
例如有个考勤记录表,记录着100个人的2011年4月的考勤信息,理论上这些人应该每天都有记录的。
但是实际上某些人在某些天上面的数据,缺少了。
一天一天的查询,还是一个人一个人的查询,都有些麻烦。
这种情况下,可以针对 每个人 与 每一天 做一个 笛卡尔积 的处理。
然后与实际的表去关联。就很容易查询出结果了。
三:原理
MySQL的多表查询(笛卡尔积原理)
先确定数据要用到哪些表。
将多个表先通过笛卡尔积变成一个表。
然后去除不符合逻辑的数据(根据两个表的关系去掉)。
最后当做是一个虚拟表一样来加上条件即可。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157324.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...