配色: 字号:
第02章 关系型数据库基础
2022-12-24 | 阅:  转:  |  分享 
  
第2章 关系型数据库基础The Relational Database关系型数据库关系型数据库是支持关系数据模型的数据库关系模型的产生197
0年,美国IBM公司的E.F.Codd博士,“A Relational Model of Data for Large Share
d Data Banks”, 《Communication of the ACM》,首先提出关系模型标志着关系型数据库新时代的来临
关系型数据库(续)关系型数据库的发展20世纪80年代以来,关系型数据库系统的研究取得了辉煌的成就关系型数据库管理系统DB2、Ora
cle、Sybase、Informix、SQL Server、MySQL、Access、SQLite等关系型数据库系统是目前最主流
的数据库系统本章主要内容2.1 关系模型的基本概念 2.2 关系模型的完整性约束 2.3 关系操作 域、笛卡儿积、关系、关系模式
码实体完整性规则参照完整性规则用户自定义完整性规则码关系数据语言关系代数、关系演算、SQL关系代数2.1 关系模型的基本概念 关
系 现实世界的实体以及实体间的各种联系均用关系来表示从用户角度,关系模型中数据的逻辑结构是一张二维表建立在集合代数的基础上 2.1
.1 域、笛卡尔积、关系、关系模式⒈ 域(Domain) 2. 笛卡尔积(Cartesian Product) 3. 关系(Re
lation)4. 关系模式(Relation Schema)1.域 (Domain) 定义2.1:域是一组具有相同数据类型的值的
集合。在关系中用域来表示属性的取值范围域中所包含的值的个数称域的基数(用m表示)【例2.1】已知如下三个域:D1={1,2,3,4
,5,6…….}表示自然数集合D2={李宝清,陈江海,张晓,薛敬文}表示姓名集合D3={男,女}表示性别集合其中,D1的基数为无穷
,D2的基数为4,D3的基数为2。 2. 笛卡尔积定义2.2:给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…
,Dn的笛卡尔积为: D1×D2×…×Dn={(d1,d2,…dn)| di∈ Di ,i=1,2…,n}笛卡尔积中每一个元素(d
1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)元组中的每一个值di 叫作一个分量若Di(i=1,2,
…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数 M 为:2.笛卡尔积(续)【例2.2】给定三个
域:D2={李宝清,陈江海,张晓,薛敬文}D3={男,女}D4={销售部,财务部}则D2、D3和D4的笛卡儿积定义为集合:D2×D
3×D4={(李宝清,男,销售部), (李宝清,男,财务部),(李宝清,女,销售部), (李宝清,女,财务部),(陈江海,男,销售
部), (陈江海,男,财务部),(陈江海,女,销售部), (陈江海,女,财务部),(张晓,男,销售部), (张晓,男,财务部),(
张晓,女,销售部), (张晓,女,财务部),(薛敬文,男,销售部), (薛敬文,男,财务部),(薛敬文,女,销售部), (薛敬文,
女,财务部)} 2.笛卡尔积(续)笛卡尔积的表示方法笛卡尔积可表示为一个二维表表中的每行对应一个元组,表中的每列对应一个域笛卡尔积
的特点所有域的所有取值的一个组合元组没有重复和语义无关表2.1 D2×D3×D4练习:设有四个域D1 ={a,b,c}D2 ={b
,e}D3 ={b}D4 ={f,g}计算D1×D2 ×D3 ×D4 基数:M = 3 × 2 ×1 ×2 = 123. 关系定义
2.3:笛卡儿积 D1×D2×… ×Dn 的子集称为在域D1,D2,…,Dn上的关系(Relation),记为: R
( D1 , D2 , … , Dn )R:关系名n:关系的目或度当n=1时,称该关系为单元关系(Unary relation)
或一元关系
当n=2时,称该关系为二元关系(Binary relation)Di为第i个域名 3. 关系注意关系是笛卡尔积
的有意义的有限子集。无限关系在数据库系统中是无意义的。由于域可以相同,为了加以区分,必须对每列取一个唯一的名字,成为属性(Attr
ibute)。 【例2.3】从【例2.2】的笛卡尔积中取出有实际意义的元组来构造关系Emp。实际情况中,每名员工的性别和部门值都是
唯一的。 Emp={(李宝清,男,销售部),(陈江海,男,销售部),(张晓,女,财务部), (薛敬文,男,
财务部) } 3. 关系(续) 基本关系的性质关系中不允许出现相同的元组 关系中元组的顺序(即行序)是无关紧要的 关系中属性的顺
序(即列序)是无关紧要的 同一属性名下的各个属性值必须来自同一个域,是同一类型的数据关系中各个属性必须有不同的名字,不同的属性可来
自同一个域 关系中每一分量必须是不可分的数据项 这是规范条件中最基本的一条,满足此条件的关系称为规范化关系,否则称为非规范化关系。
非规范化关系3. 关系(续) 关系的类型基本表实际存在的表,是实际存储数据的逻辑表示查询表查询结果对应的表 视图表由基本表或其他
视图表导出的表,是虚表,不对应实际存储的数据视图表就是前面介绍的外模式 4. 关系模式关系模式是对关系数据结构的描述元组集合的结构
属性构成属性来自的域 属性与域之间的映象关系元组语义以及完整性约束条件属性间的函数依赖关系的集合4. 关系模式
(续)定义2.4 关系模式可以形式化地表示为:关系模式通常简记为:R(U) 或 R(A1,A2,…An) 其中:R为关系名, A
1,A2,…An为属性名R ( U , D , dom , F )4. 关系模式(续)【例2.5】 表2.2中员工基本情况的
关系模式为:Emp(姓名, 性别, 部门)4. 关系模式(续)关系模式和关系的联系关系模式 型 对关系的结构的描述 静态的、稳定的
关系 值 关系在某一时刻的状态或内容 动态的、随时间不断变化的关系型数据库在一个给定的应用领域中,所有实体及实体之间联系的关系的集
合构成一个关系型数据库。关系型数据库的型与值型称为关系型数据库模式,是对关系型数据库的描述。若干域的定义在这些域上定义的若干关系模
式值是这些关系模式在某一时刻对应的关系的集合,通常简称为关系型数据库。关系型数据库模式示例学生(学号,姓名,性别,出生日期,系别)
课程(课程号,课程名,任课教师,学分)选课(学号,课程号,成绩)关系型数据库示例2.1.2 码 1. 超码定义2.5 在一个关
系中,能唯一标识元组的属性或属性集称为关系的超码。学生关系学号 学号,姓名学号,姓名,性别学号,姓名,性别,出生日期,系别选课关系
学号,课程号学号,课程号,成绩2.1.2 码2. 候选码定义2.6 如果一个属性集能唯一标识元组,且又不含有多余的属性,那么这
个属性集称为关系的候选码。学生关系学号课程关系课程号课程名 选课关系学号,课程号2.1.2 码(续) 3.主码若一个关系有一个或
多个候选码,则选定其中一个为主码(Primary key)学生关系学号课程关系课程号选课关系学号,课程号2.1.2 码(续)
4.主属性定义2.7 包含在任何一个候选码之中的属性称为主属性,不包含在任何一个候选码之中的属性称为非主属性。学生关系主属性:学号
非主属性:姓名,性别,出生日期,系别课程关系主属性:课程号,课程名非主属性:任课教师,学分2.1.2 码(续) 5. 外码定义2
.8 设F是基本关系R的一个或一组属性,但不是关系R的主码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码。基本关系
R称为参照关系,基本关系S称为被参照关系或目标关系。选课关系学号---------学生关系的“学号”课程号---------课程关
系的“课程号”2.1.2 码(续)需要说明的是:关系R和S不一定是不同的关系学生(学号,姓名,性别,出生日期,系别,班长学号)课
程(课程号,课程名,任课教师,学分,直接先行课号)被参照关系S的主码Ks 和参照关系R的外码F必须定义在同一个(或一组)域上;外码
并不一定要与相应的主码同名。只是当外码与相应的主码属于不同关系时,习惯上往往取相同的名字,以便于识别。2.1.2 码(续)外码的
作用在关系数据模型中主码和外码提供了一种两个关系联系的桥梁。 2.2 关系模型的 完整性约束 关系模型的三类完整性约束实体完整
性规则参照完整性规则用户定义的完整性规则任何关系在任何时刻都要满足这些语义约束2.2.1 实体完整性规则规则2.1 实体完整性规
则若属性A(一个或一组属性)是基本关系R的主码中的属性,则A不能取空值。 NULL:不知道的值,不存在的值【例2.6】 学生关系(
学号,姓名,性别,出生日期,系别)学号:不能取空值学生选课关系(学号,课程号,成绩) 学号和课程号:两个属性都不能取空值 2.2.
1 实体完整性规则(续)实体完整性规则的说明2.2.2 参照完整性规则(续)规则2.2 参照完整性规则 如果属性组K是关系模式R1
的主码,同时K也是关系模式R2的外码,那么在R2的关系中,K的取值只允许两种可能:或者为空值,或者等于R1关系中某个主码值。2.2
.2 参照完整性规则(续)【例2.7】 选课关系(学号,课程号,成绩)外码学号课程号“学号”和“课程号”不能为空值主码的一部分2.
2.2 参照完整性规则(续)2.2.2 参照完整性规则(续)【例2.8】给定职工关系和部门关系分别为:职工(职工编号, 姓名, 部
门编号, 性别, 年龄, 身份证号码)部门(部门编号, 部门名称, 部门经理) 在职工关系中,“部门编号”是它的外码取空值该职工尚
未分配到任何部门取部门关系中某一“部门编号”的值该职工在该部门工作 2.2.2 参照完整性规则(续)【例2.9】 课程关系(课程号
,课程名,学分,直接先修课号)主码课程号外码直接先修课号开设这门课时必须先要开设的课程编号取空值当前的这门课程没有直接先修课非空值
其值必来自本关系主码“课程号”的取值2.2.3 用户自定义完整性规则针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据
必须满足的语义要求。例:选课关系中的“成绩”,其值0-100 课程关系中的“学分”,只能取值{1,2,3,4}职工关系的“身份证
号”,其值必须18位关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能练习:要
向关系P中插入新行,哪些行能够插入?零件关系P(主码是“零件号”,外码是“供应商号”) 供应商关系S(主码是“供应商号”)A.(‘
037’,‘绿’,null) B.(null,‘黄’,‘T20’)C.(‘201’,‘红’,‘T20’) D.(‘1
05’,‘蓝’,‘B01’)E.(‘101’,‘黄’,‘T11’)2.3 关系操作关系操作目的操作关系型数据库中的数据工具基于关
系数据模型的操作语言方式一次一集合2.3.1 关系数据语言关系模型的数据操作 查询更新(插入、修改、删除) 关系数据语言关系代
数语言(以集合操作为基础 ,ISBL)关系演算语言(以谓词演算为基础 )元组关系演算语言(ALPHA, QUEL)域关系演算语言
(QBE)具有关系代数和关系演算双重特点的语言(SQL)2.3.2 关系代数关系代数1970年,E.F.Codd提出一种抽象的查
询语言,用对关系的运算来表达查询关系运算分类传统的集合运算:并、交、差、笛卡尔积专门的关系运算符:选择、投影、连接、除三要素运算对
象、运算结果、运算符关系代数(续)表2.5 关系代数运算符1. 传统的集合运算(1) 并运算(2) 差运算(3) 交运算(4)
笛卡尔积条件:如果参与运算的两个关系R、S,具有相同的元数n,且关系R第i个属性与另一关系S的第i个属性具有相同的域(属性名可以不
同),即R、S具有相容性。(1≤ i ≤ n) (1)并 (∪)设R和S是相容的,则R和S的并运算是由属于R和S的元组组成的新的关
系,其结果仍为n元的关系,记为R∪S。 R ∪ S ={ r | r?R ? r?S }一个元组
在并集中只出现一次 b 2 db
3 bc 2 dd 3
ba 3 ce 5
fRSR∪S【例2.10】 R∪S(2)差 (-)设R和S是相容的,则R和S的差是由属于R而不属于S的所有元组组
成的新关系,其结果仍为n元的关系,记为R-S。 R?S ={ r | r?R ? r?S }b
3 bc 2 dd
3 b【例2.11】 R-SRSR-S?????????(3)交 (∩)设R和S是相
容的,关系R和S的交是由属于R又属于S的元组组成的新关系,结果仍为n元的关系,记为R∩S 。 R ∩ S ={ r | r?
R ? r?S }一个元组在交集中只出现一次b 2 d【例2.12】 R∩SR
SR∩S?????????(4)笛卡尔积 (×)广义笛卡尔积设关系R和关系S的元数分别为r和s。定义R和S的笛卡儿积R×S是一个(
r+s)元的元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量是S的一个元组,记为R×S。 R×S={t︱t=<
tr,?ts>∧tr∈R∧ts∈S} 【例2.13】 R×S RSR×S练习计算R∪S、 R∩S、 R-S、 R ×SRS能实现的
基本操作并运算实现数据记录的添加和插入。差运算实现数据记录的删除。数据记录的修改则是通过先删除,后插入这两步完成的。2. 专门的关
系运算选择:选取符合条件的元组构成新关系投影:选取元组中指定的属性构成新关系连接:选取符合条件的元组串联构成新关系除:选取象集符合
条件的元组的若干属性列构成新关系(1) 选择选择又称为限制(Restriction)选择运算符的含义在关系R中选择满足给定条件F的
诸元组(1) 选择(续)选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算【例2.14】计算?A=‘b’?B
<3(R)或?[1]=‘b’?[2]<3(R)b 2 dR?A=‘b’?B<3
(R)????b 2 de 5
f【例2.14】(续)计算?B>3?C≠‘c’ (S)或?[2]>3?[3]≠‘c’ (S)S?B>3?C≠‘c’ (S)
???(2) 投影设关系R是k元关系,R在其分量 ,?…, (m≤k,?i1,?…,?im为1到k之间的整数)上
的投影用 表示,它是从R中选择若干属性列组成的一个m元元组的集合。(2)
投影(续)投影操作是从列的角度进行运算投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)【例2.15】 计算
和 RS(3) 连接连接又称θ连接。连接运算的含义从两个关系的笛卡尔积中,选出满足给定条件的元组。
新的关系包括所有的属性。并且不消除重复的元组。A和B:分别为R和S上度数相等且可比的属性组θ:比较运算符连接运算从R和S的笛卡尔积
R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组【例2.16】计算R SRS等值
连接和自然连接 等值连接θ为“=”的连接运算称为等值连接R自然连接 自然连接是一种特殊的等值连接两个关系中进行比较的分量必须是相同
的属性组,在结果中把重复的属性列去掉R SS={t︱t=∧tr∈R∧ts∈S∧tr[A] = ts[B]}计
算R S 【例2.17】 RS【例2.18】 计算R S 和R Q RSQR SR Q连接(续
)自然连接与等值连接的不同:等值连接中相等的属性可以是相同属性,也可以是不同属性;自然连接中相等的属性必须是相同的属性。自然连接结
果必须去掉重复的属性,特指进行相等比较的属性,而等值连接结果不必。自然连接用于有公共属性的情况。如果两个关系没有公共属性,那么它们
不能进行自然连接。而等值连接无此要求。连接(续)什么时候可能会用到自然连接?多表检索(4) 除象集: 关系R(X , Z),
X, Z是属性组,x是X上的取值,定义x在R中的象集为 ZX= { t[Z] | t?R , t[X]= x }或者:x在R
上的象集:R中在X上值为x的诸元组在Z分量上的集合象集(续)x1在R中的象集 Zx1 ={Z1,Z2,Z3},x2在R中的象
集 Zx2 ={Z2,Z3},x3在R中的象集 Zx3={Z1,Z3}象集(续)X Z张军同学所选修的全
部课程x = 张军Zx除(续)除的定义:给定关系R(X,Y ) 和S (Y,Z ),其中X,Y,Z为属性组。R中的Y与S中的Y 可
以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影:
元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作: R÷S = {tr [X] | tr ? R ∧π
Y (S) ? Yx } Yx:x在R 中的象集,x = tr[X]【例2.19】计算R÷S和R÷Q【例2.20】设有
学生关系S、课程关系C和选课关系SC,其中Sno代表学号、Cno代表课号,计算SC÷S和SC÷C。 除(续)什么时候可能用到除法
?问题中出现‘至少’、‘全部’、‘所有’等类似的集合包含的概念时,可能会用到除法;用到除法时,关键的问题是什么?用到除法时,关键的
问题构造除关系和被除关系。关系代数(续)可以证明,关系代数操作集{?,?,?,?,?}是完备的操作集,任何其它关系代数操作都可以用
这五种操作的组合来表示。例如:R∩S=R-(R-S) 或 R∩S=S-(S-R)任何一个DBMS,只要它能完成这五种操作,则它
是关系完备的。当然,完备的操作集并不只有这一个。 3. 关系代数运算实例 示例数据库参见教材P33假设给定一个商品销售管理数据库S
aleProduct,该数据库包含以下4个关系模式:商品表Product(商品编号pdID, 商品名称pdName, 规格pdSp
ec, 型号pdModel, 生产厂商pdSupplier, 商品价格pdPrice, 库存数量pdStockSize ) 客户
表Customer(客户编号custID,客户名称custName,客户所在城市custCity,客户电话custPhone)订单
表Orders(订单编号orderID,订单日期orderDate,客户编号custID,送货地址orderAddress,订单总
金额orderAmount)订单明细表OrderDetail(订单编号orderID,商品编号pdID,实际售价pdSellPri
ce,订购数量quantity) 【例2.21】 查询所有北京客户的基本情况。【例2.22】查询生产厂商为“上海双喜”的商品的商品
名称。【例2.23】查询生产厂商为“上海双喜”且价格高于100元的商品的商品编号、商品名称和价格。 【例2.24】查询订单编号为“
D201006101628004”的客户的客户名称和客户电话。(1)查询订单编号为“D201006101628004”的订单的客户
编号【例2.24】(续)(2)查询订单编号为“D201006101628004”的订单客户的客户名称和客户电话。【例2.24】(续
)查询订单编号为“D201006101628004”的客户的客户名称和客户电话。解决问题的方法不唯一!? 还有其它方法吗【例2.2
5】查询订单中包含“羽毛球”的订单编号、客户名称、商品编号和订购数量。 (1)查询商品名称为“羽毛球”的商品的商品编号。【例2.2
5】(续)(2)查询订购商品中包含“羽毛球”的订单的订单细节。【例2.25】(续)(3)查询订购商品中包含“羽毛球”的订单的订单信
息和订单细节。【例2.25】(续)(4)查询订购商品中包含“羽毛球”的订单的订单编号、客户名称、商品编号和订购数量。 【例2.25
】(续)和教材中的解决方法比较一下有什么不同?【例2.26】查询订购了“天津南生”生产的全部商品的订单的订单编号。 (1)查询“天
津南生”生产的全部商品的商品编号。 (2)查询订购了“天津南生”生产的全部商品的订单的订单编号。 ?【例2.27】查询所有没有订购
商品编号为“11206”的商品的订单编号。 -【例2.27】(续)查询所有没有订购商品编号为“11206”的商品的订单编号。 ??
练习设有如下所示的三个关系:学生关系S(学号,姓名,年龄,性别,籍贯)课程关系C(课程号,课程名,教师姓名,办公室)选课关系SC(
学号,课程号,成绩)将下列关系代数表达式用汉语表达出来。R1= π姓名,学号,课程号(σ籍贯=‘上海’ (S SC))R2
=π姓名,成绩(S SC σ课程名=‘操作系统’ (C)) 答案籍贯为上海的学生的姓名、学号、所选修的课程号。选修操
作系统课程的学生的姓名、该课程的成绩。练习(续)给出下列查询的关系代数表达式:1. 籍贯为武汉的学生的学号、课程号和成绩。2. 王
志伟所教的所有学生的姓名和成绩。3. 女生选修的所有课程的课程名。4.所有成绩大于80分的学生的姓名、课程名和成绩。5. 姓名为“
李波”的学生选修的课程的课程名。6. 至少有一门课程不及格的学生的姓名和籍贯。1. 籍贯为武汉的学生的学号、课程号和成绩。 π学号
,课程号,成绩((σ籍贯=‘武汉’ (S)) (SC))2. 王志伟所教的所有学生的姓名和成绩。π姓名,成绩 ( (σ教师姓名=
‘王志伟’ (C) ) (SC S ))3. 女生选修的所有课程的课程名。π课程名((σ性别=‘女’ (S)) S
C C)4.所有成绩大于80分的学生的姓名、课程名和成绩。π姓名,课程名,成绩((σ成绩>80(SC) (S))练习(续)
5. 姓名为“李波”的学生选修的课程名。π课程名 ((σ姓名=‘李波’ (S) (SC) (C))6.至少有一门课程不及格的学
生的姓名和籍贯。 π姓名,籍贯 ((σ成绩< 60(SC) (S))练习(续)4.关系代数表达式的等价变换同一个问题可以由若干不同的关系代数表达式来解决【例2.28】 查询客户“环宇”所有订单的订单编号。 Q1、Q2、Q3的效率有多大差距呢? 假设:Customer表中包含100个元组,Orders表中包含1000个元组(其中50个元组符合条件),那么Q1、Q2、Q3的效率有多大差距呢?【例2.28】(续) 结论:查询效率最差的是Q1,最好的是Q3原因:Q3最先执行了选择运算提高关系代数查询效率的方法,除了尽早执行选择运算以外,还有尽早执行投影运算、相邻的投影和选择运算同时执行、连接运算之前进行预处理等关系代数小结 ?关系代数运算 关系代数运算并、差、交、笛卡尔积、投影、选择、连接、除 基本运算并、差、笛卡尔积、投影、选择 交、连接、除可以用5种基本运算来表达 引进它们并不增加语言的能力,但可以简化表达关系代数表达式关系代数运算经有限次复合后形成的式子 2.4 本章小结基本知识点① 需要了解的:了解关系数据库产生和发展的过程、了解关系数据库产品的发展及沿革。② 需要牢固掌握的:掌握关系模型的三个组成部分,各部分包括的主要内容;牢固掌握关系的相关定义;关系的三类完整性约束的概念。③ 需要举一反三的: 关系代数(包括抽象的语言及具体的语言);关系代数中的各种运算(并、交、差、选择、投影、连接、除、广义笛卡尔积等)。④ 难点:关系代数。由于关系代数较为抽象,因此在学习的过程中一定要结合具体的实例进行学习。
献花(0)
+1
(本文系籽油荃面原创)