笛卡儿积是什么东西?

来源:百度知道 编辑:UC知道 时间:2024/05/10 11:59:00
最好能详细举例说明一下啊~~~~~~~~~~

给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:

D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}

所有域的所有取值的一个组合

不能重复

例 给出三个域:

D1=SUPERVISOR ={ 张清玫,刘逸 }

D2=SPECIALITY={计算机专业,信息专业}

D3=POSTGRADUATE={李勇,刘晨,王敏}

则D1,D2,D3的笛卡尔积为:

D1×D2×D3 =

{(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),

(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),

(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),

(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),

(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),

(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }

说得最直接一点,就是把两个或多个表做*法运算,如有一个学生表,每个学生一条记录,有一个课程表,每个课程代码一条记录,要生成一张学生与课程表的关系,即每个学生要有所有的课程科目,则两个表直接连接查询,不加where条件,即是一个学生与科目的笛卡尔积。

两个表在查询时进行多表查询时会产生一个笛卡尔积 你在查进行多表查询时不给任何条件产生的就是你想要看的东西了~-~
eg:
select * from table1 a ,table2 b