关系数据模型
先贴一张图,挺多不理解的,这里只解释一些我能理解的概念
关系(表)
- 关系: 其实可以理解为二维表,就是我们平时常见的 行列表,这个就是关系
- 关系名:就是你这个二维表的名字,每个表都有唯一的名字
- 关系模式:表头,就是表格的 列名的集合,比如学生表有 (学号,姓名,年龄,班级),学生表中的 列名的集合就是它的关系模式了
- n元关系:关系有 n个属性
属性(列、字段)
- 属性:其实就是二维表中的 列,也可以叫做 字段
- 属性名:就是每个列的 列名
- 属性值:就是 列值
- 主属性:主键 中包含的属性(字段),主属性是用于唯一标识记录的字段( 主键概念移步后面 )
元组(行、记录)
-
元组:其实就是二维表中的 行,也可以叫做 记录
注意,关系是元组的集合,翻译过来就是,二维表是行的集合,也就是由一条条记录组合而成
-
分量:元组中的一个属性值就叫做 分量
实例
相当于快照,某一时刻数据库中存储数据的集合
模式
数据库的结构定义,比如这个表有什么属性,属性的类型等等
键(码)
-
主键(主码):唯一标识表中每一行数据的字段或字段组合,主键的值必须唯一且不能为 NULL。简单来说,主键就是一列或多列的组合,并且能够通过它找到唯一行,相当于人们的身份证一样,一个表只能有一个主键,但这个主键可能是一列或多列
-
候选键(候选码):可以唯一标识表中每一行数据的字段或字段组合,一个表可以有多个候选键,其中一个被选为主键
-
外键(外码): 表中一个字段或字段组合,用于建立和另一个表的联系。外键的值必须与其他表中的主键值匹配,或为空
-
超键(超码): 其实就是主键加上一些额外字段或者不加,不一定是 最简 的标识符
完整性约束
-
实体完整性:确保表中的每一行都能够通过一个唯一标识被确认,即,主键 不能为NULL,并且必须唯一
-
参照完整性:确保表与表之间的联系是有效的,即 外键 的值必须在被引用的表中存在或者为NULL
-
用户定义完整性:用户 自定义 的约束
值域
一个属性可以取的所有可能值的集合
原子性
每个属性值必须是不可分割的最小的单位,简单来说属性必须短小精悍,包含一种信息最佳,多了不行
关系数据库
一种数据库模型,其中数据以表格形式组织,每个表格由行和列组成,并通过关系(通常是外键)来连接多个表格
符号表示(字母应该没错,大小写不确定)
元组
元组用 t 表示,即 tuple
属性
A1,A2, …, An 表示n个属性
值域
D1, D2, …. Dn 表示对应属性的取值范围
关系
用 R 表示,关系就是 D1 x D2 x … x Dn 的一个子集
关系模式
R = (A1, A2, …, An) 表示一个关系模式
键
用 K 表示超键
其他键用英文名,主键---primary key, 候选键---candiate key, 外键---foreign key
关系代数
简单介绍下符号和名称
- 选择 --- σ
- 投影 --- ∏
- 并 --- ∪
- 交 --- ∩
- 差 --- -
- 笛卡尔积 --- ×
- 重命名 --- ρ
- 连接 --- ▷◁,类似这样吧,打不出来
- 除 --- ÷
- 聚合 --- g
特别要注意的是,关系代数其实就是一些操作的符号化,这些操作最后返回的都是表格
选择
首先这个 p是挑选条件,然后 r 就是被操作的表格
这样组合起来就是,从 表格 r 中挑选出符合条件 p 的行
所以这是一个 行操作,也就是筛选出我们想要的行
这里有一个例子,大家结合上面对符号的翻译在看看
投影
A1,A2.. 这些是最后投影的属性,即最后筛选出来的表格应该具有的属性,之所以叫投影,是因为它还要去除重复行(只保留一份)
r 是被操作的表格
这样组合起来就是,从表格 r 中,仅留下A1,A2..这些属性作为列,并且去除重复行
这里有个例子,大家结合上面的符号翻译再看看
笛卡尔积
这个写得挺好,挺容易理解的,我就直接粘贴了,笛卡尔积就和简单的排列组合很相似,大家可以结合数学的排列组合进行理解
这里给个例子
集合运算,并交差
这个就和数学上的差不多,这里就不多提了,记下下面的这个公式
要注意的是,在关系代数中,这些集合操作要求参与操作的关系具有完全相同的列名和数据类型
自然连接
r和s分别是不同的关系,也就是不同的表,连接的意思就是将不同的表 合并 在一起
自然连接也是符合 交换律和结合律 的
我们看下面这个例子
上图是具体的表格,下图是符号的定义,我们来根据上面的图表解释下下面的定义
首先我们有 R和S 两张不同的表,可以看到他们的列有重合,即 B和D 是重合的,那我们的连接就是让 R和S合并,即共享一份列B和列D
具体的步骤是,先做笛卡尔积 rXs 得到一张巨大的表,然后对其进行选择操作,就是列B和列D的值相等,最后投影出获得的表格,这就是自然连接了
重命名
这里 E 是一个表达式,可以是列之间的计算或者表格或者列等等,总之它是 原名, 然后 x 是新的名字
Theta连接
别看符号挺复杂的,其实代表的含义就是,先做笛卡尔积,然后做选择操作
赋值操作 <-
其实就和编程中的变量赋值一个意思
x <- y 这个意思就是把y的值赋给x,只不过在关系代数中,这个值可能是一个表格
外连接
首先这里是个例子,我们根据例子,来区分自然连接和外连接
两个表格 instructor和teaches
自然连接
左外连接
大家对比下这两张结果图,可以发现外连接的结果多了一行
让我们解释这种差别,自然连接是根据共享属性进行连接,这里是ID属性,它返回的结果中,ID的属性值是两张表中共有的,也就是说,自然连接 只保留公共属性值相同的记录,所以我们能看到,ID为15151和76766的记录被舍去了,因为他们不是两张表共有的属性值( 注意区分共有的属性,共有的属性值 )
理解了这个后,让我们看到左外连接的结果图,它其实和自然连接很像,不同的点是,它要求保留左边表格的所有行,所以我们能看到 ID为15151(instructor表格独有) 的记录,同样的,这一条记录的 course_id为null, 也就是说,teaches表中没有匹配值
再来看看右外连接
它要求的是保留右边变革的所有行,所以 ID为76766(teaches表格独有) 的记录被保留了
最后来看看全外连接
那这就要求两张表的所有记录都要保留了
大家在好好理解外连接和自然连接的区别,还有外连接中左右全这三个的区别
外连接扩展(符号定义)
以下是左外连接的定义
这个解释挺好的
我们要解析这个定义,首先要明白,左外连接与自然连接的关系
首先自然连接是左外连接的一部分
然后,我们在获取到左边表格没有被自然连接的记录(用差和投影)
然后再将这些记录连接一些null值(这些null值就表示右边的表格没有匹配值),最后做一个并集就是左外连接的结果了
其他两个也差不多
除
这个挺复杂的,对于 r ÷ s,可以把它翻译成 找出关系 r 中哪些元组(属性值集合)与关系 s 的每个元组(属性值集合)都匹配,匹配的意思是结合的元组在关系 r 中存在
也就是说 s 中的每条记录都必须在 r 中存在(s 的列数不大于 r的列数)
直接看例子吧,
根据我们的翻译,这个例子的 r ÷ s 翻译成,找出关系 r 中哪些属性A的属性值能和关系 s 的属性B的所有值匹配,即结合成的元组在关系 r 中存在
再来看个例子
根据我们的翻译,这个例子的 r ÷ s 翻译成,找出关系 r 中哪些属性ABC的属性值集合能和关系 s 的所有元组匹配,即结合成的元组在关系 r 中存在
广义投影
投影的列可以是属性键的计算值(比如可以投影 A+B 这种数学运算的结果),同时会保留重复的记录
聚合
- 聚合函数:就是取一组值然后返回一个数,主要有5个
看个例子,左边是原表,右边是结果,g 的左边是属性名,右边是聚合函数(聚合函数会对每个分组执行),然后就是操作的原表了
可以加个as对聚合函数的值进行重命名
数据库的修改操作
这里就是说,可以通过赋值操作和集合运算操作实现对数据库的删除、插入、更新
关于NULL值
这里是说进行一些 未知 的操作会产生NULL值
标签:关系,表格,主键,---,------,数据库系统,连接,数据模型,属性 From: https://www.cnblogs.com/winter-z/p/18407190