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

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

  • 相关阅读:
    Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0.
    旋转二维数组
    replace empty char with new string,unsafe method和native implementation的性能比较
    判断一字符串是否可以另一字符串重新排列而成
    移除重复字符的几个算法简单比较
    也来纠结一下字符串翻转
    判断重复字符存在:更有意义一点
    程序员常去网站汇总
    sublime
    针对程序集 'SqlServerTime' 的 ALTER ASSEMBLY 失败,因为程序集 'SqlServerTime' 未获授权(PERMISSION_SET = EXTERNAL_ACCESS)
  • 原文地址:https://www.cnblogs.com/childking/p/14040272.html
Copyright © 2011-2022 走看看