精华内容
下载资源
问答
  • 笛卡尔积

    2020-01-20 22:56:20
    假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的...

    假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。

    展开全文
  • SQL的笛卡尔积简记

    2020-11-29 23:28:58
    SQL的笛卡尔积简记 摘要: 简单记录一下SQL中的笛卡尔积与简单应用; 1 什么是笛卡尔积? /* * 什么是笛卡尔积? * 笛卡尔积:在SQL中的实现方式就是交叉链接(CROSS join) 所有连接方式都会 * 生成临时笛卡尔积表;...

    SQL的笛卡尔积简记

    摘要:

    简单记录一下SQL中的笛卡尔积与简单应用;

    1 什么是笛卡尔积?

    /*
     * 什么是笛卡尔积?
     * 笛卡尔积:在SQL中的实现方式就是交叉链接(CROSS join) 所有连接方式都会
     * 生成临时笛卡尔积表;笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合.
     * 在实际应用中,笛卡尔积本身大多没有什么实际应用,只有两张表连接查询时加上限制条件,才会有意义
     */
    

    2 笛卡尔积产生的原因

    /*
     * 笛卡尔积产生的原因?
     * 1 表连接缺少关联条件;
     * 2 表连接有关联条件,但是oracle判断用笛卡尔积更快,也会出现笛卡尔积,这个时候要看实际执行速度;
     * oracle这样判断,一般是表比较小,这个时候要特别检查表的数据量是不是真的很少,以免oracle因为统计信息错误
     * 而误判
     */ 
    

    3 解决笛卡尔积的方式

    /*
     * 笛卡尔积的解决方案?
     * 1 针对 接缺少关联条件导致的笛卡尔积,一般业务是不会直接这么操作的,如果SQL是这样的需要查看SQL是否正确。
     * 2 针对有关联条件, oracle仍然采用了笛卡尔积的方式 有两种情况
    		2.1 由于ORACLE判断作笛卡尔积,说明两表关联,至少有一张表是小表,查看执行计划的基数 这个指数如果与			  实际相同,则建议不作优化修改即可。
    		2.2 如果查看执行计划的基数与实际基数不同,则由可能是oracle数据误判表的基数,则可采用hint方式,改				变SQL的执行过程。
     */
    

    4 创造笛卡尔积

    SELECT * FROM student s,course c
    SELECT * from student CROSS JOIN course
    ##上面两种方式都可以出现笛卡尔积现象
    # 查询结果:
    #	stu_id	stu_username	stu_password	c_id	cla_id	c_id	c_name
    1	"1"			"张三"		"123"			"1"		"1"		"1"		"数学"
    2	"1"			"张三"		"123"			"1"		"1"		"2"		"语文"
    3	"1"			"张三"		"123"			"1"		"1"		"3"		"英语"
    4	"1"			"张三"		"123"			"1"		"1"		"4"		"物理"
    5	"1"			"张三"		"123"			"1"		"1"		"5"		"化学"
    6	"1"			"张三"		"123"			"1"		"1"		"6"		"生物"
    7	"2"			"李四"		"234"			"2"		"2"		"1"		"数学"
    8	"2"			"李四"		"234"			"2"		"2"		"2"		"语文"
    9	"2"			"李四"		"234"			"2"		"2"		"3"		"英语"
    10	"2"			"李四"		"234"			"2"		"2"		"4"		"物理"
    11	"2"			"李四"		"234"			"2"		"2"		"5"		"化学"
    12	"2"			"李四"		"234"			"2"		"2"		"6"		"生物"
    13	"3"			"王五"		"258"			"2"		"1"		"1"		"数学"
    14	"3"			"王五"		"258"			"2"		"1"		"2"		"语文"
    15	"3"			"王五"		"258"			"2"		"1"		"3"		"英语"
    16	"3"			"王五"		"258"			"2"		"1"		"4"		"物理"
    17	"3"			"王五"		"258"			"2"		"1"		"5"		"化学"
    18	"3"			"王五"		"258"			"2"		"1"		"6"		"生物"
    19	"4"			"赵六"		"5689"			"3"		"1"		"1"		"数学"
    20	"4"			"赵六"		"5689"			"3"		"1"		"2"		"语文"
    21	"4"			"赵六"		"5689"			"3"		"1"		"3"		"英语"
    22	"4"			"赵六"		"5689"			"3"		"1"		"4"		"物理"
    23	"4"			"赵六"		"5689"			"3"		"1"		"5"		"化学"
    24	"4"			"赵六"		"5689"			"3"		"1"		"6"		"生物"
    25	"5"			"孙七"		"56896"			"[NULL]""3"		"1"		"数学"
    26	"5"			"孙七"		"56896"			"[NULL]""3"		"2"		"语文"
    27	"5"			"孙七"		"56896"			"[NULL]""3"		"3"		"英语"
    28	"5"			"孙七"		"56896"			"[NULL]""3"		"4"		"物理"
    29	"5"			"孙七"		"56896"			"[NULL]""3"		"5"		"化学"
    30	"5"			"孙七"		"56896"			"[NULL]""3"		"6"		"生物"
    31	"7"			"悟空"		"45899"			"4"		"2"		"1"		"数学"
    32	"7"			"悟空"		"45899"			"4"		"2"		"2"		"语文"
    33	"7"			"悟空"		"45899"			"4"		"2"		"3"		"英语"
    34	"7"			"悟空"		"45899"			"4"		"2"		"4"		"物理"
    35	"7"			"悟空"		"45899"			"4"		"2"		"5"		"化学"
    36	"7"			"悟空"		"45899"			"4"		"2"		"6"		"生物"
    37	"8"			"李四"		"234"			"2"		"2"		"1"		"数学"
    38	"8"			"李四"		"234"			"2"		"2"		"2"		"语文"
    39	"8"			"李四"		"234"			"2"		"2"		"3"		"英语"
    40	"8"			"李四"		"234"			"2"		"2"		"4"		"物理"
    41	"8"			"李四"		"234"			"2"		"2"		"5"		"化学"
    42	"8"			"李四"		"234"			"2"		"2"		"6"		"生物"
    43	"9"			"王五"		"258"			"2"		"1"		"1"		"数学"
    44	"9"			"王五"		"258"			"2"		"1"		"2"		"语文"
    45	"9"			"王五"		"258"			"2"		"1"		"3"		"英语"
    46	"9"			"王五"		"258"			"2"		"1"		"4"		"物理"
    47	"9"			"王五"		"258"			"2"		"1"		"5"		"化学"
    48	"9"			"王五"		"258"			"2"		"1"		"6"		"生物"
    

    发现所有行的数据相互组合出现了上述问题

    5 实际中使用

    /**
     * 一般情况下我们应该避免笛卡尔积的出现,因为如果两张表的数据有一个或一个以上的数据量比较大的时候,就会导致"数	据爆表"
     * 但是当两张表的数据都比较小的时候就可以使用笛卡尔积来解决问题.
     * */
    

    需要给所有的Employee分配几个权限(Role)

    -- 建表语句
    create table employees
    (
        empid int  primary key,
        empname varchar(20) not null
    )
    create table role
    (
        roleid int  primary key,
        description varchar(50) not null
    )
    create table emp_role
    (
        empid int ,
        roleid int
    )
    -- 插入数据
    insert into employees values(1,'Jacky')
    insert into employees values(2,'Wendy')
    insert into employees values(3,'David')
    insert into employees values(4,'Lucy');
    insert into employees values(5,'Tom');
    insert into employees values(6,'Ann');
    insert into role values(1,'Create Training')
    insert into role values(2,'Training')
    insert into role values(3,'Manage Employee')
    insert into role values(4,'Manage Deparement')
    -- 使用笛卡尔积给用户赋予权限
    # 操作前查询一下没有数据
    select * from emp_role er
    
    # 操作
    INSERT INTO emp_role SELECT empid, roleid FROM employees e
    CROSS JOIN roles r WHERE r.roleid IN(1,2)
    
    # 操作后数据
    #	empid	roleid
    1	"1"		"1"
    2	"1"		"2"
    3	"2"		"1"
    4	"2"		"2"
    5	"3"		"1"
    6	"3"		"2"
    7	"4"		"1"
    8	"4"		"2"
    9	"5"		"1"
    10	"5"		"2"
    11	"6"		"1"
    12	"6"		"2"
    
    展开全文
  • 笛卡尔积简单介绍

    千次阅读 2020-10-15 13:15:06
    title: 简单介绍笛卡尔积 date: 2020-10-13 20:26:18 tags: “离散数学????” categories: “2020/10” 简介 这个博客参考左孝陵先生的《离散数学》,会尽量简单的讲讲笛卡尔积,能够给大家一个更加具体的认识。 ...

    简介

    这个博客参考左孝陵先生的《离散数学》,会尽量简单的讲讲笛卡尔积,能够给大家一个更加具体的认识。

    什么是序偶

    要知道什么是序偶,先得弄明白序偶的作用,我觉得序偶就是带顺序的集合,用来表示一些集合表示不了的东西。比如在小学学的直角坐标系上,有两个点,(2,3)和(3,2),点的坐标就是序偶,因为它自带顺序,为什么每次一个点都先读x坐标再读y坐标?是因为规定了顺序,才能表示更多的点。坐标系如果用集合来表示坐标,那{2,3},{3,2}就是同一个点了。

    再举一个例子吧,老师对同学们说报出你们的身高体重,你有一米八,体重190斤。你如果说“190,180”老师会认为你是一米九,体重180斤,因为老师问的时候带了一个顺序,问的是序偶,身高到体重,如果你按体重到身高报,就完全错了

    什么是笛卡尔积

    令A和B是任意两个集合,若序偶的第一个成员是A的元素,第二个成员是B的元素,所有这样的序偶集合,称为集合A和B的笛卡尔乘积或直积,记做A X B

    如果觉得定义太抽象,也没有关系,让我们继续之前老师记身高体重的例子,再没有你这种反着来报体重身高的人后,老师很快就得到了全班同学的身高体重表格,

    身高 体重
    170 140
    180 190
    190 180
    …… ……

    看看这个表来源于什么,来源于全班同学的身高的集合A,体重的集合B。那么,全班同学的体重身高就可以表示为A X B,全班同学的体重身高就可以表示为B X A

    更加严谨的表达方式

    假设身高集合为A={a1,a2,a3,a4……an},体重集合为B = {b1,b2,b3,b4,b5……},那么A X B = {<a1,b1>, <a1,b2> ,<a1, b3>,……<a1,bn>,<a2,b1>,<a2,b2>……<an,bn> }

    具体特征是a永远在前面,b永远在后面,因为是A X B,一共有n X n 个元素,因为A,B数组的元素个数为n,n

    笛卡尔积与函数的联动

    有这样一个函数,定义域为x,值域为1,那么这个函数可以表示为 R X 1的子集,能不能画出这个题的图像呢?

    y = 1函数图像

    其实我根据定义域和值域就用y = 1来画这个题的图像是不严谨的,应该说,这题是运气好才能画出图像,但是不可能确定表达式,因为决定函数的是定义域和对应关系。比如这题的函数可以是

    但我想表达的是,函数的图像,不可能超过它定义域和值域的笛卡尔积,而是被包含在笛卡尔积的图像之中,我能准确的画出这个题的图像,是因为R X 1这个笛卡尔积,结果是一条直线,导致函数图像的可能性降低,所以能画出图像。

    如果我告诉你定义域为[-3,3],值域为[-3,3],是肯定画不出图像,确定不了函数的,但是我可以肯定的是,函数的图像一定在[-3,3] X [-3,3]的正方形图像当中

    原文来自我的博客,欢迎参观哦😯

    展开全文
  • 数据库之SQL笛卡尔积

    千次阅读 2019-09-24 07:42:51
    数据库之SQL笛卡尔积 1.笛卡尔积定义 笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意...

    1.笛卡尔积定义

          笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一数据任意组合,上图中两个表连接即为笛卡尔积(交叉连接)

          在实际应用中,笛卡尔积本身大多没有什么实际用处,只有在两个表连接时加上限制条件,才会有实际意义,下面看内连接

    示例:

    l表

    lid         name
    ----------- --------------------
    101         北京
    102         太原
    101         NULL
    102         NULL

     

    matid       qty         lid         mname
    ----------- ----------- ----------- --------------------
    10011       1           101         北京
    20012       1           102         太原
    10011       1           102         太原
    10011       1           102         太原 


    lm:
    lid         name                 matid       qty         lid         mname
    ----------- -------------------- ----------- ----------- ----------- --------------------
    101         北京                   10011       1           101         北京
    102         太原                   10011       1           101         北京
    101         NULL                 10011       1           101         北京
    102         NULL                 10011       1           101         北京
    101         北京                   20012       1           102         太原
    102         太原                   20012       1           102         太原
    101         NULL                 20012       1           102         太原
    102         NULL                 20012       1           102         太原
    101         北京                   10011       1           102         太原
    102         太原                   10011       1           102         太原
    101         NULL                 10011       1           102         太原
    102         NULL                 10011       1           102         太原
    101         北京                   10011       1           102         太原
    102         太原                   10011       1           102         太原
    101         NULL                 10011       1           102         太原
    102         NULL                 10011       1           102         太原

    (16 行受影响)

     

    2.笛卡尔积产生原因

    • 表连接缺少关联条件,这个是必须要改的;
    • 表连接有关联条件,但是oracle判断用笛卡尔积更快,也会出现笛卡尔积,这个时候要看实际执行速度;oracle这样判断,一般是表比较小,这个时候要特别检查表的数据量是不是真的很少,以免oracle因为统计信息错误而误判

    3.产生笛卡尔积的解决方案

    •   针对 接缺少关联条件导致的笛卡尔积,一般业务是不会直接这么操作的,如果SQL是这样的需要查看SQL是否正确。
    •        针对有关联条件, oracle仍然采用了笛卡尔积的方式 有两种情况

            由于ORACLE判断作笛卡尔积,说明两表关联,至少有一张表是小表,查看执行计划的基数 这个指数如果与实际相同,则建议不作优化修改即可。

            如果查看执行计划的基数与实际基数不同,则由可能是oracle数据误判表的基数,则可采用hint方式,改变SQL的执行过程。

            示例如下:

            

    select /*+cardinality(ds, 1000) */  re.usercode "userCode",

           re.referrername "userName",

           re.referrertel "userPhone",

           re.we_chat_id "userWeChat",

           decode(re.referrerlevel, 'L3', 'SCR', 'CR') "refLevel"

      from l_ds_white_mas ds, l_referrer_mas re, l_ds_white_referrer_rel rel

    where rel.usercode = re.usercode

       and ds.dsUm = rel.dsUm

       and ds.status = 1

       and rel.is_effect = 1

       and re.iseffective = '1'

       and re.status = 1

       and re.usercode = :1

     

    posted on 2018-04-19 17:50 shoshana~ 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/shoshana-kong/p/8884738.html

    展开全文
  • 集合论—笛卡尔积与二元关系

    千次阅读 2019-05-28 17:49:55
    笛卡尔积 笛卡尔积的定义 设AAA、BBB为集合,用AAA中的元素作为第一元素,BBB中的元素作为第二元素,构成有序对。所有这样的有序对组成的集合称作AAA和BBB的笛卡尔积,记作A×BA×BA×B.A×B={&lt;x,y&gt;...
  • 数据库笛卡尔积运算

    千次阅读 2014-08-05 20:20:00
    笛卡尔积老是忘记怎么运算,R*S 即R的每一行和S的每一行连接。 转载于:https://www.cnblogs.com/starxingyun/p/3893092.html
  • Mysql——关系数据库之笛卡尔积

    千次阅读 2017-10-07 22:33:30
    笛卡尔积: 域:域是一组具有相同数据类型的值的集合。例如下图红框的表示即为域。 1、笛卡尔定义:给定一组域D1,D2,D3,..............,Dn 的笛卡尔积为,D1XD2XD3X,,,,,,,,XDn={(d1,d2,d3.......,dn)|...
  • 离散学习--笛卡尔积

    千次阅读 2016-09-18 17:13:26
    笛卡尔积 定义:对于集合A和集合B,以A中的元素作为第一元素,B中的元素作为第二元素组成序偶,所有这样的序偶组成的集合称为A和B的笛卡尔积,记作A × B,形式化表达为 A×B=x,y>|x∈A,y∈B A × B = { | x ∈ ...
  • List 笛卡尔积计算

    2020-12-31 15:14:52
    public static void main(String[] args) { List<String> list1 = Arrays.asList("1", "2", "3"); List<String> list2 = Arrays.asList("A", "B", "C"); List<String> res = listMultiply(list...
  • 数据库系统概念 关系和笛卡尔积

    千次阅读 2020-04-18 11:33:26
    计算机专业,王敏),(刘逸,信息专业,李勇), (刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) } 基数为2×2×3=12 三、关系和笛卡尔积 D1,D2,…,Dn的笛卡尔积的某个子集才有实际含义 例:表2.1 的笛卡尔积...
  • 关系数据库 一、关系数据结构及形式化定义 1.关系 单一的数据结构----关系 现实世界的实体以及实体间的...1.2 笛卡尔积(Cartesian Product) 笛卡尔积: 给定一组域D1,D2,…,Dn,允许其中某些域是相同的。 D1,D
  • 一般来说,要避免产生笛卡尔积,需要使用n-1规则,这里的n为from子句中表的数量,并且n-1是要避免产生笛卡尔积的最小连接数。根据在表中的关键字和链接列不同,可能需要超过n-1个连接,但是对党写查询来说,n-1是一...
  • 1.笛卡尔积:当做一个表来说,就是一行是一个元组,一列是一个域,是域的基数的相乘 2.关系:一张规范的二维表 3.域:是一组具有相同的数据类型的值的集合 4.域的基数:用白话说就是域中不重复取值的域的个数 5.关系...
  • 关系T的元数(基数) = r+s
  • Dn的笛卡尔积为D1D同济大学@计算机基础教研室第2章 关系数据库 本章重点介绍: 关系模型的基本概念 关系代数(难点) 2.1 关系数据库应用实例 2.1 关系数据库应用实例 2.1 关系数据库应用实例 2.1 关系数据库应用实例 ...
  • 笛卡尔乘积

    2019-11-18 23:01:44
    设A和B是两个集合,A到B的笛卡尔积用A×B表示,它是所有形如(a,b)的有序对作为元素的组合,其中a∈A,b∈B。笛卡尔积的符号化为:A×B={(x,y)|x∈A∧y∈B} 例:假设集合A=a,b,集合B=0,1,2,则两个集合的笛卡尔积...
  • 基数

    2013-11-24 15:17:29
    /* * 作 者: 霍雨佳 * 完成日期:2013 年 11 月 24 日 * 版 本 号:v1.0 * 问题描述:按输入输出基数。 * Copyright (c) 2013, 烟台...* 问题分析:输入一个基数,按公式输出基数。 */ #include us
  • 笛卡尔乘积笛卡尔(Descartes)...笛卡尔积的符号化为:A×B={(x,y)|x∈A∧y∈B}例:假设集合A=a,b,集合B=0,1,2,则两个集合的笛卡尔积为(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)。工作中常用到1、数据库盗一张图,很...
  • 在编写sql语句时应 避免产生笛卡尔积,数据量太大。极度影响效率! 以下为笛卡尔积实例 表1数据条数:216 表2数据条数:3509 总数据条数 = 216 * 3509 = 757944 若两张表的数据基数为十万级或者更多那数据库怕是直接...
  • 集合基数

    千次阅读 2015-05-12 14:28:08
    掌握:集合基数的定义、基数的比较、可数集的定义与主要性质 集合的等势与优势 集合的等势  通俗的说,集合的势是量度集合所含元素多少的量。集合的势越大,所含的元素越多。 定义9.1 设A,B是集合,如果...
  • 关系数据库——关系数据语言

    千次阅读 多人点赞 2019-10-22 19:52:51
    关系 域:一组具有相同数据类型的... 笛卡尔积基数:每个域不同取值的个数的乘积,或者说元组的个数 关系:域的笛卡尔积的子集叫做在域上的关系,域的个数叫做关系的目或度。(即列数,属性的数目),注意...
  • 笛卡尔乘积之前在做商城的时候用到过一次,将商品的多种属性进行组合 上面的代码没有考虑当只有一种 属性时的情况,实际应用中需要考虑 并且result.push的内容应该根据实际应用中的数据格式进行处理,上面的代码...
  • 一:什么是Oracle执行计划?执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述二:... 根据需要配置要显示在执行计划中的列 执行计划的常用列字段解释:基数(Rows):Oracle估计的当前操作的返回结果集行...
  • 第3章 关系模型的基本概念 3.1 关系的定义与性质 3.1.1 关系的定义 域(Domain):是值的集合 ...元组个数称为笛卡尔积基数(Cardinality)。元组由元组分量组成,元组分量是元组的值。参与笛卡尔积的域的个数...
  • 关系数据库

    2020-05-14 13:10:34
    基数:上图中D1的基数2,D2的基数2,D3的基数2,笛卡尔积基数为2*2*2=8 关系的度或目:属性的个数 关系术语: 关系:一张表 元组:表中的一行 属性:表中的一列 候选码:可以唯一确定一个元组的属性或属性组 主...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,464
精华内容 585
关键字:

笛卡尔积的基数