第3章关系数据模型
关系的数学定义
域
值域
一组具有相同数据类型的值的集合
在关系中用域表示属性的取值范围
例子
长度小于20的字符串的集合
{0,1}
整数
实数
基数
域中所包含的值的个数
用m表示
例子
D1={张三,李四,王五}
D1是域名
“张三,李四,王五”是域值
域的基数m=3
D2={男,女}
D2是域名
“男,女”是域值
域的基数m=2
笛卡儿积
定义
给定一组任意域的集合D1,D2…,Dn,这些集合的笛卡儿积为D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}
例子
有两个域D1={0,1},D2={a,b,c}
D1×D2={(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}
说明
笛卡儿积实际上是一个二维表
表的框架由域构成
表的任意一行就是一个元组
每一列数据来自同一个域
di称为分量
基数m=∏mi(所有域的基数的乘积)
关系
定义
笛卡儿积的子集称为关系
R(D1,D2,…,Dn)
n是关系的目或度
关系中的元素称为元组
关系中的元素个数是关系的基数
表的每列对应一个域,称为属性
例子
MAN男人集合D1=(李男,张男,王男)
WOMAN女人集合D2=(丁女,肖女)
CHILD孩子集合D3=(李一,李二,王一)
笛卡儿积
D=D1×D2×D3={(李男, 丁女, 李一),(李男, 丁女, 李二),(李男, 丁女, 王一),(李男, 肖女, 李一),(李男, 肖女, 李二),(李男, 肖女, 王一),(张男, 丁女, 李一),(张男, 丁女, 李二),(张男, 丁女, 王一),(张男, 肖女, 李一),(张男, 肖女, 李二),(张男, 肖女, 王一),(王男, 丁女, 李一),(王男, 丁女, 李二),(王男, 丁女, 王一),(王男, 肖女, 李一),(王男, 肖女, 李二),(王男, 肖女, 王一)} 18个元组的二维表
从中取子集构造家庭关系
家庭(丈夫,妻子,子女)
家庭关系FAMILY(MAN,WOMAN,CHILD)
关系的性质☆
列是同质的:同一属性名下的诸属性值是同类型数据,且必须来自同一个域
属性必须有不同的属性名,不同的属性可来自同一个域
属性的顺序是非排序的:列的次序无所谓,可以随意交换
元组是唯一的:任意两个元组不能完全相同
元组的顺序无关紧要:元组的次序可以任意交换
所有的属性值都是原子的:每一个分量必须是不可分的数据项
关系的键
关系键☆
一个或一组属性(组合属性)
在不同的元组中,相应的(组合)属性值不同
利用该(组合)属性的值来唯一标识关系中的元组
码、关键字
关系键的性质
唯一性
最小性
候选键
具有关系键特性的属性(组)
一个或多个
候选关键字
候选码
主关系键
主键、主关键字、主码
多个候选键中的一个
唯一标识实体的个体
一个关系有且只有一个主关系键
用作插入、删除、检索元组操作的变量
外部关系键☆
是本关系的一个(组)属性
但不是本关系的关系键
是另一关系的关系键
称为本关系的外部关系键
外关键字、外部键、外部码
例子:雇员数据库
部门关系DEPT(DEPT#,DNAME,MGR-EMP#)
职工关系EMP(EMP#,ENAME,DEPT#,SALARY)
DEPT#是DEPT的什么键?
DEPT#是EMP的关系键吗?
DEPT#是EMP的什么键?
关系模型的完整性
实体完整性
主关系键的值不能为空或部分为空
理由?
参照完整性
如果关系R2的外部关系键X与关系R1的(主)关系键相符,那么X的每个值必须在R1中有值,或者取空值
例子☆
用户定义完整性
针对某一具体的实际数据库的约束条件
反映某一具体应用所涉及的数据必须满足的语义要求
例如
属性的取值范围
数据的输入格式
某属性非空值
DBMS提供定义和检验的机制☆
关系数据库
关系模式
对关系(结构)的描述
描述什么?元组集合的结构
由哪些属性构成:属性的类型
这些属性来自哪些域
属性向域的映象关系:属性的长度
完整性约束条件
属性间的相互关联
属性取值范围的限制
R(U,D,DOM,F)
R:关系名
U:属性名集
D:域集
DOM:属性向域的映象集合
F:属性间数据的依赖关系集合
简记:R(U) 或 R(A1,A2,…An)
关系模式与关系的比较
关系模式是型,关系是模式的值
关系模式是静态的、稳定的,关系是动态的、随时间不断变化的
关系模式和关系统称为关系
关系 = 关系的型 + 关系的值
关系数据库模式☆
是一组关系模式的集合
是对关系数据库结构的描述
关系数据库模式的值为关系数据库的内容(实例)
关系数据库☆
所有实体以及实体之间的联系的关系的集合构成一个关系数据库
由一组关系头的集合以及关系体的集合组成
关系头的集合:关系数据库模式
关系体的集合:关系数据库的内容
关系数据库 = 关系数据库模式(型) + 关系数据库内容(值)
关系数据库的操作
更新操作
增加
删除
修改
查询操作(+语言→关系运算表达式→关系运算)
关系代数语言
关系演算语言
关系代数
概述
以一个或多个关系作为运算对象,结果为另外一个关系
包括
传统的集合运算:并∪、差-、交∩、笛卡儿积×
专门的关系运算:选取?、投影∏、连接(x?y)、自然连接(*)、除法÷
算术比较运算:大于>、大于等于≥、小于<、小于等于≤、等于=、不等于≠
逻辑运算:与∧、或∨、非→
典型例子:IBM的查询语言ISBL
传统的集合运算
关系并运算(R∪S)☆
两个(同类)关系的所有元组合并,删去重复的元组
关系差运算(R-S)☆
由属于R而不属于S的所有元组组成的集合
在R中删去与S相同的元组
关系交运算(R∩S)☆
既属于R又属于S的元组的集合
取相同的元组
广义笛卡儿积(R×S)☆
参加运算的两个关系不要求同类
结果为n+m列的元组的集合
前n列为R的元组,后m列为S的元组
集合运算实现的数据库操作
数据记录的添加和插入:关系并运算
数据记录的删除:关系差运算
数据记录的修改操作:先删除后插入→关系差运算+关系并运算
关系的连接:关系的笛卡儿积
专门的关系运算
选取
单目运算,对一个关系进行运算
按给定的条件选取其中的若干个元组,组成新的关系
(p(R) = {r | r(R∧P(r)为真}
例子☆
从关系的水平方向(行)进行运算,取子集
投影
也是单目运算
对给定关系在垂直方向上进行选取
选取关系中指定列,并删去重复行,组成一个新的关系
(X(R) = {r[X] | r(R}
从关系的垂直方向上(列的角度)取子集
例子☆
注意
投影之后属性减少了,元组也可能减少了,新关系和原关系不是同类关系
投影运算提供了在关系中置换(重新安排)属性次序的方法
选取运算和投影运算提供了从关系的垂直方向和水平方向分割关系的有力工具
连接
二目运算
从两个关系的笛卡儿积中选取满足连接条件的那些元组
RS={rs | r(R ∧ s(S ∧ X(Y为真}
从笛卡儿积中选取在X属性列上的分量与Y属性列上的分量满足给定(比较条件的那些元组构成的新关系
在R×S上选取在连接属性X,Y上满足(条件的子集
(为算术运算比较符
当(为“=”时,称为等值连接
当(为“<”时,称为小于连接
当(为“>”时,称为大于连接
连接结果是一个n+m元关系
例子☆
自然连接
在等值连接的情况下
连接属性X和Y具有相同的属性名
相同的属性名不必重复
把广义笛卡儿积R×S中选出在同名属性上符合(相等条件的元组连串集再投影一次(去掉重复的同名属性)而构成新关系
记作R*S (RS)
例子☆
自然连接是组装关系的有效办法
自然连接和等值连接的比较
等值连接不要求相等属性值的属性名相同,而自然连接则要求相等属性值的属性名必须相同,即两关系只有在同名属性上才能进行自然连接
等值连接不将重复属性去掉,而自然连接要将重复属性去掉。自然连接是去掉重复列的等值连接。
除法
二目运算
用除数关系在被除数关系中取商关系
例子☆
关系代数小结
五种基本运算,不能用其他运算来表达:并、差、选取、投影和笛卡儿积 (并差选,投影机)
派生运算,可以用基本运算来表示:交、连接和除法运算
交:R∩S=R-(R-S)
连接:RS=(X(Y(R×S)
除法:R÷S=(X(R)-(X((X(R)×S-R)
可见,引进交、连接、除法运算并没有增加语言的表达能力,但可以大大简化表达式
关系运算举例☆
求选修C2课程的学生学号
?S#(?C#=’C2’(SC))
求至少选修C1和C2课程的学生姓名
?SN(?S#,C#(SC)(K(S)
?SN(?S#,C#(SC)((?C#=’C1’(C)∪?C#=’C2’(C))(S)
求至少选修这样一门课程的学生姓名,这门课程的直接先行课为C2
?SN(?PC#=’C2’(C)(?S#,C#(SC)(?S#,SN(S))
?SN(S(?S#(SC(?C#(?PC#=’C2’(C))))
?SN(?S#(?PC#=’C2’(C)(SC)(?S#,SN(S))
?SN(?PC#=’C2’(C)(SC( S)
求选修了全部课程的学生学号和姓名
?S#,C#(SC)(?C#(C)(?S#,SN(S)
?S#,SN(?S#,C#(SC)(?C#(C)(S)
关系演算
元组关系演算
以元组变量作为谓词变元的基本对象
典型的元组关系演算语言是ALPHA
INGRES所用的QUEL语言参照ALPHA研制
主要有GET、PUT、HOLD、UPDATE、DELETE、DROP语句
语句格式:操作语句 工作空间名(表达式):操作条件
GET W(Student.Sno):Student.Sdept=’IS’
查询IS系学生的学号
域关系演算
以元组变量的分量(域变量)作为谓词变元的基本对象
代表语言:QBE(Query By Example,通过例子进行查询)
特点
高度非过程化
基于屏幕表格查询
结果也是表格
直观易学
Excel中的高级筛选操