关系数据库介绍
关系数据结构及形式化定义
数据模型由模型结构,数据操作,数据约束组成。
关系
域:是一组具有相同数据类型的值的集合
笛卡尔积:
结果是一个元组的集合,每一个元素(d1,d2,d3....)叫做一个n元组或简称元组,元素的每个值叫做一个分量
基数:是笛卡尔积的个数
笛卡尔积可以表示为一个二维表,行表示元组,列表示域
例子:
用二维表表示为:
关系:简述为笛卡尔积的子集,所以关系也是二维表
超码:若关系中的某一个或多个属性集合能够唯一标识一个元组,则称该属性或属性集为超码.
候选码:超码中任意真子集都不能唯一表示一个元组,则子集为候选码,是超码的一个子集。
姓名 | 学号 | 班级 |
---|---|---|
表中的学号就是一候选码 |
多个候选码时,选定一个为主码;
候选码的属性称为主属性,不包含候选码的为非主属性(非码属性)
基本关系的具体性质
- 列是同质的
- 不同的列可出自同一域
- 且列的顺序可任意交换
- 任意两个元组的候选码不能相同
- 行顺序可变
- 分量必须是原子值
关系模式
R(U)
- 关系模式是对关系的描述
关系也可以说是二维表中行的集合,所以说当你用关系模式来描述时,要从五个方面(五元组)来描述:
- 关系名(R)
- 属性名集合(U)
- 属性向域的映像集合(DOM)
- U中的属性来自的域(D)
- 属性间数据的依赖关系集合(F)
关系模式与关系:
- 关系模式是型,关系是值
- 关系是关系模式的状态和内容
- 关系模式是静态稳定的,关系是动态,变化的
关系操作
关系的基本操作
- 查询
- 选择,投影,连接,除,并,交,差,笛卡尔积
- 数据更新
- 插入,删除,修改
关系操作特点:
操作对象跟结果都是集合,一次一集合
关系数据语言
- 关系代数语言
- 用对关系的运算来表达查询要求
- 关系验算语言
- 元组关系演算语言
- 域关系演算语言
- SQL语言
关系的完整性
数据库的完整性是指数据的正确性和有效性,是指数据是符合现实世界语义,反映当前实际状况的。
通过对关系(二维表)中取值的约束,可以保证数据库的完整性,保证数据的正确性。
实体完整性
实体完整性规则:基本关系R的主属性不能取空值。
如图,该图中选定学号为主属性,则学号不能为空,否则违反了实体完整性规则。
实体完整性针对基本关系而言,相应的,关系模型中作为主码的唯一标识,主码中的属性即主属性不能取空值。
参照完整性
外码
即F(非主码)的取值被Ks(主码)约束,是参照Ks来进行取值,则F是R的外码。
即选课表中的课程序号取决于课程表,学生号取决于学生表中的学号。
参照完整性是对外码的约束,取空值或者参照关系中主码的值
用户定义完整性
由数据库设计人员根据应用中数据的语义来创建
关系完整性的实现
实体完整性通过设置表中的主码实现,参照完整性通过设置外码。
关系代数
是数据运算的数学基础。
关系代数运算的三要素
运算对象,运算结果,运算符
运算符
集合运算符
-
并∪,有所有属于R或属于S的元组,列不会改变
-
差-,有所属于R,但不属于Sde元组,结果仍然是一个二维表,输入前者,列不会改变
-
交∩,同时属于两者,R∩S=R-(R-S),列不会改变
-
笛卡尔积,对任意关系做运算,称为广义笛卡尔积,列变成两者列的和,行变为两者行之积
专门关系运算符
分量:关系R,t∈R,t[Ai]表示元组t中相应的属性Ai的一个分量。
分量的集合:
分量集合的补:
专门关系运算符:
笛卡尔积(×)、连接(∞)、投影(π)、选择(σ)
-
选择,又称限制,在关系中选择满足给定条件的诸元组。实际上是广义笛卡尔积。
-
投影,从关系中选出属性列组成新的关系,用Π表示。先选择,后投影。
-
像集:
-
连接,从两个关系的笛卡尔积中选取属性间满足一定条件的元组。实际上是笛卡尔积的子集
- 等值连接:选取的属性值相等的
- 等值连接:选取的属性值相等的
)
- 自然连接:具有相同的属性组。
- 外连接 把悬浮元组保留在自然连接中的结果中。其属性值为空
- 把两个关系在做自然连接时舍弃的元组称为悬浮元组
- 左外连只保留左边关系中的悬浮元组
- 右外连只保留右边关系中的悬浮元组
- 除,设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
比较运算符
- ">"
- "<"
- "="
并,差,笛卡尔积,选择,投影,经过有限次复合后的表达式称为关系代数表达式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具