1.12k likes | 1.31k Views
数据库原理和语言. 第二章 关系数据库 ( 4-6 学时). 2005 年 8 月 6 日. 主讲:曹志英 副教授 大连海事大学计算机科学与技术学院 研究方向:软件工程与理论 • 数据库与信息系统 电话: 84729625 Email : czy_sophy@163.com. 主要目的与内容 :. l 关系模型的基本概念 l 关系模型的数据结构 l 关系操作 l 关系的完整性. 集合论. 数学方法. 关系代数. 关系数据库的 数学理论基础 : l 集合论、 l 关系代数(信息代数), l 用数学的方法来处理数据。. 关系数据库的发展历程
E N D
数据库原理和语言 第二章关系数据库(4-6学时) 2005年8月6日 主讲:曹志英 副教授 大连海事大学计算机科学与技术学院 研究方向:软件工程与理论•数据库与信息系统 电话:84729625 Email:czy_sophy@163.com
主要目的与内容: l关系模型的基本概念 l关系模型的数据结构 l关系操作 l关系的完整性
集合论 数学方法 关系代数 • 关系数据库的数学理论基础: l集合论、 l关系代数(信息代数), l 用数学的方法来处理数据。
关系数据库的发展历程 u1962年,CODASYL“信息代数”。 u1968年,David Child在7090机上实现的集合论数据结构。 u1970年,E.F.Codd发表多篇论,严格地、系统地提出关系模型。 u20世纪70年代末,IBM 的San Jose实验室研制出关系数据库实验模型System R(原型) u1981年,IBM研制出SQL/DS。
§2.1 关系模型概述(P45) 前面讲过,关系数据库系统是支持关系模型的数据库系统,同样地由关系数据结构、关系操作集合和完整性约束条件三部分组成。 一、 单一的数据结构----关系(P46) 实体以及实体间的联系均由关系来表示。 关系模型的数据结构非常单一。在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。在用户看来,关系模型中数据的逻辑结构是一张二维表。
二、关系操作(P46) 关系模型给出了关系操作的能力,但不对具体RDBMS语言给出具体的语法要求。 常用的关系操作包括两大部分: l并(Union) l选择(Select) l交(Intersection)l投影(Project) l差(Difference)l连接(join) l除(Divide) 等查询操作和 l增加(Insert) l删除(Delete) l 修改(Update)操作。
三、关系操作的特点: 集合操作方式,即操作的对象和结果都是集合,这种方式一次一集合(set-at-a-time)。 非关系数据模型数据操作方式:一次一记录(record-at –a-time)。 实现关系操作:关系代数和关系演算(元组关系演算、域关系演算),是抽象的查询语言。 关系语言是一种高度非过程化语言。 SQL:Structured Query Language,结构化查询语言。 SQL构成:集DDL、DML和DCL于一体。 RDBMS-Relational Database Management System,关系数据库管理系统。
关系数据语言 三类:关系代数语言、关系演算语言和具有关系代数和关系演算双重特点的语言 (1)关系代数是用对关系的运算来表达查询要求的方式。 (2)关系演算是用谓词来表达查询要求的方式。按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。 (3)介于关系代数和关系演算之间的语言SQL(Standard Query Language):它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。 ◆特点:完备的表达能力、非过程化的集合操作、功能强、能嵌入高级语言使用。
关系模型必须满足的完整性约束条件,应该由关系系统自动支持关系模型必须满足的完整性约束条件,应该由关系系统自动支持 四、关系完整性约束条件(P47) • 关系的三类完整性约束: 关系模型提供了丰富的完整性控制机制,允许定义三类完整性: • 实体完整性 • 参照完整性 • 用户定义的完整性 ——是应用领域需要遵循的约束条件,体现了具体领域中的语义约束
§2.2 关系数据结构及形式化定义 从集合论角度,给出关系数据结构形式化定义。 §2.2.1 关系(P47) §2.2.2 关系模式 §2.2.3 关系数据库(P52)
§2.2.1 关系(P47) • 域(Domain) • 笛卡尔积(Cartesian Product) • 关系:(笛卡尔积的有效组合) • 码:(P49) • 关系的类型与性质:(P50)
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}。 • 由定义可以看出,笛卡尔积也是一个集合。 其中: • 1)元素中的每一个di叫做一个分量(Component),来自相应的域(di∈Di) • 2)每一个元素(d1,d2,d3,…,dn)叫做一个n元组(n-tuple),简称元组(Tuple)。但元组不是di的集合,元组的每个分量(di)是按序排列的。如: • (1,2,3)≠(2,3,1)≠(1,3,2); • 而集合中的元素是没有排序次序的,如{1,2,3}={2,3,1}={1,3,2}。
3)若Di(i=1,2,…,n)为有限集,其基数(Cardinal number)为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M(即元素(d1,d2,…,dn)的个数)为所有域的基数的累乘之积,即: 笛卡尔积是一个二维表,表中每行对应一个元组,每列对应一个域。 例1:D1=男人的集合(Man)={王兵、李平、张强} D2=女人的集合(Woman)={丁梅、吴芳} D3=儿童的集合(Child)={王一、李一、李二} 则这三个集合的笛卡尔积为: D1×D2×D3={(王兵、丁梅、王一),(王兵、丁梅、李一),(王兵、丁梅、李二),(王兵、吴芳、王一),(王兵、吴芳、李一),(王兵、吴芳、李二),……,(张强、吴芳、李二)} 共有18个元素:笛卡尔基数=3×2×3=18 每小括号的组合,是一个元组。 每一个元组中的每一个元素(如王兵、丁梅等)就叫分量。
姓名 性别 李力 男 李力 女 表2.1 D1和D2的笛卡尔积 王平 男 王平 女 刘伟 男 刘伟 女 • 例2:上述表示教师关系中姓名D1={李力,王平,刘伟} 、性别D2 ={男,女}两个域的笛卡尔积为: • D1×D2={(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男),(刘伟,女)} • 其中: • 李力、王平、刘伟、男、女都是分量 • (李力,男),(李力,女)等是元组 • 其基数M=m1×m2=3*2=6 • 元组的个数为6 • 例如,上述的6个元组可表示成表2.1。 • - 由上例可以看出,笛卡尔积实际是一个二维表,表的框架由域构成,表的任意一行就是一个元组,表中的每一列来自同一域(例如:第一个分量来自D1,第二个分量来自D2)。
姓名 性别 李力 男 王平 女 刘伟 男 3、关系:(笛卡尔积的有效组合) 定义:笛卡尔积D1×D2×…×Dn的任一子集称为定义在域D1, D2,…, Dn上的n元关系(Relation),可用R( D1, D2,…, Dn)表示 • 如上例D1×D2笛卡尔积的子集可以构成教师关系T1,如下表: 元组 属性
若有一个家庭成员集合:R(父亲,母亲,孩子)若有一个家庭成员集合:R(父亲,母亲,孩子) 这个集合才是有效集合,在现实生活中才有实现的意义,是Man×Woman×Child之子集。
几点说明: 1.R为关系名,n称为关系的目或度(Degree)。 • 当n=1时,称为单元关系。 • 当n=2时,称为二元关系。 • … • 当n=n时,称为n元关系。 • 如上例为二元关系,关系名为T。 2. 关系是笛卡尔积的有限子集,即是一个二维表。 • 行对应一个元组; • 列对应一个域; • 每列的名称成为属性。 3. n目关系必有n个属性
4、属性、码的概念(P49) 候选键与关键字 • 能唯一标识关系中元组的属性或属性集,称该为候选键(Candidate Key),也称候选关键字或候选码。如: • “学生关系”中的学号能唯一标识每一个学生,则属性学号是学生关系的候选键。 • 在“选课关系”中,只有属性的组合“学号+课程号”才能唯一地区分每一条选课记录,则属性集“学号+课程号”是选课关系的候选键。
4、属性、码的概念(P49) Cont.01 • 如果一个关系中有多个候选键,可以从中选择一个作为查询、插入或删除元组的操作变量,被选用的候选键称为主关系键(Primary Key),或简称为主键、主码、关系键、关键字。 • 例如,假设在学生关系中没有重名的学生,则“学号”和“姓名”都可作为学生关系的候选键。如果选定“学号”作为数据操作的依据,则“学号”为主关系键。 • 主关系键是关系模型中的一个重要概念。每个关系必需选择一个主关系键,选定以后,不能随意改变。 • 每个关系必定有且仅有一个主关系键,因为关系的元组无重复,至少关系的所有属性的组合可作为主关系键,通常用较小的属性组合作为主关系键。
4、属性、码的概念(P49) Cont.02 主属性与非码属性 • 主属性(Prime Attribute):包含在任何一个候选码中的的各属性称为主属性。 • 非码属性(Non-Prime Attribute):不包含在任何候选码中的属性称为非码属性,或非主属性(Non-key Attribute)。 • 在最简单的情况下,一个候选码只包含一个属性,如学生关系中的“学号”,教师关系中的“教师号”。 • 在最极终端的情况下,所有属性的组合是关系的候选码,这时称为全码(all-key)。
4、属性、码的概念(P49) Cont.03 • 下面是一个全码的例子: • 假设有教师、课程、参考书关系TCB,分别有三个属性教师号(T)、课程号(C)和参考书号(B)。一个教师可以讲授多门课程;一门课程可以为多个教师讲授,他们使用相同的一套参考书;同样每种参考书可以供多门课程使用。
5. 关系的类型与性质:(P50) 1)关系的类型 2)基本关系的性质
1)关系的类型 关系可以有三种类型,具体如下---- l基本关系(通常又称为基本表或基表):基本表是实际存在的表,它是实际存储数据的逻辑表示。 l查询表:查询查询结果对应的表。 l视图表:视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。
2)基本关系的性质 u列是同质的,即每一列的分量是同一类型的数据,来自同一个域。 u不同的列可出自同一个域,称其中的每一个列为一个属性,不同的属性要给予不同的属性名。 u列的顺序无所谓,即列的次序可以任意交换。 u任意两个元组不能完全相同。 u行的次序无所谓,即行的次序可以任意交换。 u 分量必须取原子值,即每一个分量都必须是不可分的数据项。
2)基本关系的性质 Cont.01 • 尽管关系与二维表格、传统的数据文件是非常类似的,但它们之间又有重要的区别。 • 严格地说,关系是规范化了的二维表中行的集合,为了使相应的数据操作简化,在关系模型中,对关系作了种种限制,关系具有如下特性: (1)关系中不允许出现相同的元组。因为数学上集合中没有相同的元素,而关系是元组的集合,所以作为集合元素的元组应该是唯一的。 (2)关系中元组的顺序(即行序)是无关紧要的,在一个关系中可以任意交换两行的次序。因为集合中的元素是无序的,所以作为集合元素的元组也是无序的。根据关系的这个性质,可以改变元组的顺序使其具有某种排序,然后按照顺序查询数据,可以提高查询速度。
性别 姓名 姓名 性别 男 李力 李力 男 王平 女 女 王平 男 刘伟 男 刘伟 T1 2)基本关系的性质 Cont.02 (3)关系中属性的顺序是无关紧要的,即列的顺序可以任意交换。交换时,应连同属性名一起交换,否则将得到不同的关系。 • 例如:关系T1作如下交换时,无任何影响,如下表所示:
姓名 性别 男 李力 女 王平 男 刘伟 2)基本关系的性质 Cont.03 而作如下交换时,不交换属性名,只交换属性列中的值,则得到不同的关系,如下表:
姓名 职业 兼职 张强 教师 辅导员 王丽 工人 教师 刘宁 教师 辅导员 2)基本关系的性质 Cont.04 (4)同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。 (5)关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可以取自同一个域。 例如,有如下表中关系,职业与兼职是两个不同的属性,但它们取自同一个域职业={教师,工人,辅导员}。
2)基本关系的性质 Cont.05 (6)关系中每一分量必须是不可分的数据项,或者说所有属性值都是原子的,即是一个确定的值,而不是值的集合,即不可“表中有表”。满足此条件的关系称为规范化关系,否则称为非规范化关系。 例如:在表2.8中,籍贯含有省、市/县两项,出现了“表中有表”的现象,则为非规范化关系,而把籍贯分成省、市/县两列,将其规范化,如表2.9所示。 表2.8 表2.9
§2.2.2 关系模式 数据库中要区分型、值。 - 在关系数据库中,关系模式是型,关系是值。 关系模式:对关系的描述。是关系的框架,或称为表框架。它应该: • 指出关系由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系 • 刻画关系必须满足的完整性约束条件 形式化描述为: R(U,D,dom,F) 其中: R:关系名U:组成该关系的属性名集合 D:为属性组u中属性所来自的域 dom:为属性向域的映象集合 F:为属性间数据的依赖关系
§2.2.2 关系模式 Cont.01 关系名 属性名 关系模式 • 关系模式通常可以简记为:R(A1, A2, …, An)。 而域名及属性向域的映象常常直接说明为属性的类型、长度。 • 关系模式是静态的、稳定的; • 关系是关系模式在某一时刻的状态或内容,动态的、随时间不断变化的。
§2.2.3 关系数据库(P52) (在一个给定的应用领域中,所有实体及实体间联系的关系的集合构成一个关系数据库) 关系模式的集合==关系数据库的描述==关系数据库的型(也可称为数据库的内含(Intention),包括关系各属性定义及在相应域中的映象。 关系数据库的“型”是稳定不变的。 关系数据库的“值”(或叫数据库的外延Extention)是关系模式在某一时刻对应的关系的集合。(通常称为----关系数据库) • 随时间而变化 • 元组的插入、更新、删除
§2.2.3 关系数据库 Cont.01 关系数据库模式是一组关系模式的集合,是对关系数据库结构的描述,或者说是对关系数据库框架的描述,也称为关系数据库的型。 与关系数据库模式对应的数据库中的当前值,就是关系数据库的内容,称为关系数据库的实例。 例如,在教学数据库中,共有五个关系,其关系模式分别为: • 学生(学号,姓名,性别,年龄,系别) • 教师(教师号,姓名,性别,年龄,系别) • 课程(课程号,课程名,课时) • 选课(学号,课程号,成绩) • 授课(教师号,课程号)
S1 赵亦 女 17 计算机 S2 钱尔 男 18 信息 S3 孙珊 女 20 信息 S4 李思 男 21 自动化 S5 周武 男 19 计算机 S6 吴丽 女 20 自动化 §2.2.3 关系数据库 Cont.02 • 在每个关系中,又有其相应的数据库的实例 • 例如:与学生关系模式对应的数据库中的实例有如下6个元组:
实体完整性 参照完整性 必须满足的完整性约束条件(即:关系的两个不变性) DBMS自动支持 用户定义完整性 体现了具体领域的语义约束 §2.3 关系的完整性(P52-P55) 本质:关系模型的完整性规则,是对关系的某种约束条件。 背景:为了维护数据库中数据与现实世界的一致性,对关系数据库的插入、删除和修改操作必须有一定的约束条件,这就是关系模型的三类完整性。 分类:关系模型中有三类完整性约束:
一、实体完整性(Entity Integrity P53) • 实体完整性是指主键的值不能为空或部分为空。 • 关系模型中的一个元组对应一个实体,一个关系则对应一个实体集。 • 例如,一条学生记录对应着一个学生,学生关系对应着学生的集合。 • 规则(实体完整性规则):若属性A是基本关系R的主码中的属性,则属性A不能取空值。 • 实体完整性是针对基本关系的。
均不为空 实体完整性实例 例如:设备库 Equipment(*设备编号,设备名称,规格型号…) SBBH SBMC GGXH 另如:学生基本信息 学号 姓名 出生日期 出生地 民族 Student( *Sno, Sname, CSRQ, CSD, MZ, … 再如:选课信息 学号 课程号 成绩 SG(*Sno, *Cno, CJ,…)
对实体完整性规则说明 ①实体完整性是针对基本关系而言的。一个基本关系对应现实世界的一个实体集。实体-实体间的联系 ② 现实世界中实体是可区分的,即它们可以具有某种唯一性标识。 ③ 关系模型中的主码作为唯一性标识。 ④ 主码中的属性即主属性不能取空值(空值就是不知道或无意义的值),不是空字符串或0。 如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与②矛盾。
引用返回 二、 参照完整性(Referential IntegrityP53): • 现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。 • 例1: 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) • 例2: 学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选课(学号,课程号,成绩) • 例3: 学生2(学号,姓名,性别,专业号,年龄,班长)
定义2.5设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign key),并称基本关系R为参照关系(Referencing relation),基本关系S为被参照关系(Referenced relation)或目标关系(Target relation)。 • 关系R和S不一定是不同的关系。 例如: 学生:S(* SNO,SNAME,SEX,DPNO ……) 系部:D(* DPNO,DNAME,TEL,LEADER……) • DPNO在S表中就是一个属性; • 而DPNO在D表中则是主码。
二、 参照完整性 Cont.01 • 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: (1)或者取空值(F的每个属性值均为空值); (2)或者等于S中某个元组的主码值。 • 如图2.2所示,学生关系中某个学生(如s1或s2)“系别”的取值,必须在参照的系别关系中主关系键“系别”的值中能够找到,否则表示把该学生分配到一个不存在的部门中,显然不符合语义。 • 如果某个学生(如s11)“系别”取空值,则表示该学生尚未分配到任何一个系。否则,它只能取专业关系中某个元组的专业号值。
二、 参照完整性 Cont.02 S(学生关系) D(系别关系) “管理”在系别关系中不存在,表示把该学生分配到一个不存在的部门中,显然不符合语义 取空值,则表示该学生尚未分配到任何一个系 图2.2 学生表和系别表
二、 参照完整性 Cont.03 • 在例2中,如果按照参照完整性规则,选课关系中的外部关系键“学号”和“课程号”可以取空值或者取被参照关系中已经存在的值。但由于“学号”和“课程号”是选课关系中主属性,根据实体完整性规则,两个属性都不能为空。所以选课关系中的外部关系键“学号”和“课程号”中能取被参照关系中已经存在的值。 • 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作关系的两个不变性。任何关系数据库系统都应该支持这两类完整性。 • 除此之外,不同的关系数据库系统由于应用环境的不同,往往还需要一些特殊的约束条件,这就是用户定义完整性。
学生关系 参照关系 专业号 专业关系 被参照关系 例4 :(P54) 等价于
学生 关系 课程 关系 学号 课程号 选修 关系 例5:(P54) 等价于
班长 学生关系 例6:(P54) 同一关系属性间也能存在引用关系。 “班长”属性与本身的主码“学号”属性相对应,因此“班长”是外码。这里,学生关系既是参照关系也是被参照关系。 学生(*学号,姓名,性别,专业号,年龄,班长) 等价于
三、用户定义的完整性(User-defined Integrity P55) • 根据具体的应用环境,往往需要一些特殊的约束条件。----需要由用户定义。 • 此规则反映----某一具体应用所涉及的数据必须满足的语义要求。 • 例如:某个属性的取值,结合具体应用,必须满足以下语义要求: u某个属性的取值必须取唯一值; u某些属性值之间必须满足一定的函数关系; u某个属性的取值范围在[a,b]区间之间等。 例如,属性值根据实际需要,要具备一些约束条件,如选课关系中成绩不能为负数。 u某些数据的输入格式要有一些限制等。 • 关系模型应该提供定义和检验这类完整性的机制,以便用统一的、系统的方法处理它们,而不要由应用程序承担这一功能。
§2.4 关系代数(P55-P64) • 关系模型与其他模型相比,最有特色的是它的数据库语言。 • 这种语言灵活方便、表达能力和功能都很强。 • 目前关系数据库所使用的语言一般都具有定义、查询、更新和控制一体化的特点,而查询是最主要的部分。 • 所以说,关系数据库的核心部分是查询,故又称为查询语言,而查询的条件要使用关系运算表达式来表示。 • 因此,关系运算是设计关系数据语言的基础。 • 按表达查询的方法不同,关系运算可分为关系代数和关系演算两大类。
§2.4 关系代数 Cont.01 定义:关系代数 n是一种抽象的查询语言; n是关系操纵语言的一种传统表达方式; n是用对关系的运算来表达查询。 §2.4.1 关系代数的分类及其运算符 §2.4.2 传统的集合运算(P56-P57) §2.4.3 专门的关系运算(P58-P64)