990 likes | 1.21k Views
第四章 关系数据库. 上一章介绍了三种主要的数据模型: 层次模型 网状模型 关系模型 本章主要讲述 : 关系模型的数据结构 关系的定义和性质 关系数据库的基本概念 关系运算. TNO 教师号. CNO 课程号. CN 课程名. TN 姓名. SEX 性别. CT 课时. AGE 年龄. PROF 职称. SAL 工资. TNO 教师号. COMM 岗位津贴. CNO 课程号. DEPT 系别. 关系模型的数据结构. 关系模型就是用二维表格结构来表示实体及实体之间联系的模型。
E N D
上一章介绍了三种主要的数据模型: • 层次模型 • 网状模型 • 关系模型 • 本章主要讲述: • 关系模型的数据结构 • 关系的定义和性质 • 关系数据库的基本概念 • 关系运算
TNO 教师号 CNO 课程号 CN 课程名 TN 姓名 SEX 性别 CT 课时 AGE 年龄 PROF 职称 SAL 工资 TNO 教师号 COMM 岗位津贴 CNO 课程号 DEPT 系别 关系模型的数据结构 • 关系模型就是用二维表格结构来表示实体及实体之间联系的模型。 • 关系模型是各个关系的框架的集合,即关系模型是一些表格的格式,其中包括关系名、属性名、关键字等。 • 教师关系T • 课程关系C 授课关系SC • 教师—课程数据库的关系模型
从各个关系的框架中,我们可以很容易看出哪两个关系之间有联系。例如:从各个关系的框架中,我们可以很容易看出哪两个关系之间有联系。例如: • 教师关系和授课关系有公共的属性“教师号”,则表明这两个关系有联系。 • 而课程关系和授课关系有公共的属性“课程号”,则表明这两个关系也有联系。 • 至于元组之间的联系,则与具体的数据有关。只有在公共属性上具有相同属性值的元组之间才有联系。
由上例可以看出,在一个关系中可以存放两类信息:由上例可以看出,在一个关系中可以存放两类信息: • 一类是描述实体本身的信息 • 一类是描述实体(关系)之间的联系的信息 • 在层次模型和网状模型中,把有联系的实体(元组)用指针链接起来,实体之间的联系是通过指针来实现的。而关系模型则采用不同的思想,即用二维表来表示实体与实体之间的联系,这就是关系模型的本质所在。 • 所以,在建立关系模型时,只要把的所有的实体及其属性用关系框架来表示,同时把实体之间的关系也用关系框架来表示,就可以得到一个关系模型。 • 如上例中的教师—课程数据库的关系模型就是这样建立的。
关系的定义 • 在关系模型中,数据是以二维表的形式存在的,这个二维表就叫做关系。 • 关系理论是以集合代数理论为基础的,因此,我们可以用集合代数给出二维表的“关系”定义。 • 为了从集合论的角度给出关系的定义,我们先引入域和笛卡尔积的概念。 • 1) 域(Domain) • 域是一组具有相同数据类型的值的集合,又称为值域。(用D表示) • 例如整数、实数、字符串的集合。 • 域中所包含的值的个数称为域的基数(用m表示)。
关系中用域表示属性的取值范围。例如: • D1={李力,王平,刘伟} m1=3 • D2={男,女} m2=2 • D3={47,28,30} m3=3 • 其中,D1,D2,D3为域名,分别表示教师关系中姓名、性别、年龄的集合。 • 域名无排列次序,如D2={男,女}={女,男}
2)笛卡尔积(Cartesian Product ) • 给定一组域D1,D2,…,Dn(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,…,Dn的笛卡尔积为 • D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}. • 由定义可以看出,笛卡尔积也是一个集合。 例如:上述表示教师关系中姓名、性别两个域的笛卡尔积为: D1={李力,王平,刘伟} D2={男,女} D1×D2={(李力,男),(李力,女),(王平,男), (王平,女),(刘伟,男),(刘伟,女)}
其中: • 元素中的每一个di叫做一个分量(Component),来自相应的域(di∈Di) • 每一个元素(d1,d2,d3,…,dn)叫做一个n元组(n-tuple),简称元组(Tuple)。元组的每个分量(di)是按序排列的。 如:(1,2,3)≠(2,3,1)≠(1,3,2) • 而集合中的元素是没有排序次序的,如(1,2,3)=(2,3,1)=(1,3,2)。 • 其中:李力、王平、刘伟、男、女都是分量。 • (李力,男),(李力,女)等是元组。
若Di(i=1,2,……n)为有限集,Di中的集合元素个数称为Di的基数,用mi(i=1,2,……n)表示,则笛卡尔积D1×D2×……×Dn的基数M(即元素(d1,d2,……dn)的个数)为所有域的基数的累积,即若Di(i=1,2,……n)为有限集,Di中的集合元素个数称为Di的基数,用mi(i=1,2,……n)表示,则笛卡尔积D1×D2×……×Dn的基数M(即元素(d1,d2,……dn)的个数)为所有域的基数的累积,即 M= 例如:上述表示教师关系中姓名、性别两个域的笛卡尔积为: D1×D2={(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男),(刘伟,女)} 其基数M=m1×m2=3*2=6;元组的个数为6。
姓名 性别 李力 男 李力 女 王平 男 王平 女 刘伟 男 刘伟 女 • 笛卡尔积可用二维表的形式表示。 例如,上述的6个元组可表示成下表 • D1和D2的笛卡尔积 由上例可以看出,笛卡尔积实际是一个二维表, 表的框架由域构成,表的任意一行就是一个元组,表 中的每一列来自同一域,如第一个分量来自D1,第二 个分量来自D2。
姓名 性别 李力 男 王平 女 刘伟 男 • 3)关系的定义 • 笛卡尔积D1×D2×…×Dn的任一子集称为定义在域D1,D2,…Dn上的n元关系(Relation),可用表示为 • R(D1,D2……Dn)。 • 其中:①R为关系名,n称为关系的目或度。 • 当n=1时,称为单元关系。 当n=2时,称为二元关系。 … 当n=n时,称为n元关系。 ②关系中元组个数是关系的基数。
③关系中候选码与主码 • 在关系中可以唯一标示一个元组的属性或属性组称 • 为候选码,在候选码中选择一个主码。 • 如关系的候选码只有一个属性,称为单属性码。 • 如关系中的候选码由多个属性构成,称为多属性码。 • 如关系中只有一个候选码,且包含所有属性,称为全码。 一定是 主码 候选码 不一定是
姓名 性别 李力 男 李力 女 • ④主属性与非主属性 • 主属性(Prime Attribute):包含在候选码中的的各属性称为主属性。 • 非主属性(Non-Prime Attribute):不包含在任何候选码中的属性称为非码属性。 • 数学上关系是笛卡尔积的任意子集,但在实际应用中关系是笛卡尔积中所取的有意义的子集。例如在下表中选取一个子集构成如下关系,显然不符合实际情况。
4)关系的类型 • 本书关系基本为有限关系,关系的类型有三种:基 • 本表,查询表,视图表。 • 基本表(基本关系)是实际存在的表,是实际存储数据的逻辑表示。 • 查询表是查询结果对应的表。 • 视图表是由基本表或其他视图表导出来的表,是虚表。 • 严格地说,关系是规范化二维表中行的集合,为了使相应 • 的数据操作简化,在关系模型中,对关系作了种种限制,分 • 别如下:
①关系中不允许出现相同的元组 • 在其他关系数据库产品中,基本表并不完全都满足此性质,如Oracle,Foxpro允许表中存在两个完全相同的元组。 • ②关系中元组的顺序(即行序)是无关紧要的 在一个关系中可以任意交换两行的次序。根据关系的这 个性质,可以改变元组的顺序使其具有某种排序,然后按 照顺序查询数据,可以提高查询速度。 ③关系中属性的顺序是无关紧要的 即列的顺序可以任意交换。交换时,应连同属性名一起交 换,否则将得到不同的关系。
姓名 职业 兼职 张强 教师 辅导员 王丽 工人 教师 刘宁 教师 辅导员 ④列是同质的 同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。 ⑤关系中各个属性必须有不同的名字 不同的属性可来自同一个域,不同的属性要给予不同的属性名。 • 例如,有如下表中关系,职业与兼职是两个不同的属性,但它们取自同一个域职业={教师,工人,辅导员}。
姓名 籍贯 姓名 省 市/县 省 市/县 张强 吉林 长春 张强 吉林 长春 王丽 山西 大同 王丽 山西 大同 ⑥关系中每一分量必须是不可分的数据项 所有属性值都是原子的,即是一个确定的值,而不是 值的集合。满足此条件的关系称为规范化关系,否则称为非 规范化关系。 • 例如
属性间数据的依赖关系 属性向域的映象 域的集合 R(U, D, DOM, F) 关系名 属性名集合 关系模式 • 关系模式(Relation Schema):关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等,其形式化描述为R(U,D,dom,F),简记作R(U)或R(A1 , A2 ,…, An ) 。
关系模式是型,是稳定的,静态的。关系是某一时刻的关系模式是型,是稳定的,静态的。关系是某一时刻的 • 值,是随时间不断变化的,是动态的;即某一时刻对应某个 • 关系模式的内容(元组的集合)称作关系。
关系数据库 • 关系数据库(Relation Database)即在某应用领域,所有 • 实体集与实体间联系的关系构成的集合。关系数据库有型与值 • 之分,型称为关系数据库的模式,值称为关系数据库的值。关 • 系数据库模式与关系数据库的值通常统称为关系数据库。 • 其型是关系模式的集合,即数据库描述。 • 其值是某一时刻关系的集合。 • 例如教学数据库中,共有五个关系,其关系模式分别为: • 学生(学号,姓名,性别,年龄,系别) • 课程(课程号,课程名,课时) • 选课(学号,课程号,成绩)
关系模型的完整性 • 为了维护数据库中数据与现实世界的一致性,对关系数 • 据库的插入、删除和修改操作必须有一定的约束条件,这就是 • 关系模型的三类完整性: • 实体完整性 • 参照完整性 • 用户定义的完整性 • 1). 实体完整性(Entity Integrity) • 实体完整性是指主码的值不能为空或部分为空。 • 空值不是空格,它指跳过货不输人,用“NULL”表示,说明“不知道”,“无意义”。
职工姓名Name 部门编号DeptNo 部门编号DeptNo 部门名称DeptName 刘勇 01 01 计算机系 丁钰 02 02 人事处 张清蜂 03 电子系 职工表 部门表 返回本节
SNO 学号 SN 姓名 SEX 性别 AGE 年龄 DEPT 所在系 DEPT 所在系 ADDR 地址 S1 赵亦 女 17 计算机 计算机 1号楼 S2 钱尔 男 18 信息 信息 1号楼 … 自动化 2号楼 S11 王威 男 19 • 2).参照完整性(Referential integrity) • 如果属性X不是关系R2的主码,而是另一关系R1的主码, • 则该属性X称为关系R2的外码;并称关系R2为参照关系,关系 • R1为被参照关系。外码一般用波浪线标示。 R2(学生关系) R1(系别关系)
职工姓名Name 部门编号DeptNo 部门编号DeptNo 部门名称DeptName 刘勇 01 01 计算机系 丁钰 02 02 人事处 张清蜂 03 电子系 • 参照完整性规则,要求外码只能取下面两类值: • 空值 • 非空值,该值必须与被参照关系中主码的某个取值一致。 职工表 部门表
实体完整性和参照完整性是关系模型必须满足的完实体完整性和参照完整性是关系模型必须满足的完 • 整性约束条件,系统都应该支持这两类完整性。 • 除此之外,不同的关系数据库系统由于应用环境的 • 不同,往往还需要一些特殊的约束条件,这就是用户定 • 义完整性。
3). 用户定义完整性(User-defined Integrity) • 用户定义完整性是针对某一具体关系数据库的约束条件, • 它反映某一具体应用所涉及的数据必须满足的语义要求。 • 例如,属性值根据实际需要,要具备一些约束条件,如选 • 课关系中成绩不能为负数;某些数据的输入格式要有一些限制 • 等。
关系操作 • 关系操作是集合操作,操作的对象及结果都是集合,是一 • 次一集合(Set-at-a-time)的方式。而非关系型的数据操作 • 方式是一次一记录(Record-at-a-time)。 • 关系模型与其他模型相比,最有特色的是它的数据库语言, • 这种语言灵活方便、表达能力和功能都很强。 • 目前关系数据库所使用的语言一般都具有定义、查询、更新 • 和控制一体化的特点,而查询是最主要的部分。故而关系数据库 • 有的核心部分是查询,故又称为查询语言,而查询的条件要使用 • 关系运算表达式来表示。
关系代 数语言 ISBL(Information System Base Language) 元组关系演算语言 ALPHA 关系数 据语言 关系演 算语言 域关系演算语言 QBE 具有关系代数和关系 演算双重特点的语言 SQL • 关系运算是设计关系数据语言的基础。关系操作语言的种类 • 可划分如下:
一、关系代数 • 1)关系代数的基本概念 • 关系代数是对关系进行集合代数运算,是基于关系代数的 • 操作语言,称为关系代数语言,简称关系代数。 • 它是由IBM在一个实验性的系统上实现的,称为ISBL(Information System Base Language)语言。 • ISBL的每个语句都类似于一个关系代数表达式。 • 关系代数的运算对象是关系,运算结果也是关系,关系代 • 数用到的运算符主要包括四类:
运算符 含义 集合运算符 ∪ 并 - 差 ∩ 交 × 广义笛卡尔积 专门的关系运算符 σ 选择 ∏ 投影 连接 ÷ 除 关系代数运算符
运算符 含义 比较运算符 > 大于 ≥ 大于或等于 < 小于 ≤ 小于或等于 = 等于 ≠ 不等于 逻辑运算符 ﹁ 非 ∧ 与 ∨ 或 续表
传统的集合运算 • .并∪ • .差- • . 交∩ • .广义笛卡尔积×
专门的关系运算 • 1).选择(selection) • 选择又称为限制,它是在关系R中选择满足 • 给定条件的元组,组成一个新的关系。记作: • σF (R) ={t|t∈R∧F(t) = TRUE }
2).投影(projection) • 从关系R上选取若干属性列A,并删除重复 • 行,组成新的关系。记作: • ∏A (R) = { t[ A ] | t ∈ R} • 投影操作是从列的角度进行的运算。
图书号Bookid 图书名Bookname 编者Editor 价格Price 出版社Publish 出版年月PubDate 库存数Qty TP2001--001 数据结构 李国庆 22.00 清华大学出版社 2001-01-08 20 TP2003--002 数据结构 刘娇丽 18.9 中国水利水电出版社 2003-10-15 50 TP2002--001 高等数学 刘自强 12.00 中国水利水电出版社 2002-01-08 60 TP2003--001 数据库系统 汪 洋 14.00 人民邮电出版社 2003-05-18 26 TP2004--005 数据库原理与应用 刘淳 24 中国水利水电出版社 2004-07-25 100 表图书关系BOOK
借书卡号Cardid 读者姓名Name 性别Sex 工作单位Dept 读者类别Class T0001 刘勇 男 计算机系 1 S0101 丁钰 女 人事处 2 S0111 张清蜂 男 培训部 3 T0002 张伟 女 计算机系 1 表读者关系READER
图书号Bookid 借书卡号Cardid 借书日期Bdate 还书日期Sdate TP2003--002 T0001 2003-11-18 2003-12-09 TP2001--001 S0101 2003-02-28 2003-05-20 TP2003--001 S0111 2004-05-06 TP2003--002 S0101 2004-02-08 表借书关系BORROW 返回本节
Bookname Publish 数据结构 清华大学出版社 数据结构 中国水利水电出版社 高等数学 中国水利水电出版社 数据库系统 人民邮电出版社 数据库原理与应用 中国水利水电出版社 • 例2-3 查询关系BOOK中所有图书的书名和对应的出版社。 • ∏Bookname,Publish(Book) • 结果如下:
Bookname Qty 数据结构 50 高等数学 60 数据库原理与应用 100 • 例2-4查询“中国水利水电出版社”出版的所有藏书的书名和库 • 存数量。 • ∏Bookname,Qty(σPublish='中国水利水电出版社'(Book)) • 结果如下:
3).连接(join) • 连接也称为θ连接。它是从两个关系R和S的 • 笛卡尔积R×S中选取属性间满足一定条件的元 • 组,构成新的关系。 • 连接是从两个关系的笛卡儿积中选取属性间满足一定 • 条件的元组。记作: • R S={tr ts| trR ∧ tsS ∧ tr [A]θts [B]}. • AθB
R S={tr ts| trR ∧ tsS ∧ tr [A]θts [B]}. • AθB • 其中:A和B分别为R和S上度数相等且可比的属性组, • θ是比较运算符。 • 连接运算从R和S的广义笛卡儿积R×S中,选取符合 • AθB条件的元组,即选择在R关系中A属性组上的值与在S • 关系中B属性组上的值满足比较操作θ的元组。
A=B R S = { | trR∧ts S∧tr[A] = ts[B] } tr ts • 连接一般分为两种:等值连接与自然连接。 • ★等值连接(equi-join) • 什么是等值连接? • 当θ为“=”的连接运算称为等值连接。 • 等值连接的含义 • 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:
RS = { – ts[B] | tr R∧ts S∧tr[B] = ts[B] } tr ts 2.3 关系代数 • 自然连接(Natural join) • 什么是自然连接 • 自然连接是一种特殊的等值连接 • 两个关系中进行比较的分量必须是同名的属性(组) • 在结果中把重复的属性列去掉 • 自然连接的含义 R和S具有相同的属性组B
RS = { – ts[B] | tr R∧ts S∧tr[B] = ts[B] } tr ts ★自然连接 • 什么是自然连接? • 自然连接是一种特殊的等值连接。 • 两个关系中进行比较的分量必须是同名的属性(组)。 • 在结果中把重复的属性列去掉。 • 自然连接的含义 R和S具有相同的属性组B。 • 举例说明笛卡尔积、等值连接、自然连接的区别。
Bookid Bookname Publish TP2001--001 数据结构 清华大学出版社 TP2003--002 数据结构 中国水利水电出版社 TP2002--001 高等数学 中国水利水电出版社 TP2003--001 数据库系统 人民邮电出版社 TP2004--005 数据库原理与应用 中国水利水电出版社 表(a)R关系
Cardid Bookid T0001 TP2003--002 S0101 TP2001--001 S0111 TP2003--001 S0101 TP2003--002 表(b)S关系
R.Bookid BookName Publish S.Bookid Cardid TP2001--001 数据结构 清华大学出版社 TP2001--001 S0101 TP2003--002 数据结构 中国水利水电出版社 TP2003--002 T0001 TP2003--002 数据结构 中国水利水电出版社 TP2003--002 S0101 TP2003--001 数据库系统 人民邮电出版社 TP2003--001 S0111 表(c)R和S的等值连接