数据库学习笔记(第二章)

第二章:关系模型介绍

2.1关系模型基本概念
2.1.1关系模型概述
1.关系模型的组成?
①关系数据结构;
②关系操作集合;
③关系完整性约束。
2.关系数据结构有哪些?
数据库学习笔记(第二章)_第1张图片

2.1.2关系基本概念
2.1.2.1域
在这里插入图片描述

2.1.2.2笛卡尔积
数据库学习笔记(第二章)_第2张图片

2.1.2.3关系
数据库学习笔记(第二章)_第3张图片

tips:1.有意义:现实咋样就咋样(一个人不会属于学院A又属于学院B)。
2.一切皆集合
3.当关系作为关系数据库的数据结构时,需要对其进行限定,使其满足:
无限关系在数据库中是无意义的
②通过为关系的每个列附加一个属性名的方法取消关系属性的有序性,即
(d1,d2,…,di,dj,…,dn) = (d1,d2,…, dj,di,…,dn)

本课程中提到的关系是被限定的“关系”。

2.1.2.4关系的性质
1.列是同质的——每一列中的分量来自同一域,是同一类型的数据。
2.不同的列可以来自同一个域,每列必须有不同的属性名。
3.列的次序可以任意交换:
在这里插入图片描述

4.任意两个元组不能完全相同:
在这里插入图片描述

5.每一分量必须是不可再分的数据。满足这一条件的关系称作满足第一范式(1NF)的
比如底下的这种就不行(费用底下还有好多其他的):
数据库学习笔记(第二章)_第4张图片

2.2关系模式
什么是关系模式?
数据库学习笔记(第二章)_第5张图片
关系也可以记作R(A1 , A2 ,…, An ) ;
属性向域的映象一般直接说明为属性的类型长度等;
某一时刻对应某个关系模式的内容(元组的集合)称作关系;
关系模式是型,是稳定的。

2.2.1三类关系
1.基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示。
2.查询表:查询结果对应的表。
3.视图(又分为底下两类:
视图:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
物化视图:由基本表或其他视图表导出的表,存储数据。

关系型数据库:
在这里插入图片描述

2.3超码、候选码、主码、外部码
1.超码——是一个或多个属性的集合,这些属性的集合可以在一个关系中唯一地标识一个元组。(不唯一)
2.如关系S中关系中属性的集合,其值能唯一标识一个元组,其任意真子集均不是超码,这样的属性集合称作候选码。(不唯一)
候选码是最小的超码。
3.进行数据库设计时,从一个关系的多个候选码中选定一个作为主码。(唯一)
实体完整性规则规定基本关系的主码中的所有属性都不能取空值!
主码可以由多个属性组成!(毕竟 万物皆集合)
大部分主码由多个属性组成(比如 俩属性构成了主码,这俩属性就不能为null了)
4.外部码——关系R中的一个属性组,它不是R的主码,但它与关系S的主码相对应,则称这个属性组为R的外部码(R和S可以是同一关系)。

Q:如何确定超码?
A:数据库学习笔记(第二章)_第6张图片

2.4数据库完整性
数据库学习笔记(第二章)_第7张图片
数据库完整性主要作用:
①防止合法用户使用数据库时向数据库中添加不合语义的数据;
②利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率;
③在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。

2.4.1实体完整性和参照完整性:
①是关系模型必须满足的完整性约束条件;
②称为关系的两个不变性,由关系系统自动支持。

2.4.2用户定义的完整性:
①应用领域需要遵循的约束条件,体现了具体领域中的语义约束;
②用户定义后,由关系系统自动支持。

2.4.3null
空值:不知道或无意义
注意:
数据库中所有的数据类型取值均可为null
空值不是0或者空字符串

在数据库中,=不是赋值,就是比较
10=null → null

2.4.4参照完整性
在关系模型中实体及实体间的联系都是用关系来描的,因此可能存在着关系与关系间的引用。
数据库学习笔记(第二章)_第8张图片

参照关系和被参照关系可以是同一个关系

2.5关系数据语言描述
关系数据语言的特点
1.一体化
一般关系系统的数据语言都同时具有数据定义、数据操纵和数据控制语言,而不是分为几个语言。对象单一,都是关系,因此操作符也单一。
2.非过程化
用户只需提出“做什么”,无须说明“怎么做”,存取路径的选择和操作过程由系统自动完成。
3.面向集合的存取方式
操作对象是一个或多个关系,结果是一个新的关系(一次一关系)。非关系系统是一次一记录的方式。

2.6关系代数
2.6.1关系代数运算汇总
数据库学习笔记(第二章)_第9张图片

2.6.2基本运算——选择
数据库学习笔记(第二章)_第10张图片

For Example:
数据库学习笔记(第二章)_第11张图片

2.6.3基本运算——投影
数据库学习笔记(第二章)_第12张图片

2.6.4基本运算——笛卡尔积运算
数据库学习笔记(第二章)_第13张图片

如果俩表有的属性重名了咋办:
数据库学习笔记(第二章)_第14张图片

正常来说,运算结果的命名是:
关系名.属性名
关系名不能有重复!

2.6.5附加运算——θ连接
数据库学习笔记(第二章)_第15张图片
放俩例子,怕忘了:
数据库学习笔记(第二章)_第16张图片
2.6.6附加运算——自然连接
数据库学习笔记(第二章)_第17张图片
Example:
数据库学习笔记(第二章)_第18张图片数据库学习笔记(第二章)_第19张图片

2.6.7基本运算——并运算
数据库学习笔记(第二章)_第20张图片
Example:
数据库学习笔记(第二章)_第21张图片
2.6.7基本运算——差运算
数据库学习笔记(第二章)_第22张图片
Example:
数据库学习笔记(第二章)_第23张图片
注意表与表之间的内容差异,免得写逻辑表达式的时候掉坑里QAQ
比如,查询未选修c1课程的学生学号,不能从SC表里面查,应该从学生大名单S中找:
在这里插入图片描述

2.6.7基本运算——交运算
数据库学习笔记(第二章)_第24张图片

Example:
数据库学习笔记(第二章)_第25张图片
数据库学习笔记(第二章)_第26张图片

这个分配律什么的,得多练练才会记得住QAQ

2.6.8附加运算——赋值运算
数据库学习笔记(第二章)_第27张图片
例子:
数据库学习笔记(第二章)_第28张图片

2.6.9基本运算——更名运算
数据库学习笔记(第二章)_第29张图片
关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。这样一个关系在同一个表达式中出现多次时是必须的

2.6.10附加运算——除运算(我jio得挺难的)
在这里插入图片描述

在弄清楚什么是除运算之前,得先弄明白什么是象集
数据库学习笔记(第二章)_第30张图片

举个例子:

数据库学习笔记(第二章)_第31张图片

再来一个例子:
数据库学习笔记(第二章)_第32张图片
除运算
给定关系R (X,Y) 和S (Y),其中X,Y为属性集合。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域。R与S的除运算得到一个新的关系P(X),P是R中
满足下列条件的元组在X属性集合上的投影:
数据库学习笔记(第二章)_第33张图片

这个属于就很有韵味(bushi),看不懂就看底下这个例子:
数据库学习笔记(第二章)_第34张图片
思路:因为这个属于,就是S这个集合要属于R中A列各个元素的象集,然后看a1-a4的象集表,发现只有a1才有可能让S属于(因为a2-a4象集内元素都小于等于3),发现a1的象集正好是S,那就符合了除运算的条件,所以就是{a1}了。

当然,这个是根据单元素A的,也可以是多个元素……
数据库学习笔记(第二章)_第35张图片
R÷S=?

分析:发现S是C和D两列,那么就去A列和B列找元组(也许能这么说),发现有{(a,b),(b,c),(e,d)}三组,然后列出这三个元组的象集:
(a,b)的象集:{(c,d),(e,f),(d,e)}
(b,c)的象集:{(e,f)}
(e,d)的象集:{(c,d),(e,f)}

然后和S比较,发现(a,b)和(e,d)都满足要求,那么答案就是:
{(a,b),(e,d)}

接下来是更加抽象的东西:
在这里插入图片描述我觉得就是,一个元组t属于R÷S得到的结果,就得属于R(X,Y)中的X,而且还得包含与t的象集(如果我的理解没错,就是把定义变个样叙述出来)

如何查询选修了全部课程的学生学号呢?
思路:定位→全部课程,那么C就是子表,那么和SC表中出现的就是cno这个属性,那么就从SC中选择出sno和cno这俩属性,然后除以即可。

答案:
在这里插入图片描述

其他的一些除的定义:
数据库学习笔记(第二章)_第36张图片
要记应该记最后一个比较好
数据库学习笔记(第二章)_第37张图片当查询查询至少选修了c1和c2号课程的学生学号时,得选上面那个:
数据库学习笔记(第二章)_第38张图片
方案二为什么不行??
因为SC直接除以后面那些的话,把(sno,score)作为X,而这也就会让结果较少!

2.6.11附加运算——外连接
为避免自然连接时因失配而发生的信息丢失,可以假定在参与连接的一方关系中附加一个取值全为空值的元组,它和参与连接的另一方关系中的任何一个未匹配上的元组都能匹配,称之为外连接。

这个定义我是没看懂……

反正 就:
外连接 = 自然连接 + 失配的元组

三种类型:
数据库学习笔记(第二章)_第39张图片

Example:
数据库学习笔记(第二章)_第40张图片

2.6.12附加运算——广义投影
数据库学习笔记(第二章)_第41张图片

2.6.13附加运算——聚集函数
数据库学习笔记(第二章)_第42张图片

数据库学习笔记(第二章)_第43张图片Example:
数据库学习笔记(第二章)_第44张图片

聚集函数中的null
1、多重集中忽略null
2、聚集函数作用于空集合:
count(Φ)=0;
其它聚集函数作用于空集合,结果为null

有习题的,我整理清楚后单独拎一个专题吧QAQ

END

你可能感兴趣的:(好好学数据库,学习,数据库)