zoukankan      html  css  js  c++  java
  • 数据库自学笔记(1)---广义笛卡尔积,投影,连接,外码

    最近在自学看 数据库系统概论 这本书,总结一下遇到的问题。

    1.广义笛卡尔积(Extende cartesian product):

    属于 关系代数 里面的 传统的集合运算。其他的为union,except,intersection. 

    详情不提了,举个例子就是:

    create table R
    (
    A char(2),
    B char(2),
    C char(2)
    )

    create table S
    (
    A char(2),
    B char(2),
    C char(2)
    )

    insert into R values('a1', 'b1', 'c1')
    insert into R values('a1', 'b2', 'c2')
    insert into R values('a2', 'b2', 'c1')

    insert into S values('a1', 'b2', 'c2')
    insert into S values('a1', 'b3', 'c2')
    insert into S values('a2', 'b2', 'c1')

    select * from R cross join S

    结果:
    A    B    C    A    B    C    
    ---- ---- ---- ---- ---- ---- 
    a1   b1   c1   a1   b2   c2
    a1   b2   c2   a1   b2   c2
    a2   b2   c1   a1   b2   c2
    a1   b1   c1   a1   b3   c2
    a1   b2   c2   a1   b3   c2
    a2   b2   c1   a1   b3   c2
    a1   b1   c1   a2   b2   c1
    a1   b2   c2   a2   b2   c1
    a2   b2   c1   a2   b2   c1

    行数为 3*3 ,因为k1*k2。

    列数为3+3, = 6.

    2.投影(projection):

    关系R的投影是从关系R中选择出若干属性列组成新的关系。
    分为两步:
    (1)选择出指定的属性,形成一个可能含有重复行的表。
    (2)删除重复行,形成新的关系。
     

    我们关注这个重复行:一开始我们同时选取名字和班级的时候,尽管班级有重复,但是整个行来说不重复就行。

    当我们转到了只取班级,这就有重复行了,就会被消灭(新版书上体现出来了,这里还保留了重复行)

     3.连接(join):

    大体上分:

    1. 等值连接(内连接)【inner join】:

    等值连接是条件连接在连接运算符为“=”号时的特例。  

    它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组。

    自然连接 :是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉 等值连接表示为RA=BS,自然连接表示为RS;自然连接是除去重复属性的等值连接。

    两者之间的区别和联系如下:

    1、自然连接一定是等值连接,但等值连接不一定是自然连接。等值连接不把重复的属性除去;而自然连接要把重复的属性除去。

    2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。

    3、等值连接不把重复的属性除去;而自然连接要把重复的属性除去。

    2. 外连接(outer join):

    外连接就是自然连接的结果加上被舍弃的悬浮元祖,没有的属性便设定为NULL。

    如果只保留左边R的悬浮元素就是左连接(left join),反之就是右连接(right join)

    ps:正式名称应该是左/右外连接(left/right outer join)不过一般外面的资料都是简称。

    4.外码(Foreign key):

    需要注意的是外码不一定要与相对的主码同名。比如说学生关系里面的主码为学号,外码是班长。当然我们都知道班长也是指向一个学号,只是为了区分我们才使用了不同名。

    参考:

    https://blog.csdn.net/weixin_42194151/article/details/81135212

    还有 数据库系统概论第五版

  • 相关阅读:
    1 Quartz开始
    1 WCF 一个基础理论 以及如何实现一个简单wcf服务
    计时器timer的使用
    获取当前电脑的cpu使用率、内存使用率
    在asp.net core中使用cookie认证
    在.net core项目中想使用类似iis上面虚拟目录的功能
    有这样一个URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}。
    输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26
    window.onload 和document ready的区别
    call和apply的区别
  • 原文地址:https://www.cnblogs.com/childking/p/14040272.html
Copyright © 2011-2022 走看看