数据库-第二章无QBE.ppt_第1页
数据库-第二章无QBE.ppt_第2页
数据库-第二章无QBE.ppt_第3页
数据库-第二章无QBE.ppt_第4页
数据库-第二章无QBE.ppt_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

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

文档简介

数据库系统原理教程DatabaseSystems 关系数据库自从诞生以来 逐渐成为目前最为先进的数据库系统 较有代表性的关系数据库有70年代末IBM公司的SystemR ORACLE公司的ORACLE系统 80年代推出的SQL DS等 80年代以来 先后出现dBASE FOXBASE FOXpro以及VisualFOXpro等系统 极大的推动了关系数据库的发展和完善 2 1关系数据库概述 关系数据库系统是建立在关系模型上的数据库系统 组成 关系数据结构关系操作完整性约束 数据结构两维的扁平表数据操作关系代数关系演算 关系数据模型 数据的完整性实体完整性参照完整性用户定义的完整性 SQL QBE APLHA QUEL ISBL 2 2关系数据结构 关系模型的数据结构非常单一实体及实体间的联系都用关系表示 关系就是一张二维表 关系示例 ExampleofaRelation 1 域 域是一组具有相同数据类型的值的集合 和以前域的概念本质上是一样的 只不过抽象为数据类型 1 关系 例 实数 0 1 定义 给定一组域D1 D2 Dn 这些域中可以有相同的 D1 D2 Dn的笛卡儿积为 D1 D2 Dn d1 d2 dn di Di i 1 2 n 2 笛卡儿积 其中每一个元素 d1 d2 dn 叫做一个n元组或简称元组 元组中的每一个值di叫做一个分量 若Di i 1 2 n 为有限集 其基数为mi i 1 2 n 则D1 D2 Dn的基数M为 例子 D1 SUPERVISOR 张清枚 刘艺D2 SPECIALITY 计算机 信息D3 POSTGRADUATE 李勇 刘晨 王敏 笛卡儿积 D1 D2 D3 张清枚 计算机 李勇 张清枚 计算机 刘晨 张清枚 计算机 王敏 张清枚 信息 李勇 该笛卡儿积的基数为 2 2 3 12 关系 定义 D1 D2 Dn的子集叫做在域D1 D2 Dn上的关系表示 R D1 D2 Dn D1 D2 Dn表示的是域上所有可能的组合 很多元组是无意义的数据 关系包含在D1 D2 Dn之中 把关系定义为D1 D2 Dn的子集 这里R表示关系的名字 n是关系的目和度 关系中的每个元素是关系中的元组 通常用t表示 当n 1时 称该关系为单元关系 当n 2时 称该关系为二元关系 关系是笛卡儿积的有限子集 所以关系也是一个二维表 表的每行对应一个元组 表的每列对应一个域 由于域可以相同 为了加以区分 必须对每列起一个名字 称为属性 n目关系必有n个属性 例 设D1 0 1 D2 a b c 则D1 D2 0 a 0 b 0 c 1 a 1 b 1 c R 0 b 0 c 1 a 1 b 属性类型 每个关系的属性都有一个名称 各属性的取值范围集称为属性的域 属性的值通常要求是原子性的 即不能分割 例如 多值属性可以不是原子性的 组合属性值不是原子性的 空值这一特殊的值包含在所有的域中 空值导致了许多操作定义的复杂性 在主体表示中可以先忽略空值 将其放在以后再考虑 码 Keys 如果K是可以唯一R中元组的 则K是超码 它应该可以对任何可能的关系都有这种唯一性 Example customer name customer street and customer name 上述都是客户表中的超码 前提是没有同名的客户存在 如果K是最小的形式 则K是候选码 Example customer name 是客户表中的候选码 因为它既是超码 同时又不可能找到比它更小的集合形式了 假定不允许同名客户存在 在一个关系中 有些属性能唯一的识别元组 但有些属性不具备这种性质 例如 在零件的关系中P PNO PNAME COLOR WEIGHT PNO可以唯一的识别某一个零件 但COLOR就不能 候选码 定义 具有唯一标识关系中元组的属性或最小属性组 称为该关系的候选码 关键字 在一个关系中如果只有一个候选码 那么该候选码就指定为该关系的主码 如果由多个候选码 则可以指定其中任一个为主码 主码的诸属性为主属性 不包含在任何候选码中的属性称为非码属性 最简 只有一个属性最多 关系模式的全部属性组 全码 元组 行 记录 Student sno sname ssex sage sdept 性质 列是同质的 即每一列中的分量是同一类型的数据 来自同一个域 不同的列可以出自同一个域 称其中的每一列为一个属性 不同的属性要给予不同的属性名 列的顺序无所谓 即列的次序可以任意交换 4 任意两个元组不能完全相同 5 行的顺序无所谓 即行的次序可以任意交换 6 分量必须取原子值 即每一个分量都必须是不可分的数据项 关系的描述称为关系模式 表示 R U D dom F 其中 R为关系名 U为组成该关系地属性名集合 D为属性组U中属性所来自的域 dom为属性向域的映象集合 F为属性间数据的依赖关系集合 2 关系模式 RelationSchema 关系模式通常可以简记为 R U 或R A1 A2 AN 域名及属性向域的映象为属性的类型 长度 A1 A2 An是属性R A1 A2 An 是关系模式r R 是关系模式R中的一个关系 关系实例 RelationInstance 关系的当前值 关系实例 用表来表示 r中元素t称为元组 由表中的行表示 数据库 Database 数据库由多个关系组成 企业信息被划分成若干部分 每一部分都存储着部分的信息 例如 E g account 存储帐户信息 depositor 存储客户拥有的帐户的信息 customer 存储客户信息 将所有信息存储在一个关系中会导致一些问题 帐户关系account 储户关系depositor 客户关系customer bank account number balance customer name 信息重复 如 两个客户拥有同一帐户时 需要空值 如 没有帐户的客户 范式理论 第四章 用于设计关系模式 对应于一个关系模型的全部关系的集合称为关系数据库 概括起来一个关系应具备以下特点 关系的每一列具有不同的名称 属性名 关系的每一列具有同一类型的域值关系重任一两行 元组 不能完全相同关系中每一列是不可再分的数据单位关系中行 列的次序可以互换每一个关系有一个唯一的主关键字 3 关系数据库 2 3关系的完整性 关系模型的完整性规则是对关系的某种约束条件 关系模型中可以有三类完整性约束 实体完整性 参照完整性和用户定义的完整性 其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件 被称为是关系的两个不变性 应该由关系系统自动支持 实体完整性规则 若属性A是基本关系R的主属性 则属性A不能取空值 基本关系的所有主属性都不能取空值 而不仅是主码整体不能取空值 例如 学生选课关系 选修 学号 课程号 成绩 中 学号 课程号 为主码 则 学号 和 课程号 都不能取空值 而不是整体不为空 一 实体完整性 实体完整性规则是针对基本关系而言的 一个基本表通常对应现实世界的一个实体集 现实世界中的实体是可区分的 即它们具有某种唯一性标识 关系模型中以主码作为唯一标识 主码中的属性即主属性不能取空值 所谓空值就是 不知道 或 不确定 的值 实体完整性引申 主码不能取重复值 说明 现实世界中的实体之间往往存在某种联系 在关系模型中实体及实体间的联系都是用关系来描述的 这样就自然存在着关系与关系之间的引用 引用的时候 必须取基本表中已经存在的值 由此引出参照的引用规则 二 参照完整性 外码 设F是基本关系R的一个或一组属性 但不是关系R的码 如果F与基本关系S的主码Ks相对应 则称F是基本关系R的外码 ForeignKey 并称基本关系R为参照关系 基本关系S为被参照关系或目标关系 关系R和S不一定是不同的关系 注意 F不能是关系R的主码 Ks必须是关系S的主码 显然 目标关系S的主码Ks和参照关系的外码F必须定义在同一个 或一组 域上 外码并不一定要与相应的主码同名 在实际应用当中 为了便于识别 当外码与相应的主码属于不同的关系时 往往给它们取相同的名字 参照完整性规则就是定义外码与主码之间的引用规则 参照完整性规则 若属性 或属性组 F是基本关系R的外码 它与基本关系S的主码Ks相对应 基本关系R和S不一定是不同的关系 则对于R中每个元组在F上的值必须为 或者取空值 F的每个属性值均为空值 或者等于S中某个元组的主码值 学生 学号 姓名 性别 专业号 年龄 专业 专业号 专业名 学生 学号 姓名 性别 专业号 年龄 专业 专业号 专业名 选修关系 学号 课程号 学生 学号 姓名 性别 专业号 年龄 课程 课程号 课程名 学分 选修 学号 课程号 成绩 学生 学号 姓名 性别 专业号 年龄 课程 课程号 课程名 学分 选修 学号 课程号 成绩 学生2 学号 姓名 性别 专业号 年龄 班长 不同的关系数据库系统根据其应用环境的不同 往往还需要一些特殊的约束条件 用户定义的完整性就是针对某一具体关系数据库的约束条件 例如 成绩的取值必须在0 100之间 三 用户定义的完整性 一体化一般关系系统的数据语言都同时具有数据定义 数据操纵和数据控制语言 而不是分为几个语言 对象单一 都是关系 因此操作符也单一 关系数据语言的特点 非过程化用户只需提出 做什么 无须说明 怎么做 存取路径的选择和操作过程由系统自动完成面向集合的存取方式操作对象是一个或多个关系 结果是一个新的关系 一次一关系 非关系系统是一次一记录的方式 关系数据语言概述 抽象的查询语言关系代数用对关系的运算来表达查询 需要指明所用操作关系演算用谓词来表达查询 只需描述所需信息的特性元组关系演算谓词变元的基本对象是元组变量域关系演算谓词变元的基本对象是域变量 关系代数是以关系作为运算对象的一组特定的运算 用户通过这组运算 对一个或多个关系不断地进行 组合 或 分割 从而得到所需要的数据集合 2 4关系代数 RelationalAlgebra 过程化语言 Procedurallanguage 基本操作 basicoperators 选择 select 投影 project 集合差 setdifference 笛卡尔积 Cartesianproduct 重命名 rename 操作以二个或多个关系为输入 结果是一个新的关系 关系代数运算汇总 基本运算一元运算选择 投影 重命名多元运算笛卡儿积 并 集合差其它运算集合交 自然连接 除修改操作插入 删除 更新 给定关系模式R A1 A2 An 设R是它的一个具体的关系 t R是关系的一个元组分量设t R 则t Ai 表示元组t中相应于属性Ai的一个分量属性列Ai Ai1 Ai2 Aik A1 A2 An 称Ai为属性列Ai表示 A1 A2 An 中去掉Ai后剩余的属性组t Ai t Ai1 t Ai2 t Aik 基本概念 设R和S为同类关系 则R和S的并运算是由属于R和S的元素组成的新关系 它与R和S是同类关系 即它的属性名及其排列完全和R S一样 记为R S 并运算 所有至少出现在两个关系中之一的元组集合R S r r R r S 两个关系R和S若进行并运算 则它们必须是相容的 关系R和S必须是同元的 即它们的属性数目必须相同 对 i R的第i个属性的域必须和S的第i个属性的域相同 并操作成立的要求 1 r s必须是同元的 属性数目相同 2 属性域兼容 对任意的i r的第i列与s的第i列必须具有相同域即有相同类型的值 例如 找出有帐户或者有贷款的所有客户 customer name depositor customer name borrower 设R和S为同类关系 则R和S的交运算是同属于R和S的元组集 记为R S 显然 R S与R S为同类关系 交运算 所有同时出现在两个关系中的元组集合R S r r R r S 交运算可以通过差运算来重写R S R R S 设R和S为同类关系 则R和S的差是由属于R而不属于S的所有元组组成的集合 记为R S R S与R S为同类关系 差运算 所有出现在一个关系而不在另一关系中的元组集合R S r r R r S 设R为m元关系 T为n元关系 则R和T的笛卡尔积R T是一个 m n 元组集合 其中元组的前m个分量是T的一个元组 后n个分量是T的一个元组 则R T共有mn个元组 笛卡尔积 元组的连接 Concatenation 若元组r r1 rn s s1 sm 则定义r与s的连接为 定义两个关系R S 其度分别为n m 则它们的笛卡尔积是所有这样的元组集合 元组的前n个分量是R中的一个元组 后m个分量是S中的一个元组R S的度为R与S的度之和 R S的元组个数为R和S的元组个数的乘积 由于相同的属性可能同时出现在R和T中 需要提出一个命名机制来区别这些属性 采用 在属性上附加该属性所来自的关系名称例 r borrower loan的关系模式为 borrower customer name borrower loan number loan branch name loan loan number loan account 对那些只在两个关系模式之一出现的属性 省略关系名前缀 无歧义 customer name borrower loan number branch name loan loan number account 贷款信息关系loan 例子 借款关系borrower 例子 上述命名规则规定 作为笛卡儿积运算参数的关系名必须不同 这一规定有时会带来问题 例如 某个关系需要与自身做笛卡儿积另外在笛卡儿积中使用关系代数表达式的结果时也会产生类似的问题 因为必须给关系一个名字以引用其属性 通过更名运算避免这样的问题 后面介绍 其运算结果是一个新的关系 选择运算 在关系R中选择满足给定条件的元组 从行的角度 F R t t R F t 真 F是选择条件 t R F t 要么为真 要么为假 专门的关系运算 记作 F R F称为选取谓词 Definedas F R t t RandF t 其中F是命题演算公式 可以由与 或 非连接各公式项 and or not 选取示例 branch name Perryridge account 每一项的形式可以下面中的一种 op或其中op是比较操作符 whereopisoneof Sdept IS S 或 5 IS S Sage 20 Ssex male S 投影运算是从一个现有的关系中选取某些属性 并可对这些属性重新排序 最后从得出的结果中删除重复的元组 而得到一个新的关系 记作 属性名1 属性名2 关系名 它表示在指定的关系上对指定的属性进行投影操作 投影运算 A1 A2 Ak R 从关系R中取若干列组成新的关系 从列的角度 A R t A t R A R投影的结果中要去掉相同的行 记作 A1 A2 Ak R 其中A是属性名 R是关系名 结果是包含K个列的关系 其它的列被删除了 由于关系是集合 故结果中消除了重复的行 例如 消除了属性 部门名 的帐户如下 account number balance account 取消重复的行 给出所有学生的姓名和年龄找001号学生所选修的课程号 Sname Sage S 2 4 S Cno Sno 001 SC S Sno Sname Ssex Sage Sdept SC Cno Sno Grage 设R和S分别为m元和n元关系 R在第i列和S在第j列上的 连接记为RS 其中 是关系比较符 连接成一个新的关系 根据 分别为 时称为等值 小于和大于连接等 连接运算 连接 从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组 A B为R和S上度数相等且可比的属性列 为算术比较符 为等号时称为等值连接 在连接运算中一种特殊的等值连接用处最大 称为自然连接 记作RS 它的运算过程为 计算R S的笛卡尔积 挑选R和S中相同属性名中具有相等值的元组 去除重复属性 形成新的关系 自然连接 从两个关系的广义笛卡儿积中选取在相同属性列B上取值相等的元组 并去掉重复的行 自然连接与等值连接的不同自然连接中相等的分量必须是相同的属性组 并且要在结果中去掉重复的属性 而等值连接则不必 当R与S无相同属性时 RS R S 示例 求001号学生所在系的名称 Dname Sno 001 S DEPT DEPT DnameDnoMaster 除运算 如何得到选修了全部课程的学生 S Sno Sname Ssex Sage Sdept S C Cno Sno Grage C Cno Cname Cpno Credit 做法 逐个考虑选课关系S C中的元组r 求r在学号Sno上的分量x 再求x在选课关系中的象集课程Cx 若Cx包含了所有的课程C 则x是满足条件的一个元组 x x r Sno r S C Cx C 选修全部课程的学生 全部课程 x同学所选修的全部课程 应用 对于全部的 所有的 除操作是同时从行和列的角度进行运算 关系R X Z X Z是属性组 x是X上的取值 t x 定义x在R中的象集为Zx t Z t R t X x 从R中选出在X上取值为x的元组 去掉X上的分量 只留Z上的分量 XZ 张军同学所选修的全部课程 x 张军 Zx 象集 ImageSet 没有选修全部课程的学生 所有学生选修全部课程 选修了全部课程的学生 对应操作 除定义R X Y S Y t X t R Yx y S 说明 Yx y tr R y tr Y x tr X Yx为x在R中的象集x tr X 即Yx为属性X取值x时 相应的Y值的集合 R AB R S AB R CD S AB R CD S R R S 求同时选修了001和002号课程的学生号 方案2 SNO SC CNO CNO 001 CNO 002 C 方案1 SNO CNO SC CNO CNO 001 CNO 002 C 求选修了001号或002号课程的学生号方案1 Sno Cno 001 Cno 002 SC 方案2 Sno Cno 001 SC Sno Cno 002 SC 集合运算的应用 并 差运算 求选修了001号而没有选002号课程的学生号 Sno Cno 001 Cno 002 S C Sno Cno 001 S C Sno Cno 002 S C 交 求同时选修了001号和002号课程的学生号 Sno Cno 001 Cno 002 S C 正确的写法 Sno Cno 001 SC Sno Cno 002 SC 改名 对关系R实施改名运算 可显式地改变关系名及属性名将关系R改名为S s R 将关系R B1 B2 Bn 改名S A1 A2 An S A1 A2 An R 查询中的复合运算 s sno s sname s sage stu sno 95001 ands sage stu sage s student stu student 比较 例题 至少选修1号课和3号课的学生的学号 Sno Cno SC Cno 1vCno 3 C 思考还有其他什么方法可以表示此查询 方法一 先找到选修了1的学生 然后找到选修了3的学生 求其交集就是至少选修了1和3的学生 方法二 至少选修了1和3可

温馨提示

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

评论

0/150

提交评论