数据库系统概论第二章笔记(1)
关系数据库(1)
1.如何得到一个数据库
- 图解
2.关系
- 定义:笛卡尔乘积的子集
- 图解
2.1 笛卡尔积
定义:如果A和B时两个非空集合,定义笛卡尔积A×B为a∈A和b∈B的所有有序对(a,b)所组成的集合
- 例如
A\B | r | s |
---|---|---|
1 | (1,r) | (1,s) |
2 | (2,r) | (2,s) |
3 | (3,r) | (3,s) |
-
域为一组具有相同数据类型的值的集合
- 例如自然数,整数,长度小于25的字符串,{0,1},{男,女}都可以是域
-
关系为其中的子集,比如{(1,r),(2,s),(3,r)}子集
-
笛卡尔集每一个元素如(1,r)叫做元组
-
元组里面的每一个值如(1,r)中的r叫做分量
-
基数为一个域中允许的不同取值的个数
- 例如A集合,3个取值:1,2,3
- A×B集合:6个取值,如上方表格
2.2 候选码
-
定义:关系中的某一 属性组的值能唯一标识一个元组,而其真子集不能,则称该 属性组 为候选码(候选码一定存在,但不唯一)
-
主码:选定的一个候选码
-
主属性:候选码的所有属性
-
非码:不包含在任意候选码的
-
全码:关系模型的所有属性是候选码
2.3 关系的三种类型
- 基本关系(实际存在的表,存于计算机的后端)
- 查询表(虚表)
- 视图表(虚表)
2.4 关系的基本关系类型的性质
-
每一列中的分量是同一数据类型
-
任意两个元组的 候选码不能取相同的值(候选码(型)相同,取值(值)不同)
-
分量必须取原子值,分量不可再分,表中不能在有表
- 非规范关系
2.5 关系模式
- 关系模式是型,关系是值
- 定义:关系模式是对关系的描述
- 标识:R(U,D,DOM,F)
- R:关系名
- U:组成该关系的属性名(列名)集合
- D:属性(表中每一列)所来自的域
- DOM:属性向域的映像集合
- F:属性间数据的依赖关系集合
- 组成
- 数据
- 关系操作
- 完整性约束
2.6 关系数据库
- 关系数据库模式:关系数据库的型:对关系数据库的描述
- 关系数据库的值(状态,实例)
- 关系模式在某一时刻对应的 关系的集合
2.7 关系操作
- 操作的对象和结果都是集合(关系:笛卡尔集的子集)
2.8 关系的完整性
-
实体完整性
- 主属性不能取空值
-
参照完整性
- 超码:一个或多个属性的集合,可以唯一标识一个元组(与候选码的区别,没有真子集不能的限制)
定义:
- 设F是基本关系(实际存在的表)R的一个或一组属性,但不是关系R的码(包括主码(选定的候选码),候选码,超码)
- Ks是基本关系S的主码,如果F与Ks对应,则称F是R的外码,并称基本关系R为参照关系(引用了别人的数据,被别人约束),基本关系S为被参照关系(数据被别人引用,约束别人)
- 图解
-
举例
- 学生表(R)
学号(主码) 姓名(可以重名) 年龄 专业号(外码) 001 a 19 01 002 b 20 01 003 c 19 02 004 d 17 03 - 专业表(S)
专业号(主码)(这里只是一个选定的候选码,在这张表中主码也可以是专业名称) 专业名称 01 计算机专业 02 数学专业 03 外国语专业 -
专业号是外码(不是码(主码,候选码,超码),且与专业表的主码对应)
-
学生表引用了专业表的数据(被专业表约束),参照关系
-
专业表被学术表引用(约束了专业表),被参照关系
-
参照完整性规则
- 在外码上的取值要么为空值
- 要么为S中的某个元组的主码值
-
用户定义的完整性
- 用户定义的数据所需要必须满足的语义要求
- 如某个属性不能为空
- 某个属性唯一
- 某个属性为枚举类型
- 。。。
- 用户定义的数据所需要必须满足的语义要求
3. 关系代数
- 传统的集合运算
- 专门的关系运算
3.1 传统的集合运算
- 交
- 并
- 差
- 笛卡儿积
3.1.1 举例
-
设有关系R与关系S具有相同的目(属性个数相同),属性取值来自同一个域,t是元组,t∈R表示t是R的一个元组
-
并
- 由属于R或属于S的元组组成
R∪S={t|t∈R∨t∈S} -
差
- 属性R不属于S的元组组成
R-S={t|t∈R∧t∉S} -
交
- 既属于R又属于S的元组组成
- 等价于R-(R-S)
R-S={t|t∈R∧t∈S} -
笛卡儿积
- 这里的R和S的目数可以不同(当前的举例目是相同的)
- 笛卡儿积是一个(n(R的目数)+n(S的目数))列的元组的集合
- 前n列为关系R的一个元组
- 后n列为关系S的一个元组
R×S={Tr⌒Ts|Tr∈R∧Ts∈S}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!