数据库系统概论 - 关系数据库
关系数据库是创立在关系模式上的数据库,关系型数据库中有许多张表,每张表表示现实世界的各种实体。各种实体之间的联系均用关系模型来表示
【数据库系统概论 - 关系数据库】关系模式由关系数据结构、关系操作集合和关系完整性约束三部分组成,所有关系的集合构成关系数据库
关系模式是型,是关系的描述,是静态的,稳定的
关系(一张具体的二维表)是值,是元组的集合,是动态的,随时间不断变化的
关系数据结构
关系
笛卡儿积
给定一组域,允许其中某些域是相同的,这些域相乘即为域的笛卡儿积,如:D1(A,B), D2(C,D)
,则 D1 * D2 = {(A,C),(A,D),(B,C),(B,D)}
。一个域允许的不同取值个数称为这个域的基数
关系
D1 * D2 * D3 * ... * Dn
的子集叫做在域 D1, D2, D3, ... , Dn
上的关系,表示为 R(D1, D2, D3, ... , Dn)
,R 表示关系的名字,n 称为关系的目或度
关系的三种类型:基本关系(实际存储数据的逻辑表示)、查询表(查询结果对应的表)和视图表(由基本表和其它视图表导出的表,不存储实际数据)
码和其分类
若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何子集都不能标识,则称该属性组为候选码。如学生实体中,可以使用 学号
区分实体,也可以使用 姓名 + 班级
来区分学生,则学生实体的候选码为:学号
和 姓名+班级
若一个关系有多个候选码,可以选择其中一个作为主码,如学生实体中可以选择 学号
或 姓名+班级
作为主码
候选码中诸属性称为主属性,不包含在任何候选码中的属性称为非主属性或非码属性,如果某个关系模式的所有属性都是这个关系模式的候选码,则成为全码
关系操作
基本操作
关系模式最常用的关系操作包括查询和插入、删除、修改
查询操作分为:选择、投影、连接、除、并、差、交、笛卡儿积
5 种基本查询操作:选择、投影、并、差、笛卡儿积,其他操作根据基本操作定义和导出
关系数据语言的分类
关系代数用对关系的运算来表达查询要求,关系演算则用谓语表达查询要求,结构化查询语言(SQL)介于关系代数和关系演算之间
SQL 不仅仅有数据查询功能,还有数据定义和数据控制功能
关系的完整性
实体完整性约束和参照完整性由关系系统自动支持,称为关系的俩个不变性
用户定义的完整性是由应用领域需要遵循的约束条件
实体完整性约束
实体的所有主属性都不能为空,如果出现了就不能唯一确定一个实体
参照完整性约束
一个关系模式的属性(r1)中可能包含另一个关系模式的主码(r2),则这个属性在 r1 上称为参照 r2 的外码,r1 和 r2 的取值需要一致,可以取空则代表其他含义
参照完整性约束是关系与关系之间的约束,即表与表之间的约束
用户定义的完整性约束
某一具体应用所涉及数据必须满足的语义,如不能为空,不能为负等
关系代数
关系代数是一种抽象的语言,是用对关系的运算表达查询,按照运算符的不同可以分为传统的集合运算和专门的关系运算
传统的集合运算
- 交:由即属于 R 又属于 S 的元组组成
- 并:由属于 R 或属于 S 的元组组成,如果两张表当中都出现了同一个元组,新建的表当中只会出现一次
- 差:R-S 表示属于 R 而不属于 S 的所有元组组成
- 笛卡儿积:集合相乘,n 目和 m 目的关系 R 和 S 的笛卡儿积是一个(n+m)列的元组集合
- 选择:选择关系 R 中满足给定条件的元组
- 投影;从关系 R 中选择若干属性列组成新的关系
- 连接:从两个关系的笛卡儿积中选取属性间满足一定条件的元组,等值连接是选取属性值相同的元组,自然连接是一种特殊的等值连接,要求关系 R 中的属性 A 和关系 S 中的属性 B 名字相同,在结果中把重复的属性列去掉,非等值连接是操作符号不是 = 的连接,如:!= > < 等
- 除运算:关系 R 除以关系 S 的结果为关系 T,则 T 包含所有在 R 但不在 S 中的属性及其值,且 T 的元组与 S 的元组的所有组合都在 R 中
如果把悬浮元组也保存在结果关系中,而在其他属性上填 NULL,则成为外连接(此时左边和右边关系的悬浮数组都保存在结果关系中),只保留左边关系 R 中的悬浮元组叫做左外连接,只保留右边关系 S 中的悬浮元组叫做右外连接
推荐阅读
- 数据仓库|数据仓库也SaaS,Snowflake市值缘何超700亿美元()
- python|snowflake 数据库_Snowflake数据分析教程
- 数据库|【分布式系列01期】常见的分布式ID生成方案浅析及大厂方案调研
- 分布式|全网最全的分布式ID生成方案解析
- 微服务|微服务架构下的数据库拆分
- 数据库基础理论 - 绪论
- MySQL笔记|MySQL 索引笔记
- Redis笔记|哨兵模式笔记
- MySQL笔记|MySQL笔记