关系数据库
关系数据库是支持关系模型的数据库系统。
关系模型的数据结构:关系;逻辑结构:扁平的二维表
域
是一组具有相同数据类型的值的集合。
例如:{a,b,c}、{0,1,2,3}等等
笛卡尔积
定义
笛卡尔积是域上的一种集合运算。
计算公式
给定一组域为:D1,D2,D3,…,Dn 【允许有重复的域】
笛卡尔积的计算公式为:
名词解释:
- (d1,d2,d3,…,dn)叫做一个n元组(简称元组)
- di叫做分量。
基数
一个域允许的不同取值个数称为这个域的基数。
对于一个有限集Di,基数为mi,那么笛卡尔积D1×D2×D3×…×Dn的基数M就是:
M =
例1
关系
定义
D1×D2×…×Dn的有限子集叫做在域D1、D2、…,Dn上的关系,表示为R(D1,D2,D3,…,Dn)
R表示关系的名字,n是关系的目或者度
关系是一张二维表,表中每行对应一个元组,表中每列对应一个域。
由于域可以相同,所以每列要有一个名字,这个名字称为属性。
n目关系必有n个属性
名词解释:
- 关系中的每个元素是关系中的元组,通常用t表示
- n = 1时,关系为单元关系
- n = 2时,关系为二元关系
- 候选码:关系中某一属性组的值能够唯一的标识一个元组,而其子集不能,则该属性组称为候选码。
- 主码:一个关系有多个候选码,要选中其中一个为主码
- 主属性:候选码的诸属性称为主属性
- 非主属性:不包含在任何候选码中的属性称为非主属性(或者非码属性)
- 全码:关系模式的所有属性是这个关系模式的候选码,这个候选码称为全码
关系的三种类型
- 基本关系(基本表/基表)
是实际存在的表,是实际存储数据的逻辑展示
- 查询表
是查询结果对应的表
- 视图表
是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
基本关系的性质
- 列是同质的(每一列中的分量是同一类型的数据,来自同一个域)
- 不同的列可以出自同一个域,称其中每一列为一个属性。不同的属性要给予不同的属性名
- 例如例1,我们也可以分为两个域,
person{张清玫、刘逸、李勇、刘晨、王敏}
和specialty{计算机专业、信息专业}
。person这个域又分为两种属性,研究生和导师
。
- 列的顺序是无所谓的,即列的顺序可以随意交换
- 行的顺序是无所谓的,即行的顺序可以随意交换
- 任意两个元组的候选码不能去同样的值
- ⭐分量必须取原子值,即每一个分量都是一个不可分的数据项
这种规范化的关系,简称为范式。
关系模式
关系的描述称为关系模式。
- R:关系名
- U:组成该关系的属性名集合
- D:U中所有属性来自的域
- DOM:属性像域的映像集合
- F:属性间数据的依赖关系集合
通常也可以简写为
关系操作
基本关系操作
包括:查询和插入修改删除这两类。
查询操作
- SELECT 选择
- PROJECT 投影
- JOIN 连接
- DIVIDE 除
- UNION 并
- EXCEPT 差
- INTERSECTION 交
- 笛卡尔积
关系语言
SQL语言是高度的非过程化的语言。也就是说,如果要查询某个指标,关系数据库会为其选择最优的查询路径,用以提高查询效率
完整性
实体完整性
规则:
若属性(一个或一组)A是基本关系R的主属性,则A不能取空值。
参照完整性
外码概念
设F是基本关系R的一个或者一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码。并称基本关系R为参照关系,S为被参照关系(目标关系)。
规则
若属性F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每一个元组在F上的值为:
- 空值(F中每个属性值均为空值)
- S中某个元组的主码值
用户定义完整性
某一具体应用所涉及的数据必须满足语义要求
关系代数
集合运算符
下面以 集合R和集合S为例
并 ∪
差 -
交 ∩
笛卡尔积
图示传统集合运算