胡言乱语自学皮毛3

这两天开始学数据库了,因为下个学期要上数据库的关系加上数据库相比起其他的课应该更好理解一点。最最最重要的是这门课是东南大学的徐立臻老师讲的,真的很棒,这么抽象的课,我这么笨的人都觉的可以理解吸收,真的很开心哈哈哈。感觉再多说就写成日记了,那么开始总结吧!
今天是从徐老师讲的第二章开始的。

一、数据模型的一些基本概念

1️⃣.Record
现实世界中的一个实体对应的就是一个Record
每一个Record都有很多个field
比如一个具体的学生,张三。17岁,高三,学号34。
那么张三这个实体就是一个Record。
这个Record由Name Age Class Number等field组成。

二、层次结构

上面所说的Record(记录)和field(域)都是在层次结构中使用的。在最常用的关系数据结构中相对应用的是元组属性

三、网状结构

四、关系模型

1️⃣.softlink

softlink顾名思义“软连接”。像C里面学的指针这种,是硬链接。
软连接作用类似于指针,但并不是指针。
举例:
比如一张①学生信息表,②一张课程清单表,③一张什么学生选了什么课的表。
可以通过③表中的学号,来访问到①学生信息表(学生信息表中有学号,姓名,年龄等属性);
这样通过学号来找①学生信息表的动作就叫做软连接。

2️⃣.基本术语和概念

属性:实体的信息;
:属性的取值范围(?)

 注意:①属性必须是原子的,不可再分。即必须是基本数据类型,不允许是数组等。②允许是空值null,但不是空串,也不是0!

:属性的个数;

3️⃣主键,候选键,超键,全键,外键

①PrimayKey主键:
这个属性的值,可以唯一的决定该元组其他属性的值;
比如说学生信息表,每一个具体的学生都是一个个元组。如果学号属性确定了,那么其他的属性,比如说 年龄 , 成绩 , 班级都会被确定。
②SuperKay超键:
单个学号的属性可以确定其他值,如果再拉上其他的一个属性成为一个二元属性。那么这个新的二院属性就是超键;
③AllKey全键:
在这个关系中,任意的拿出几个属性,都不能唯一的确定一条元组,那么这些键就是全键;
④OutKey外键:
在一个R关系里,有一组属性,用它来引用另外的S关系中的元组的话,这组属性就叫做外键;
(其实softlink就是通过外键实现的,XD )
如果把外键看做逻辑指针的话,指针是不能为空的!也就是这个外键所指向的S关系中的元组必须存在
⑤Domanin integrity Constraints域完整性约束:
这张表里每条元组的每个属性的值,都必须要符合值域的要求;
⑥实体完整性约束(英文忘记记了XD)
一个关系里,定义了主键,那么主键一定不能为null
(主键要是为null空了的话,你就没法唯一的表示一个元组了,对吧。)
其他属性是可以为null空的;
之后设计表的时候,定义了学号为主键。插入新的元组(新学生)如果学号属性为null是会报错的。

一些例子

在这里插入图片描述
注意,在R1关系表中,不能说sid+bid是主键。因为一个水手可能在不同的日期租同一条船。如果A水手在10号租了B船,A水手又在25号租了B船。这就会在R1关系中出现了两个元组,sid和bid相同但是day不同。所以这里sid+bid无法确定一个唯一的元组,故这R1关系应该为全键而非sid+bid的主键;


4️⃣关系代数

关系模型中,最大的特点就是把现实世界的实体都用来表示。在数据库里存的数据就是一张张的。对要求进行查询的结果,还是。在这之上定义一个代数系统,这就是关系代数
①Selection选择操作
在一个关系里,把满足关系的元组找出来。选择是有条件的嘛。Selection操作是有条件的。
在这里插入图片描述
这里就是对S2表先进行了Selection(Rating>8),再在选择后的Schema结果进行对sanme,rating的投影。


②Projection投影操作
在关系中把不需要的列(属性)去掉。
在这里插入图片描述
水手那张表,在Projection到age上之后,只剩下两个元组35.0和55.5;
注意!Projection投影操作必须要消除结果中的重复元组
因为结果是个表,投影的结果也是表,表里都是元组。
如果两个元组中的内容完全一致,那么我们认为这两个元组在现实世界中表示的是同一个事物。
但是!在实际的数据库操作中,默认是不消除重复元组的!除非用户特别注明。


③Cross-product笛卡尔积操作(内介绍条件连接概念)
把两个关系表拼接在一起,形成一个大的关系。

R1和S1的笛卡尔乘积
笛卡尔乘积之后进行的重命名操作
为了防止笛卡尔乘积后Schema无意义,通常会使用连接操作连接操作内容为笛卡尔乘积+选择操作;

笛卡尔乘积后进行S1.sid<R1.sid的Selection
这叫做条件连接
如果把条件改一下,改成S1.sidR1.sid,就是等值连接了!
等值连接后的Schema
等值连接后,因为条件是sid=,所以结果Schema中就去掉了一行Schema;
其实最常用的是自然连接,也就是在所有属性上进行等值连接。后面会讲。


④Set-difference集合差操作
把属于A关系但不属于B关系的元组找出来
⑤Union合并操作
把俩关系合成一个,区分于Cross-product


5️⃣除法操作

虽然除法操作不是像上面5个一样的基本操作,但是实际开发的时候经常用就是了。
解释一下:A关系有属性x,属性y;B关系有属性y;
A/B的Schema为与B关系的y相关的A关系的y对应的x组成的Schema;
几个Schema结果
比如这里的A/B3,得到的Schema只有一个A中的s1,这是因为B3的pno属性中有p1 p2 p4;
现在A/B3就需要在A中的pno寻找p1 p2 p4同时都相关的sno,只有一个s1;


现在以除法为例,解析如何使用5个基本操作来表达除法:
只要一个关系型数据库支持5个基本操作,那就是完备的。其他操作由这5个操作导出;
在这里插入图片描述
Step1.先π x (A),取A关系在x属性上的投影;Step2.A在x上的投影Schema与B关系取笛卡尔积;
Step3.这个结果再和A相减,这样得到的就是那些包含不想要的A中的X的元组了。
Step4.再对这个Schema进行对x投影,这样得到的就是一个单列的Schema,包含的全都是不想要的x
Step5.回到A关系,对x投影,减去不想要的x,得到的就是想要的x了


6️⃣OutJoin外连接

之前我们说到,join连接操作,就是笛卡尔乘积+选择操作;
一般使用的都是等值连接

在这里插入图片描述
外连接=等值连接+左or右处理
像第二行就是S1和R1的左外连接;
由于sid 22和58的相同,这两个元组就是等值连接,但是sid=31这个元组在R1关系中没有,就右边补上null
**注意!**底层还是连接操作;


7️⃣外并操作

回顾一下,可以做∪∩×的两个Schema必须要满足**“并兼容”的条件。所谓“并兼容”就是必须两个关系的模式是一样的,才可以做∪∩×。
在实际操作中,有时候会把两个不满足并兼容条件的Schema强行
合并**在一起:
在这里插入图片描述
在这里插入图片描述
注意!外并操作看的出来,并不是笛卡尔乘积!也不是连接操作!就是强行合并而已。没有的地方直接补上null

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值