关系数据库
来源:互联网 发布:聚合数据接口开发教程 编辑:程序博客网 时间:2024/05/17 00:13
- 1 关系数据结构及形式化定义
- 2 关系操作
- 3 关系的完整性
- 4 关系代数
- 41 传统的集合运算
- 42 专门的关系运算
- 5 关系演算
2.1 关系数据结构及形式化定义
关系的定义
- 域: 一组具有相同数据类型的值得集合,如整数,字符串等
- 笛卡尔积: 给定一组域D1, D2, …, Dn (可相同), D1, D2, …, Dn上的笛卡尔积为: D1× D2 × … × Dn={ (d1, d2, …, dn) | di Di, i = 1, 2 , …, n}
- (d1, d2, …, dn)称为一个元组(Tuple)
- di叫作元组(d1, d2, …, dn)的第i 个分量(component)
- 关系(Relation): D1× D2 × … × Dn的一个子集叫做域D1, D2, …, Dn上的关系
- 定义在n个域上的关系称为n元(n目)关系。
Dname={王小明,李莉},Dsex={男,女},则Dname ×Dsex={(王小明,男),(王小明,女),(李莉,男),(李莉,女)}
但是其中只有部分元组是有用的,我们只选取其中有意义的元组
我们有几个概念需要了解
- 候选码(Candidate Key),简称码:能唯一标识元组的属性(组)。
- 主码(Primary Key):多个候选码中选定一个作主码。
- 主属性(Prime Attribute):候选码中的各个属性。
- 非主属性(Non-Key Attribute):不出现在任何候选码中的属性
2.2 关系操作
关系模型中常用的关系操作包括查询和插入,删除,修改等两大部分
2.3 关系的完整性
实体完整性规则: 若属性A是基本关系R的主属性,则A不能取空值
关系模型中以主码作为唯一性标识
现实世界中的实体是可区分的,即它们具有某种唯一性标识
实体完整性
这里下面sno和cno都不能完整地表示一个实体,但是他们两个合起来就可以标识一个实体
用户定义的完整性: 是针对某一具体关系数据库的约束条件
2.4 关系代数
关系代数的运算主要分为传统的集合运算和专门的关系运算
2.4.1 传统的集合运算
传统的集合运算分为并,差,交,笛卡尔积
并:R ∪ S = { t | t∈R ∨ t∈S }
差:R – S = { t | t∈R ∧ t∈S }
交:R ∩ S = { t | t∈R ∧ t∈S }
R×S = {trts | tr∈R ∧ ts∈S }
2.4.2 专门的关系运算
选择
选择运算使用’σ’符号和条件进行选择,选择的结果是从原始表中取出一行
投影
投影运算使用’π’符号和条件进行选择,选择的结果是从原始表中取出一列
连接
连接分为比较连接,等值连接和自然连接
我们常使用自然连接
自然连接是把两个表中同样列名的列中完全相同的行取出来,然后合成一个新表,这个新表还要注意去重
除法运算
这个解释起来比较复杂,我们用一个例题来解释
因为R中a1的象集为{(b1,c2),(b1,c3),(b2,c1)}
,而显然只有a1的象集包含了S在(B,C)属性组上的投影,所以R÷S的结果就是a1了
注意除运算最后剩下的结果中不包含重复的属性组,所以结果中只有A
关于类似的题目可以参考书上和PPT上的内容
2.5 关系演算
关系演算以谓词演算(一阶谓词逻辑)为基础,用谓词来描述关系的构成。按照谓词变元的不同分为元组关系演算和域关系演算,分别简称为元组演算和域演算。
元组演算
{t | Φ(t)}
称为元组演算表达式。其中:t 称为元组变量,Φ(t) 称为元组演算公式,简称公式。
原子公式
1) R(t)
R是关系名,t是元组变量。表示:t是R中的元组(某一行)。
2) t[i] θ u[j]
t,u为元组变量,θ为比较运算符。表示:元组t的第i个分量与元组u的第j个分量满足比较关系θ。
3) t[i]θc 或 cθt[i]
其中c为常量。
我们来举几个例子,首先有R和S
例一
对其进行解释就是说对于S来说,选择那些每一行的第一个元素大于2的行
例二
选择R中与S不一样的行,即做差运算
例三
R中的每一行的第二个分量u[2],存在一个u[2]大于S中第三个分量t[3]
例四
选择满足R中那些行中第三个分量t[3]大于S中任何行的第一个分量u[1]的行
元组演算的等价规则
再来看一个更复杂的例子
1) 查询选修了c2课程的学生学号和成绩。
2) 查询选修了c2课程的学生学号和姓名
3) 查询选修了数据库课程的学生学号、姓名和成绩。
4) 查询选修了c2或c4课程的学生学号。
5) 查询选修了c2和c4课程的学生学号。
6) 查询不学c2课的学生学号
7) 查询选修了全部课程的学生学号
8) 查询选修学号为“802”的学生所选全部课程的学生学号。
关系代数表达式与元组演算表达式的等价转换
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库
- 关系数据库 非关系数据库
- Java 基础夯实2:全面了解异常
- 信用评分及模型原理解析(以P2P网贷为例)
- try 与catch的作用
- CentOS7搭建简易nfs
- I/O复用的系统调用——select
- 关系数据库
- GitHup 突破文件100M限制
- DNS查询过程
- YII——入门第一篇
- for循环遍历多级json数据出现的一些问题
- Linux系统停的设置TCP心跳机制Keepalive为什么总是无效果
- socket、tcp、udp、http 区别
- SQL入门
- angularJs用户列表的增删改查