python小白|MySQL数据库学习资料(三)
第三章:关系数据库理论
目录
第三章:关系数据库理论
一、关系数据库
【python小白|MySQL数据库学习资料(三)】1.1 关系模型
1.2 关系模型的三个要素
1.3 简单理解‘表’
二、笛卡儿积
三、列属性
四、关系模式与关系
五、候选码和外码
六、关系代数、元组演算、域运算
一、关系数据库 关系数据库(一个由很多表组成的数据库,表的每一列是一个属性,表的第一行是各个属性名,往下每一行代表一个对象所具有的各个属性)
标准的数据库语言(SQL语言)是建立在关系模型基础之上的, 数据库领域的众多理论也都是建立在关系模型基础之上的。
1.1 关系模型
形象地说,一个关系(relation)就是一个Table
关系模型就是处理Table的,它由三个部分组成:
描述DB各种数据的基本结构形式(Table/Relation)
描述Table与Table之间所可能发生的各种操作(关系运算)
描述这些操作所应遵循的约束条件(完整性约束)
1.2 关系模型的三个要素
关系模型的三个要素:基本结构、基本操作、完整性约束
基本结构:Relation/Table
基本操作:Relation Operator
基本的:(并, UNION)、 (差, DIFFERENCE) 、(广义积, PRODUCT)、(选择, SELECTION)、(投影, PROJECTION)
扩展的:(交, INTERSECTION)、(连接, JOIN)、(除, DIVISION)运算
完整性约束:实体完整性、参照完整性和用户自定义的完整性
1.3 简单理解‘表’
从数学角度详细定义了什么是“表”。
每一列都有列名、或者是关系
每一行是一个记录,或者是元组
列的取值范围叫做域(Domain)
域(Domain) 就是一组值的集合,这组值具有相同的数据类型,
如整数的集合、字符串的集合、全体学生的集合
再如, 由8位数字组成的数字串的集合,由0到100组成的整数集合?
集合中元素的个数称为域的基数(Cardinality)
文章图片
二、笛卡儿积 定义“元组”及所有可能组合成的元组:笛卡尔积
笛卡尔积在数据库当中的实际意义:根据各个字段的域,组成所有可能的记录的集合。
从笛卡尔积中,抽出一个合理的组合,构成关系。换句话说,关系是笛卡尔积的一个子集。
文章图片
文章图片
文章图片
三、列属性 列属性的数据类型必须相同。
同上一节中提到的知识:不同的属性可能来自同一个域。
列位置可以互换,换句话说:列之间无序。
行位置可以互换,换句话书:行之间无序。
关系是以内容(名字或值)来区分的,而不是属性在关系的位置来区分
任意两个元组不能完全相同
列属性不可再分,或者说属性中不能包含多个不同属性
四、关系模式与关系 同一关系模式下,可有很多的关系?
关系模式是关系的结构, 关系是关系模式在某一时刻的数据?
关系模式是稳定的;而关系是某一时刻的值,是随时间可能变化的
列是同质:即每一列中的分量来自同一域,是同一类型的数据
文章图片
五、候选码和外码 候选码能唯一标识一个元组。
一个典型的候选码是学生学号,大家在网上冲浪时注册的账号,也是典型的候选码,如果你注册的昵称、账号被别人使用了,就不能重复注册。
候选码的性质:一个关系中、可以存在多个属性满足候选码条件。
同时,候选码也可以由多个属性构成,如学号属性+姓名属性作为一个候选码。
外码用于连接多个关系的纽带。
文章图片
六、关系代数、元组演算、域运算 关系代数:基于集合的运算(集合之间的的操作,得到的结果也是一个集合)
元组演算:基于逻辑的运算(运算符包括与、或、非、存在、包含等)
域运算:基于示例的运算(与元组演算使用的运算符相同,但意义不一样)
文章图片
关系代数
文章图片
并相容性的意思可以简单理解为:两个表的列数相同,各个列的属性相同。
并操作要主以重复的元素只取一个。R+S=S+R
差操作性质 R-S != S-R
★选择操作:从关系/表中选择符合条件的“行”
★投影操作:从关系/表中选择指定的"列"
连接操作:对多个表之间的操作(可以理解为把两个表”横着“拼起来)
连接操作步骤(每一种连接操作都是这个步骤):
1. 对两个表进行广义笛卡尔积
2. 从广义笛卡尔积中选出符合条件的元组
3. 投影操作获得指定列的结果。
等值连接 :取两个关系中指定属性值相等的元组
★自然连接:等值连接的特殊情况,操作前提是两个表中存在相同的属性或属性组
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)
- Python|Python 9.20