第2章关系数据库_第1页
第2章关系数据库_第2页
第2章关系数据库_第3页
第2章关系数据库_第4页
第2章关系数据库_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章关系数据库 2 1关系数据模型概述2 2关系模型的数据结构2 3关系模型的完整性2 4关系代数2 5关系演算 本章提示本章以关系模型的三要素 数据结构 完整性约束和数据操作 为线索 对关系模型加以论述 首先讲述关系模型的数据结构的定义 关系的码以及关系的性质 其次 讲述关系数据库的三类完整性约束 实体完整性 参照完整性和用户定义的完整性 最后介绍关系模型的数据操作 分别用关系代数和关系演算来描述 2 1关系模型概述 IBM公司E F Codd首次系统得提出关系模型理论 大型共享数据的关系模型 ARelationModelofDataforLargeSharedDataBanks 1977年IBM公司研制的关系数据库的代表SystemR加州大学伯克利分校研制了INGRES关系数据库20世纪80年代以来 计算机厂商新推出的数据库管理系统几乎都支持关系模型 非关系系统的产品也都加上了关系接口 1979年oracleV2 1983年IBMDB2 1984年sysbase1989年MS SQLserver 数据模型3个要素 关系数据结构 关系操作集合 关系完整性约束 2 2关系模型的数据结构 一 关系的定义在关系模型中 数据是以二维表的形式存在的 这个二维表就叫做关系 关系理论是以集合代数理论为基础的 因此 我们可以用集合代数给出二维表的 关系 定义 为了从集合论的角度给出关系的定义 我们先引入域和笛卡尔积的概念 域是一组具有相同数据类型的值的集合 用D表示 例如整数 实数 字符串的集合 域中所包含的值的个数称为域的基数 用m表示 关系中用域表示属性的取值范围 例如 D1 李力 王平 刘伟 m1 3D2 男 女 m2 2D3 47 28 30 m3 3其中 D1 D2 D3为域名 分别表示教师关系中姓名 性别 年龄的集合 域名无排列次序 如D2 男 女 女 男 1 域 Domain 给定一组域D1 D2 Dn 它们可以包含相同的元素 即可以完全不同 也可以部分或全部相同 D1 D2 Dn的笛卡尔积为D1 D2 Dn d1 d2 dn di Di i 1 2 n 由定义可以看出 笛卡尔积是一个集合 其中 元素中的每一个di叫做一个分量 Component 来自相应的域 di Di 每一个元素 d1 d2 d3 dn 叫做一个n元组 n tuple 简称元组 Tuple 2 笛卡尔积 CartesianProduct 例如 D1 0 1 D2 a b c D1 D2 0 a 0 b 0 c 1 a 1 b 1 c 笛卡尔积的基数 若Di i 1 2 n 为有限集 Di中的集合元素个数称为Di的基数 用mi i 1 2 n 表示 则笛卡尔积D1 D2 Dn的基数M 即元素 d1 d2 dn 的个数 为所有域的基数的累乘之积 即 M 例如 D1 李力 王云 刘伟 D2 男 女 D1 D2 李力 男 李力 女 王云 男 王云 女 刘伟 男 刘伟 女 其中 李力 王云 刘伟 男 女都是分量 李力 男 李力 女 等是元组 笛卡尔积的基数M m1 m2 3 2 6 即元组的个数为6 笛卡尔积可用二维表的形式表示 例如 上述的6个元组可表示成一张二维表 表2 1 由上例可以看出 笛卡尔积实际是一个二维表 表的框架由域构成 表的任意一行就是一个元组 表中的每一列来自同一域 如第一列的分量来自D1 第二列的分量来自D2 笛卡尔积D1 D2 Dn的任一个有意义的子集称为定义在域D1 D2 Dn上的n元关系 Relation 可用R D1 D2 Dn 表示 如上例D1 D2笛卡尔积的子集可以构成教师关系T1 姓名 性别 如下表 3 关系 Relation 在R D1 D2 Dn 中 R为关系名 n称为关系的目或度 Degree 当n 1时 称为单元 unaryrelation 关系 当n 2时 称为二元 Binaryrelation 关系 当n n时 称为n元关系 如上例为二元关系 关系名为T1 关系模型的结构 Attribute属性 Tuple元组 Relation关系 表结构 二维表 行 列 1 候选码能唯一标识关系中元组的属性或属性组 称为该关系的候选码 CandidateKey 如 学生关系 中的学号能唯一标识每一个学生 则属性 学号 是学生关系的候选码 在 选课关系 中 只有属性的组合 学号 课程号 才能唯一地区分每一条选课记录 则属性集 学号 课程号 是选课关系的候选码 二 关系的候选码 设关系R有属性A1 A2 An 其属性子集K Ai Aj Ak 当且仅当满足下列条件时 K被称为候选码 唯一性 Uniqueness 关系R的任意两个不同元组 其属性集K的值是不同的 最小性 Minimally 组成关系键的属性集 Ai Aj Ak 中 任一属性都不能从属性集K中删掉 否则将破坏唯一性的性质 例如 学生关系 中的每个学生的学号是唯一的 选课关系 中 学号 课程号 的组合也是唯一的 对于属性集 学号 课程号 去掉任一属性 都无法唯一标识选课记录 下面给出候选码的形式化定义 如果一个关系中有多个候选码 可以从中选择一个作为查询 插入或删除元组的操作变量 被选用的候选码称为主码 PrimaryKey 例如 假设在学生关系中没有重名的学生 则 学号 和 姓名 都可作为学生关系的候选码 如果选定 学号 作为数据操作的依据 则 学号 为主码 主码是关系模型中的一个重要概念 每个关系必需选择一个主码 选定以后 不能随意改变 每个关系必定有且仅有一个主码 2 主码 主属性 PrimeAttribute 包含在侯选码中的的各属性称为主属性 如 成绩表 学号 课程号 成绩 中 学号 课程号 为主码 则学号或课程号是主属性 非主属性 Non PrimeAttribute 不包含在任何候选码中的属性称为非主属性 如 学生选课成绩表中 成绩是非主属性 3 主属性与非主属性 非码属性 在一个关系中 所有属性的组合是关系的候选码 称为全码 all key 即关系中的所有属性合起来才能唯一确定一个元组 例如 教材表 书名 出版社 作者 版次 只有四个属性合起来才能确定一本教材 即 书名 出版社 作者 版次 合起来构成这个关系的全码 假设有教师授课关系TCS 分别有三个属性教师 T 课程 C 和学生 S 一个教师可以讲授多门课程 一门课程可以为多个教师讲授 同样一个学生可以选听多门课程 一门课程可以为多个学生选听 在这种情况下 T C S三者之间是多对多关系 这三个属性的组合是关系TCS的候选码 称为全码 T C S都是主属性 4 全码 尽管关系与二维表格 传统的数据文件是非常类似的 但它们之间又有重要的区别 严格地说 关系是一种规范化了的二维表中行的集合 为了使相应的数据操作简化 在关系模型中 对关系作了种种限制 关系具有如下特性 列是同质的不同的列可出自统一个域列的顺序无所谓任意两个元组的候选码不能相同行的顺序无所谓分量必须取原子值 三 关系的性质 1 关系模式我们把对关系的描述称为关系模式 可形式化的表示为 R U D DOM F 其中 R为关系名 U为由A1 A2 An组成的关系R的属性集合 D为属性组U中各属性来自的域 DOM为属性向域的映象集合 如 DOM 教师姓名 姓名 F为属性间的数据依赖集合 四 关系模式与关系数据库模式 由定义可以看出 关系模式是关系的框架 或者称为表框架 指出了关系由哪些属性构成 是对关系结构的描述 即关系的型 关系模式在某一时刻的状态或内容 是关系的值 关系模式通常简记为R U 或R A1 A2 An 其中 R为关系名 A1 A2 An为属性名 一组关系模式的集合叫做关系数据库模式 关系数据库模式是对关系数据库结构的描述 或者说是对关系数据库框架的描述 可以看作是关系数据库的型 与关系数据库模式对应的数据库中的当前值就是关系数据库的内容 称为关系数据库的实例 可以看作是关系数据库的值 例如 在教学数据库中 共有五个关系 其关系模式分别为 它们合起来构成数据库模式 学生 学号 姓名 性别 年龄 系别 教师 教师号 姓名 性别 年龄 系别 课程 课程号 课程名 课时 选课 学号 课程号 成绩 授课 教师号 课程号 2 关系数据库模式 在每个关系中 又有其相应的数据库的实例 例如 与学生关系模式对应的数据库中的实例有如下6个元组 即关系的值 由此可见 关系数据库也有型和值的概念 其型就是关系数据库模式 相对固定 其值就是关系数据库内容 代表现实世界中的实体 而实体是随着时间不断变化的 所以其值在不同的时刻会有所变化 例如 教学数据库是五个关系的集合 或者说是五个关系型和值的集合 其中 各个关系型相对固定 而关系值会随时间而变化 比如 学生和教师的年龄随时间而增长 教师的工资和岗位津贴也会发生变化 因为关系是由关系的型和关系的值组成的 所以关系数据库也可以看作是一组关系型和关系值的集合 2 2关系操作 基本的关系操作选择 select 投影 project 连接 join 除 divide 并 union 差 except 交 intersection 笛卡尔积 CartesionProduct 2 关系数据语言的分类 关系代数 关系演算 元组关系 域关系 具有以上两个双重特点的语言 SQL 关系语言是高度非过程化的语言 存取路径的选择由RDBMS的优化机制来完成 为了维护数据库中数据与现实世界的一致性 对关系数据库的插入 删除和修改操作必须有一定的约束条件 这就是关系模型的三类完整性 实体完整性参照完整性用户定义的完整性 2 3关系模型的完整性 一 实体完整性 EntityIntegrity 规则1 实体完整性是指主属性的值不能为空 关系模型中的一个元组对应一个实体 一个关系则对应一个实体集 例如 一条学生记录对应着一个学生 学生关系对应着学生的集合 现实世界中的实体是可区分的 即它们具有某种唯一性标识 与此相对应 关系模型中以唯一标识元组 例如 学生关系中的属性 学号 可以唯一标识一个元组 也可以唯一标识学生实体 如果主属性为空或部分为空 则不符合候选码的定义条件 不能唯一标识元组及与其相对应的实体 这就说明存在不可区分的实体 从而与现实世界中的实体是可以区分的事实相矛盾 因此主属性不能为空或部分为空 例如 学生关系中的主码 学号 不能为空 选课关系中的主码 学号 课程号 不能为空 即 学号 和 课程号 两个属性都不能为空 1 外码设F是基本关系R的一个或一组属性 但不是关系R的码 如果F与基本关系S的主码Ks相对应 则称F是基本关系R的外码 基本关系R称为参照关系 ReferencingRelation 基本关系S称为被参照关系 ReferencedRelation 或目标关系 TargetRelation 二 参照完整性 Referentialintegrity 例1 假设在下图所示的S表和D表中 都包含属性系别 DEPT 系别 DEPT 是D表的主码 而 系别 并不是S表的主码 所以 系别 是S表的外码 S 学生关系 D 系别关系 例2 学生 课程 学生与课程之间的多对多联系学生 学号 姓名 性别 专业号 年龄 课程 课程号 课程名 学分 选修 学号 课程号 成绩 在选课关系SC 学号 课程号 成绩 中的 学号 属性与学生关系S的主码 学号 相对应 课程号 属性与课程关系C的主码 课程号 相对应 因此 学号 和 课程号 属性是选课关系的外码 学生关系和课程关系为被参照关系 选课关系为参照关系 学生 学生选课 课程 需要说明的是 被参照关系的主码和参照关系的外码的属性名可以相同 也可以不同 但必须定义在同一个域上 如选课关系中的 学号 与学生关系的主码 学号 定义在同一个域上 课程号 属性与课程关系的主码 课程号 定义在同一个域上 规则2 若属性 或属性组 F是基本关系R的外码它与基本关系S的主码Ks相对应 基本关系R和S不一定是不同的关系 则对于R中每个元组在F上的值必须为 或者取空值 F的每个属性值均为空值 或者等于S中某个元组的主码值 在系别关系中的属性 系别 是学生关系外码 如下图所示 学生关系中某个学生 如s1或s2 系别 的取值 必须在参照的系别关系中主码 系别 的值中能够找到 否则表示把该学生分配到一个不存在的部门中 显然不符合语义 如果某个学生 如s11 系别 取空值 则表示该学生尚未分配到任何一个系 否则 它只能取专业关系中某个元组的专业号值 S 学生关系 D 系别关系 参照关系和被参照关系为同一关系 例3 学生 学号 姓名 性别 专业号 年龄 班长 班长 属性值可以取两类值 1 空值 表示该学生所在班级尚未选出班长 或该学生本人即是班长 2 非空值 这时该值必须是本关系中某个元组的学号值 用户定义完整性是针对某一具体关系数据库的约束条件 它反映某一具体应用所涉及的数据必须满足的语义要求 例如 属性值根据实际需要 要具备一些约束条件 如选课关系中成绩不能为负数 某些数据的输入格式要有一些限制等关系模型应该提供定义和检验这类完整性的机制 以便用统一的 系统的方法处理它们 而不要由应用程序承担这一功能 课程 课程号 课程名 学分 课程名 属性必须取唯一值非主属性 课程名 也不能取空值 学分 属性只能取值 1 2 3 4 三 用户定义完整性 User definedIntegrity 关系模型与其它数据模型相比 最有特色的是它的数据库语言 这种语言灵活方便 表达能力和功能都很强 目前关系数据库所使用的语言一般都具有数据定义 查询 更新和控制功能一体化的特点 而查询是最主要的功能 所以说 关系数据库的核心部分是查询 故又称为查询语言 而查询的条件要使用关系运算表达式来表示 因此 关系运算是设计关系数据语言的基础 根据运算对象的不同 关系运算可分为关系代数和关系演算两大类 2 4关系代数 关系代数是对关系进行集合代数运算 是基于关系代数的操作语言 称为关系代数语言 简称关系代数 它是由IBM在一个实验性的系统上实现的 称为ISBL InformationSystemBaseLanguage 语言 ISBL的每个语句都类似于一个关系代数表达式 一 关系代数的运算 符 及其分类 1 集合运算符 并 交 差 广义笛卡尔积 2 专门的关系运算符 选择 投影 连接 除 3 算术比较运算符 大于 大于等于 小于 小于等于 等于 不等于 4 逻辑运算符 与 或 非 关系代数的运算对象是关系 运算结果也是关系 关系代数用到的运算符主要包括四类 传统的集合运算 把关系看成元组的集合 以元组作为集合中元素来进行运算 其运算是从关系的 水平 方向即行的角度进行的 包括并 差 交和笛卡尔积等运算 专门的关系运算 不仅涉及行运算 也涉及列运算 这种运算是为数据库的应用而引进的特殊运算 包括选择 投影 连接和除法等运算 关系代数的运算按运算符的不同主要分为两类 对两个关系的传统的集合运算是二目运算 是在两个关系中进行的 但是并不是任意的两个关系都能进行这种集合运算 而是要在两个满足一定条件的关系中进行运算 那么 对关系有什么要求呢 下面先看一个定义 定义 设给定两个关系R S 若满足 i 具有相同的度n ii R中第i个属性和S中第i个属性必须来自同一个域 则说关系R S是相容的 除笛卡尔积外 要求参加传统集合运算的关系必须满足上述的相容性定义 1 传统的集合运算 1 并 Union 关系R和关系S的并 记作 R S t t R t S 2 差 Difference 关系R与关系S的差 记作 R S t t R t S 3 交 Intersection 关系R与关系S的交 记作 R S t t R t S 4 广义笛卡尔积 ExtendedCartesianProduct 关系R和关系S的广义笛卡尔积是一个 n m 列的元组的集合 记作 R S tr ts tr R ts S 例3 如 a b 所示的两个关系R与S为相容关系 c 为R与S的并 d 为R与S的交 e 为R与S的差 f 为R与S的广义笛卡尔积 a b RS e R SR S c d R S f R S S R S R 由于传统的集合运算 只是从行的角度进行 而要灵活地实现关系数据库多样的查询操作 必须引入专门的关系运算 在讲专门的关系运算之前 先引入几个概念 设关系模式为R A1 A2 An 它的一个关系实例 值 为R t R表示t是R的一个元组 t Ai 则表示元组t中相应于属性Ai的一个分量 2 专门的关系运算 若A Ai1 Ai2 Aik 其中Ai1 Ai2 Aik是A1 A2 An中的一部分 则A称为属性组 则表示 A1 A2 An 中去掉 Ai1 Ai2 Aik 后剩余的属性组 t A t Ai1 t Ai2 t Aik 表示元组t在属性列A上诸分量的集合 R为n目关系 S为m目关系 tr R ts S tr ts称为元组的连接 concatenation 它是一个n m列的元组 前n个分量为R的一个n元组 后m个分量为S中的一个m元组 给定一个关系R X Z X和Z为属性组 定义当t X x时 x在R中的象集 imageset 为Zx t Z t R t X x 它表示R中的属性组X上值为x的诸元组在Z上分量的集合 Zx a b c j k l 选择运算是单目运算 是根据一定的条件在给定的关系R中选取若干行 元组 组成一个新关系 记作 F R t t R F t True 其中 为选择运算符 F t 为筛选元组的条件 格式为 X1 Y1 X2 Y2 X Y是运算对象 包括属性名 常数或简单函数 比较运算符 如 20所在系 计算机 成绩 80 1 选择 筛选 Selection 以下例题均是以教学数据库的五个关系为例进行运算 教师T 教师号 姓名 性别 年龄 系别 学生S 学号 姓名 性别 年龄 系别 课程C 课程号 课程名 课时 选课SC 学号 课程号 成绩 授课TC 教师号 课程号 选择运算实际上是从关系R中选取使逻辑表达式为真的元组 是从行的角度进行的运算 T 教师表 S 学生表 C 课程表 SC 选课表 TC 授课表 DEPT 计算机 S 或 5 计算机 S 其中 5 为DEPT的属性列序号 结果如图所示 例4 查询计算机系的全体学生 SAL 1000 SEX 男 T 结果如图所示 例5 查询工资高于1000元的男教师 注意 字符型数据的值应该使用单引号括起来 例如 计算机 9601 数字型数据不使用单引号 如25 1000 投影运算也是单目运算 是从关系R中选择出若干属性列 组成新的关系 即对关系在垂直方向进行的运算 从左到右按照指定的若干属性及顺序取出相应列 删去重复元组 记作 A R t A t R 其中 为投影运算符 A为R中的属性列 从其定义可看出 投影运算是从列的角度进行的运算 这正是选择运算和投影运算的区别所在 选取运算是从关系的水平方向上进行运算的 而投影运算则是从关系的垂直方向上进行的 2 投影 Projection TN TNO PROF T 或 2 1 5 T 其中2 1 5分别为TN TNO和PROF的属性列序号 结果右图所示 例6 查询教师的姓名 编号及其职称 说明 投影运算可以改变关系的属性列的次序 DEPT T 结果如右图所示 例7 查询教师关系中有哪些系 说明 由例7可以看出 投影后取消了某些属性列后 就可能出现重复行 应该取消这些完全相同的行 所以投影之后 不但减少了属性 元组也可能减少 新关系与原关系可能会不相容 TNO CNO C5 TC 结果如右图所示 例8 查询讲授C5课程的教师号 分析 本例中选取运算和投影运算相结合 先在授课表中选取满足条件的元组 然后在TNO属性上进行投影 连接运算是二目运算 是从两个关系的笛卡尔积中选取满足连接条件的元组 组成新的关系 设关系R A1 A2 An 及S B1 B2 Bm 连接属性集X包含于 A1 A2 An Y包含于 B1 B2 Bm X与Y中属性列数目相等 且相对应属性有共同的域 关系R和S在连接属性X和Y上的连接 就是以R S笛卡尔积中 选取X属性列上的分量与Y属性列上的分量满足给定比较条件的那些元组 也就是在R S上选取在连接属性X Y上满足条件的子集 组成新的关系 新关系的度为n m 3 连接 Join 记作 R S tr ts tr R ts S tr X ts Y True 其中 是连接运算符 为算术比较运算符 X Y为连接条件 为 时 称为等值连接 为 时 称为大于连接 连接运算为非基本运算 可以用选取运算和广义笛卡尔积运算来表示 R S x y R S x y x y 自然连接是一种特殊的等值连接 它要求两个关系中进行比较的分量必须是相同的属性组 并把在连接结果中重复的属性列去掉 如果R与S具有相同的属性组Y 则自然连接可记作 R S tr ts tr R ts S tr Y ts Y 自然连接是在广义笛卡尔积R S中选出同名属性上符合相等条件元组 再进行投影 去掉重复的同名属性 组成新的关系 在连接运算中 一种最常用的连接是自然连接 a b 例9 如图所示的两个关系R与S c 为R和S的大于连接 C D d 为R和S的等值连接 C D e 为R和S的等值连接 R B S B f 为R和S的自然连接 RS 等值连接 C D R S 大于连接 C D R S c d C D C D 等值连接R S 自然连接R S e f R B S B 等值连接中不要求相等属性值的属性名相同 而自然连接要求相等属性值的属性名必须相同 即两关系只有在同名属性上才能进行自然连接 如上例R中的C列和S中的D列可进行等值连接 但因为属性名不同 不能进行自然连接 等值连接不去掉重复属性列 而自然连接去掉重复属性列 也可以说 自然连接是去掉重复列的等值连接 如上例R中的B列和S中的B列进行等值连接时 结果有两个重复的属性列B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论