




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 2 章 关系数据库系统 关系数据库系统 Relational Data Base Manaqement System RDBMS 以 其结构简单 通俗易懂 使用方便等特点 深受广大用户的欢迎 是目前使用最 广泛的数据库系统 本章介绍关系模型和关系数据库的基本概念 包括关系数据结构 关系操作 和关系完整性 畅 关系数据库系统概述 关系模型是由 IBM 公司的埃德加 科德于 年首先提出的 关系模型中 无论是实体还是实体间的联系均由关系来表示 关系数据库是建立在关系模型基 础上的数据库 关系模型由关系数据结构 关系操作集合 关系完整性约束三部分组成 2畅1畅1 关系数据结构 关系模型的数据结构很单一 在用户看来 关系模型中数据的逻辑结构是一 张二维表 关系模型的数据结构和基本术语如下所述 畅 域 一组具有相同数据类型的值的集合 如表 畅 学生基本信息表 Table Student 中 Sex 性别 的取值为 F 或 M 其域为 F M 畅 笛卡儿积 给定一组域 D D Dn 这些域中可以有相同的 D D Dn 的笛卡儿积为 D D Dn d d dn dj Dj j n 其 中 每一个元素 d d dn 称为一个 n 元组 简称为元组 元组中的 每一个值 dj 称为一个分量 畅 关系 D D Dn 的子集称为在域 D D Dn 上的关系 用 R D D Dn 表示 这里 R 表示关系的名字 n 是关系的目或度 关系中的每个元 素是关系中的元组 通常用 t 表示 华中科技大学管理学院 关系是笛卡儿积的子集 所以关系也是一个二维表 表的每行对应一个元 组 表的每列对应一个域 由于域可以相同 为了加以区分 二维表的每列称为 一个属性 每一列有一个属性名 且属性不能重名 属性值是属性的具体值 表 畅 就是一个关系的实例 关系名为 Table Student 学生基本信息表 存储饭卡数据库管理系统中的学生基本信息 表 畅 只有四个元组 显示了四名 学生的信息 表 畅 有五个属性 分别是 StudentID 学号 CardID 饭卡 号 Sname 姓名 Sex 性别 和 School 学院 表 2畅1 学生基本信息表 Table Student StudentIDCardIDSnameSexSchool a C王俊F管理学院 a C李伟M管理学院 a C陈文M软件学院 a C张钰F环境学院 畅 关系模式 对关系的信息结构及语法限制的描述称为关系模式 关系模式用关系名和包 含的属性名的集合表示 用括号把属性集括起来 并把关系名写在括号的前面表 示关系的模式 于是 表 畅 中的 Table Student 学生基本信息表 的关系模 式就是 Table Student StudentID CardID Sname Sex School 注意 关系模式中的属性是一个集合 而不是列表 在关系模型中 数据库设计包含一个或多个关系模式 所涉及的关系模式的 集合称为 关系数据库模式 或简称为 数据库模式 畅 关键字 在关系的诸属性中 能够用来唯一标识元组的属性或属性组合的称为关键字 或码 在一个关系中 码的取值不能为空 表 畅 中关系的码为 StudentID 这个 属性 关系模式中 若单个属性是码 称为单码 Single Key 极端情况下 整个属性组是码 称为全码 All Key 例 2 1 在饭卡管理系统中 关系模式操作 操作人员编号 售饭机编 号 操作日期 中 每个操作人员可以操作多台售饭机 每台售饭机可以被多个 操作人员操作 而每个操作人员对每台售饭机又可以进行多次操作 因此 单个 属性 操作人员编号 售饭机编号 操作日期 或两个属性组合 操作人员编 号 售饭机编号 售饭机编号 操作日期 操作人员编号 操作日期 等均 不能完全决定某个元组 只有 操作人员编号 售饭机编号 操作日期 才能唯 华中科技大学管理学院 一确定某个元组 所以这个模式的码为 操作人员编号 售饭机编号 操作日 期 即全码 畅 候选关键字 如果在一个关系中 存在多个属性 或属性组合 都能用来唯一标识元组 这些属性 或属性组合 都可以作为候选关键字或候选码 表 畅 中 由于 Stu dentID 和 CardID 都是每个学生唯一拥有的 即根据这两个属性都可以唯一确定 一个学生 因此 属性 StudentID 和 CardID 都可作为候选关键字 畅 主关键字 在一个关系的若干候选关键字中 被指定作为关键字的候选关键字称为该关 系的主关键字 Primary Key 或主码 表 畅 中的主关键字或主码是 StudentID 这个属性 畅 主属性与非主属性 包含在任一候选码中的属性 叫做主属性 Prime Attribute 不包含在任 何候选码中的属性称为非主属性 Non Prime Attribute 或非码属性 Non Key Attribute 表 畅 中 StudentID CardID 都是主属性 Sname Sex 和 School 就是这个关系的非主属性 畅 外部关键字 设有两个关系模式 R 和 S F 是 R 的一个或一组属性 但不是 R 的码 如 果 F 与基本关系 S 的主码 KS相对应 则称 F 是 R 的外部关键字或外部码 For eign Key 简称外码 并称基本关系 R 为参照关系 Referencing Relation 或 从表 基本关系 S 为被参照关系 Referenced Relation 目标关系 Target Re lation 或主表 关系 R 和 S 不一定是不同的关系 但是 KS与 F 是定义在同一 域中的 例 2 2 在关系学生 学号 饭卡号 姓名 性别 院系 中 饭卡号不 是主码 但饭卡号是关系饭卡 饭卡号 密码 办卡日期 注销日期 状态 余 额 的主码 则饭卡号是关系学生的外码 关系饭卡是主表 关系学生是从表 主码除了唯一标识一个实体之外 常常与外码构成参照完整性约束 防止出 现数据不一致 主码和外码提供了一个表示关系间联系的手段 关系学生和饭卡 之间的联系就是通过饭卡号这个在学生关系中是外码又在饭卡关系中是主码的属 性来体现的 2畅1畅2 基本关系的性质 关系与二维表及传统的数据文件有类似之处 但也有区别 关系是一种规范 华中科技大学管理学院 化的二维表 作为关系的二维表必须满足下列六条性质 同一属性 列 中的分量是相同类型的数据 即取自同一个域 属性 列 的顺序可以是任意的 元组 行 的顺序可以是任意的 任意两个元组 即两行 不能完全相同 属性必须有不同的名称 但不同的属性可以取自相同的域 所有属性必须都是不可分解的 即表中不允许有子表 2畅1畅3 关系模式的定义 关系模式是对关系的描述 是一个关系的具体结构 一个关系模式应当是一 个五元组 它通常被形式化定义为 R U D DOM F I 其中 R 是关系名 U 为 该关系中的所有属性集合 D 为该关系的所有定义域的集合 DOM 是属性向域 映射的集合 它给出属性和域之间的对应关系 F 是该关系中各属性之间的数据 依赖的集合 I 为该关系中所定义的完整性规则的集合 在数据库系统中定义一个关系模式时 主要是给出关系名和所有属性名 其 他都是辅助特性 例如 属性的域被作为属性的类型和长度来定义 其中自然包 含了属性向域的映射 属性之间的数据依赖的分析主要是找出关系的主键属性 关系的完整性规则的建立则是为了保证数据库数据的正确性和一致性 因此 一 个关系模式可以简化表示为 R A A An 其中 R 为关系名 A A An 为各属性名 关系实际上就是关系模式在某一时刻的状态或内容 也就是说 关系模式是 型 关系是它的值 关系模式是静态的 稳定的 而关系是动态的 随时间不断 变化的 因为关系操作在不断地更新着数据库中的数据 但在实际当中 常常把 关系模式和关系统称为关系 读者可以从上下文中加以区别 2畅1畅4 关系数据库 在关系模型中 实体及实体间的联系都是用关系来表示的 在一个给定的现 实世界领域中 相应于所有实体及实体之间的联系的关系集合构成一个关系数 据库 关系数据库也有型和值之分 关系数据库的型也称为关系数据库模式 是对 关系数据库的描述 是关系模式的集合 关系数据库的值也称为关系数据库 是 关系的集合 关系数据库模式与关系数据库通常统称为关系数据库 畅 实体 联系模型转换为关系模型 实体 联系模型 Entity Relation Model E R 模型 提供了表示实体型 属 华中科技大学管理学院 性和联系的方法 用来描述现实世界的概念模型 E R 模型和关系模型术语的对 应关系见表 畅 表 2畅2 E R模型与关系模型术语的对应关系 E R 模型关系模型 实体关系 表 实体实例元组 行 联系关系 表 属性属性 列 属性值元组分量 列值 E R 模型向关系模型的转换 实际上就是要将实体 属性和联系转化为关系 模式 转换规则包括以下七点 一个实体型转换为一个同名的关系模式 实体的属性就是关系的属性 实体的码就是关系的码 一个 联系可以转换为一个独立的关系模式 也可以与任意一端对应 的关系模式合并 该联系的码可以是任一端的实体的码 一个 n 联系可以转换为一个独立的关系模式 也可以与 n 端对应的关 系模式合并 则 n 端实体的码就是该联系的码 一个 m n 联系转换为一个关系模式 与该联系相连的各实体的码的集 合就是该联系的码 三个或三个以上实体间的一个多元联系转换为一个关系模式 同一实体集的实体间的联系 即自联系 也可按上述 n 和 m n 三种情况分别处理 具有相同码的关系模式可以合并 下面根据上述转换规则 将第 章最后介绍的案例及例 和例 的 E R 模型转换成关系模式 例 2 3 将第 章建立的饭卡管理系统的 E R 模型 如图 畅 所示 转 化成关系模式 转化步骤如下所述 畅 标示 E R 模型中的联系 饭卡管理涉及三个联系 使用 联系 消费 联系和 操作 联系 畅 依次转换与每个联系相关联的实体及联系 联系 使用 的转换过程 在 使用 联系中共有两个实体 学生 实体和 饭卡 实体 其联系的类 华中科技大学管理学院 型是 根据转换规则得下列关系 关系 学生 学号 姓名 性别 院系 关系 饭卡 饭卡号 密码 办卡日期 注销日期 状态 余额 注意 上述两个关系都是由转换规则 得到 关系 使用 学号 饭卡号 注意 由转换规则 得到 再由转换规则 将关系 和关系 合并得到 关系 学生 学号 饭卡号 姓名 性别 院系 消费 联系的转换过程 在 消费 联系中共有三个实体 饭卡 实体 消费记录 实体和 售饭 机 实体 是三个实体间的多元联系 根据转换规则得下列关系 关系 消费记录 消费记录号 消费金额 消费日期 关系 售饭机 售饭机编号 状态 位置 注意 上述两个关系都是由转换规则 得到 饭卡 实体对应的关系饭卡 饭卡号 密码 办卡日期 注销日期 状态 余额 已从 使用 联系中得到 关系 消费 消费记录号 售饭机号 饭卡号 注意 由转换规则 得到 再由转换规则 将关系 和关系 合并得到 关系 消费记录 消费记录号 售饭机号 饭卡号 消费金额 消费日 期 操作 联系的转换过程 在 操作 联系中共有两个实体 售饭机 实体和 工作人员 实体 其 联系的类型是 m n 根据转换规则得下列关系 售饭机 实体对应的关系售饭机 售饭机编号 状态 位置 已从 消费 联系中得到 关系 工作人员 工作人员编号 姓名 性别 年龄 注意 由转换规则 得到 关系 操作 工作人员编号 售饭机编号 操作日期 注意 由转换规则 得到 畅 整理得到的饭卡管理系统的关系模式 学生 学号 饭卡号 姓名 性别 院系 主码为学号 外部码为饭卡号 饭卡 饭卡号 密码 办卡日期 注销日期 状态 余额 主码为饭 卡号 消费记录 消费记录号 售饭机号 饭卡号 消费金额 消费日期 主码 华中科技大学管理学院 为消费记录号 外部码为售饭机号 饭卡号 售饭机 售饭机号 状态 位置 主码为售饭机号 工作人员 工作人员编号 姓名 性别 年龄 主码为工作人员编号 操作 工作人员编号 售饭机编号 操作日期 主码为工作人员编号和售 饭机编号的组合编码 这六个关系模式在数据库中存储和表示了饭卡管理系统所涉及的实体和联 系的信息 相关的数据包括 学生信息 饭卡信息 消费记录信息 售饭机信 息 工作人员信息 以及学生和饭卡之间一一对应的联系信息 饭卡 售饭机 和消费记录之间的多元联系信息 售饭机和工作人员之间的多对多的联系 信息 例 2 4 将第 章的职工管理的 E R 模型 如图 畅 所示 转化成关系 模式 按照例 所介绍的转换步骤分析 E R 模型 可知这个模型中只有 管理 一个联系 先把 管理 联系中的 职工 实体转换成一个关系 关系 职工 职工编号 职工姓名 性别 工资 出生日期 然后把联系 管理 也转换成一个关系 关系 管理 职工编号 领导职工编号 最后合并关系 和关系 得到职工管理的关系模式 职工 职工编号 职工姓名 性别 工资 出生日期 领导职工编号 这个关系模式在数据库中不仅能够存储职工的全部信息 还存储和表示出了 职工和职工之间领导和被领导的关系 例 2 5 将第 章的图书借阅系统的 E R 模型 如图 畅 所示 转化成 关系模式 按照例 所介绍的转换步骤分析 E R 模型 可知这个模型中只有 借阅 一个联系 先把 借阅 联系中的 图书 实体和 学生 实体分别转换成两个关系 关系 图书 图书号 书名 出版社 出版日期 定价 主码为图书号 关系 学生 学号 姓名 学生类型 已借书量 主码为学号 然后把联系 借阅 也转换成一个关系 关系 借阅 学号 图书号 借书日期 还书日期 主码为学号和图书 号的组合编码 这样 就得到图书借阅系统的三个关系模式 它们在数据库中存储和表示出 了图书借阅系统所涉及的数据有学生信息 图书信息及学生在借阅图书时与图书 之间的联系信息 华中科技大学管理学院 畅 关系模型的完整性约束 数据库的完整性是指数据库中数据的正确性和相容性 包括两个方面 一是 与现实世界中应用需求的数据的相容性和正确性 二是数据库内数据之间的相容 性和正确性 关系模型提供了丰富的完整性控制机制 允许定义三类完整性 实体完整 性 参照完整性和用户自定义完整性 其中 实体完整性和参照完整性是关系模 型必须满足的完整性约束条件 应该由关系系统自动支持 而用户自定义完整性 是应用领域需要遵循的约束条件 由关系数据库管理系统或工具提供编写手段 关系数据库管理系统的完整性检查机制负责检查 2畅3畅1 实体完整性规则 对于实体完整性 有如下规则 实体完整性规则针对基本关系 一个基本关系表通常对应一个实体集 例如 学生关系对应学生集合 现实世界中的实体是可以区分的 它们具有一种唯一性质的标识 例如 学生的学号 工作人员的员工编号 图书的编号等 在关系模型中 主码作为唯一的标识 且不能为空 定义实体完整性的必要性是 关系对应于现实世界中的实体 而现实世界中 实体是可区分的 即每个实体具有唯一可标识性 在关系模型中 主码是实体的 唯一标识 若主码为空值 则说明这个实体无法标识 不可与其他实体区分开 来 这显然是错误的 与现实世界应用环境相矛盾 因此需要引入实体完整性的 概念 例如 关系 Table Student StudentID CardID Sname Sex School 中 StudentID 学号 为关键字 则 StudentID 这个属性不能为空 因为没有 学号的学生在这个数据库中是不存在的 实体完整性规则规定基本关系的所有主关键字对应的主属性都不能取空值 例如 关系借阅 学号 图书号 借书日期 还书日期 中 学号 图书号 为主码 则学号和图书号两个属性都不能取空值 2畅3畅2 参照完整性规则 参照完整性规则就是定义外部码与主码之间的引用规则 若属性 或属性 组 F 是基本关系 R 的外部码 它与基本关系 S 的主码 KS相对应 基本关系 R 和 S 不一定是不同的关系 则对于 R 中每个元组在 F 上的值必须为 或者取空 值 F 的每个属性值均为空值 或者等于 S 中某个元组的主码值 举一个实例 关系 Table Card CardID Password StartDate EndDate 华中科技大学管理学院 State Balance 和关系 Table Student StudentID CardID Sname Sex School 其中饭卡关系 Table Card 中的饭卡号 CardID 是主码 学生关 系 Table Student 中 对每个学生也有饭卡号 CardID 这一属性 是用来 表明这个学生拥有哪张饭卡的 关系 Table Student 中的饭卡号属性和关系 Table Card 中的饭卡号属性相对应 关系 Table Student 中的饭卡号是外 部码 从上面的例子可以看到 在关系 Table Student 中饭卡号 CardID 这 一属性 要么取空值 表示这个学生还没有办理饭卡 要么取值必须和关系 Table Card 中某张饭卡的饭卡号 CardID 相同 表示这个学生拥有某张 饭卡 而且这张饭卡必须是真实存在的有效饭卡 这就是参照完整性 若关 系 Table Student 中某个学生的饭卡号取值不能与饭卡关系中任何一张饭卡 的饭卡号一致 表示这个学生拥有不属于这个学校的饭卡 这与实际应用环 境是不相符的 显然不正确 这就是为什么关系模型中定义了参照完整性约 束规则 在参照完整性规则中 关系 R 和 S 不一定是不同的关系 下面再举一个关 系 R 和 S 是同一关系的实例 若有学生关系 学号 卡号 姓名 院团学联主 席学号 性别 其中主码是学号 院团学联主席学号是外部码 它与学生关系 中的主码学号相对应 院团学联主席学号的取值要么为空值 表示这个院还没有 任命团学联主席 要么等于学生关系中某个学号 实体完整性与参照完整性是由系统自动支持的 即在建立关系 表 时只要 说明了 谁是主码 谁参照谁 系统将自动进行此类完整性的检查 建立关 系 定义完整性约束的相关命令将在第 章中讲解 2畅3畅3 用户定义的完整性 用户自定义完整性 指针对某一具体关系数据库的约束条件 它反映某一具 体应用所涉及的数据必须满足的语义要求 系统提供定义和检验这类完整性规则的机制 其目的是用统一的方式由系统 来处理它们 不再由应用程序来完成这项工作 在实际系统中 这类完整性规则一般在建立库表的同时进行定义 应用程序 人员不需再做考虑 如果某些约束条件没有建立在库表一级 则应用编程人员应 在各模块的具体编程中通过程序进行检查和控制 2畅3畅4 完整性规则检查 为了维护数据库中数据的完整性 在对关系数据库执行插入 删除和修改操 作时 就要检查是否满足以上三类完整性规则 当执行插入操作时 首先检查实体完整性规则 插入行的主码属性上的 华中科技大学管理学院 值 是否已经存在 若不存在 可以执行插入操作 否则不可以执行插入操 作 再检查参照完整性规则 如果是向被参照关系插入 不需要考虑参照完整 性规则 如果是向参照关系插入 插入行在外部码属性上的值是否已经在相应 被参照关系的主码属性值中存在 若存在 可以执行插入操作 否则不可以执 行插入操作 或将插入行在外部码属性上的值改为空值后再执行插入操作 假 定该外部码允许取空值 最后检查用户定义完整性规则 检查被插入的关系 中是否定义了用户定义完整性规则 如果定义了 检查插入行在相应属性上的 值是否符合用户定义完整性规则 若符合 可以执行插入操作 否则不可以执 行插入操作 当执行删除操作时 一般只需要检查参照完整性规则 如果是删除被参 照关系中的行 则应检查被删除行在主码属性上的值是否正在被相应的参照关系 的外部码引用 若未被引用 可以执行删除操作 若正在被引用 有三种可能的 做法 不可以执行删除操作 拒绝删除 或将参照关系中相应行在外部码属性 上的值改为空值后再执行删除操作 空值删除 或将参照关系中相应行一起删 除 级联删除 当执行修改操作时 因为修改操作可看成先执行删除操作 再执行插入 操作 因此是上述两种情况的综合 畅 关 系 代 数 关系模型采用集合操作方式来表达关系操作 即操作的对象和结果都是 集合 2畅4畅1 关系数据语言的类型 关系操作包括选择 Select 投影 Project 连接 Join 除法 Di vide 并 Union 交 Intersection 差 Difference 等查询操作及插入 Insert 删除 Delete 修改 Update 等更新操作两大部分 表达 或描述 关系操作的关系数据语言可以分为以下三类 畅 关系代数语言 关系代数语言 简称为关系代数 是用对关系的运算来表达查询要求的方 式 如 ISBL Information System Base Language 语言 畅 关系演算语言 关系演算语言 简称为关系演算 是用谓词来表达查询要求的方式 关系演 算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系 华中科技大学管理学院 演算 元组演算语言的典型代表是 QUEL 语言 域关系演算语言的典型代表是 QBE Query By Example 语言 关系代数 元组关系演算和域关系演算三种语言在表达能力上是完全等 价的 畅 具有关系代数和关系演算双重特点的语言 关系数据库系统实际提供给用户的关系数据语言是更加高级 更加方便的实 际语言 除了提供上述语言的功能外 还提供了许多附加功能 如结构化查询语 言 Standard Query Language SQL 不仅具有丰富的查询功能 而且具有数 据定义和数据控制功能 是集数据查询 DQL 数据定义 DDL 数据操纵 DML 和数据控制 DCL 于一体的关系数据语言 本节主要介绍关系代数 下一节将介绍关系演算 SQL 语言将在第 章详 细讲解 关系代数是 E畅F畅Codd 于 年首先提出的 它是一种抽象的查询语言 用对关系的运算来表达查询 关系代数是一种代数的符号 其中的查询是通过 向关系附加特定的操作符来表示的 作为研究关系数据语言的数学工具 关系 代数的运算对象是关系 运算结果亦为关系 关系代数的运算主要分为传统的 集合运算和专门的关系运算两类 传统的集合运算是二目运算 包括并 差 交 广义笛卡儿积四种运算 专门的关系运算包括选择 投影 连接和除四种 运算 2畅4畅2 传统的集合运算 设关系 R 和关系 S 具有相同的目 n 即两个关系都有 n 个属性 且相应的 属性取自同一个域 畅 并 关系 R 与关系 S 的并 Union 是由属于 R 或属于 S 的所有元组组成 记作 R S t t R t S 其结果关系仍为 n 目关系 畅 交 关系 R 与关系 S 的交 Intersection 是由既属于 R 又属于 S 的所有元组组 成 记作 R S t t R t S 其结果关系仍为 n 目关系 华中科技大学管理学院 畅 差 关系 R 与关系 S 的差 Difference 是由属于 R 而不属于 S 的所有元组组 成 记作 R S t t R t 不属于 S 其结果关系仍为 n 目关系 例 2 6 已知两个关系 R 和 S 见表 畅 和表 畅 关系 R 中有两个元组 关系 S 中也有两个元组 表 2畅3 R StudentIDCardIDSnameSexSchool 耨张飞M管理学院 耨李丽F软件学院 表 2畅4 S StudentIDCardIDSnameSexSchool 苘张飞M管理学院 苘赵静F机械学院 并集 R S 见表 畅 表 2畅5 R S StudentIDCardIDSnameSexSchool 吵张飞M管理学院 吵李丽F软件学院 吵赵静F机械学院 注意 两个关系中有关张飞的两个元组在结果中只出现一次 交集 R S 见表 畅 表 2畅6 R S StudentIDCardIDSnameSexSchool 耨张飞M管理学院 结果中只有一个关于张飞的元组 因为只有它出现在两个关系中 差集 R S 见表 畅 表 2畅7 R S StudentIDCardIDSnameSexSchool 耨李丽F软件学院 华中科技大学管理学院 张飞和李丽的元组出现在 R 中 因此是 R S 的候选元组 然而 张飞元组 也出现在 S 中 因此不在 R S 中 畅 广义笛卡儿积 两个分别为 n 目和 m 目的关系 R 和 S 的广义笛卡儿积 Product 是一个 n m列的元组的集合 元组的前 n 列是关系 R 的一个元组 后 m 列是关系 S 的 一个元组 若 R 有 k 个元组 S 有 k 个元组 则关系 R 和关系 S 的广义笛卡 儿积有 k k 个元组 记作 R S t t tr ts tr R ts S 例 2 7 为了简明扼要 用两个抽象的关系 R 和 S 来解释连接 假设关系 R 和 S 具有表 畅 和表 畅 中给出的元组 那么 将关系 R 中的两个元组分别与 关系 S 中的三个元组配对 得到乘积 R S 如表 畅 所示 包括六个元组 表 2畅8 R AB 行 行 表 2畅9 S BCD a 佑 a 佑 a 珑 因为 B 是两个关系中都有的属性 故在 R S 中使用 R畅B 和 S畅B 加以区分 其他属性不会混淆 于是 它们的名字未加改变地出现在结果关系中 表 2畅10 R S AR BS BCD 耨 沣 谮 耨 沣 谮 耨 铑 耨 沣 谮 耨 沣 谮 耨 铑 2畅4畅3 专门的关系运算 畅 投影 投影运算 Projection 是从关系中挑选出若干属性组成新的关系 经过投 影运算可以得到一个新关系 其关系模式所包含的属性个数往往比原关系少 或 者属性的排列顺序不同 因此 投影运算提供了垂直调整关系的手段 如果新关 系中包含重复元组 则要删除重复元组 华中科技大学管理学院 设关系为元关系 则关系的投影操作记作 A R t A t R 其中 A 为 R 中的属性列 投影操作是对关系进行垂直分割 消去某些列 并重新安排列的顺序 例 2 8 显示饭卡关系 Table Card CardID Password StartDate EndDate State Balance 在 CardID Password 和 Balance 三方面的信息 关 系 Table Card 的实例见表 畅 表 2畅11 关系 Table Card CardIDPasswordStartDateEndDateStateBalance k 敂 NULL 缮 k 敂 NULL 缮 4 k 敂 NULL 缮 使用表达式 CardID Password Balance Table Card 将该关系投影到 CardID Password 和 Balance 三个属性上即可 结果见表 畅 表 2畅12 投影运算的结果 CardIDPasswordBalance 妸 妸 妸 畅 选择 选择运算 Selection 是在关系中选择满足某种条件的元组 其中的条件是 以逻辑表达式给出的 使得逻辑表达式的值为真的元组将被选取 设关系为元关 系 则关系的选择操作记作 F R t t R F t 真 其中 F 表示选择条件 它是一个逻辑表达式 取逻辑值 真 或 假 逻辑表达式 F 的基本形式为 X Y 矱 X Y 其中 表示比较运算符 它可以是 或 X Y 等是属 性名或常量或简单函数 属性名也可以用它的序号来代替 矱 表示逻 辑运算符 它可以是 或 表示任选项 即 中的部分可以要也可 以不要 表示上述格式可以重复下去 选择运算是根据某些条件对关系作水平分割 即选择符合条件的元组 例 2 9 查询余额不少于 元的饭卡信息 华中科技大学管理学院 这个查询要求需要对表 畅 中的关系 Table Card 做水平筛选 选择条件 是 Balance Balance Table Card 的结果见表 畅 所示 表 2畅13 简单选择运算的结果 CardIDPasswordStartDateEndDateStateBalance k NULL H k NULL 第一个元组满足条件 Balance 余额 因此结果要取第一个元组 同 理 第二个元组也在结果中 由于第三个元组的 Balance 余额 不满足 条件 因此它不在结果中出现 例 2 10 查询余额高于 元且办卡时间在 年以前的所有饭卡信息 该项查询是两个条件的复合查询 可以用一个较复杂的条件得到它 该条件 包含两个子条件的与 AND 表达式如下 Balance AND StartDate Table Card 查询结果见表 畅 表 2畅14 复杂选择运算的结果 CardIDPasswordStartDateEndDateStateBalance k 敂 NULL 缮 畅 联接 连接 Join 是从两个关系的笛卡儿积中选取属性间满足一定条件的元组 记作 RS A B trtstr R ts S tr A ts B 其中 A 和 B 分别为 R 和 S 上度数相等且可比的属性组 指一个任意的条件 连接运算是从 R S 中选取 R 关系在 A 属性组上的值与 S 关系在 B 属性组上值 满足比较关系 的元组 连接运算具体的计算过程为先获得 R 和 S 的笛卡儿积 再从笛卡儿积中选 择满足条件的元组 例 2 11 为了简明扼要 用两个抽象的关系 R 和 S 来解释连接 其中关 系 R 和 S 具有表 畅 表 畅 中的模式和元组 表 2畅15 R AB 行 行 表 2畅16 S BCD a 佑 a 佑 a 珑 华中科技大学管理学院 将关系 R 中的两个元组分别与关系 S 中的三个元组配对 得到 R S 见 表 畅 包括六个元组 因为 B 是两个关系中都有的属性 故在 R S 中使用 R畅B 和 S畅B 加以区分 这样就不会混淆 表 2畅17 R S AR哪畅BS换畅BCD 趑 耨 铑 忖 趑 耨 铑 忖 趑 耨 鲻 趑 耨 铑 忖 趑 耨 铑 忖 趑 耨 鲻 在 R S 中筛选出满足 R 关系的 A 分量小于 S 关系的 D 分量的元组 得到 RS A D 的最后结果 RS A D 见表 畅 表 2畅18 RS A D AR哪畅BS换畅BCD 趑 耨 铑 忖 趑 耨 铑 忖 趑 耨 鲻 趑 耨 鲻 连接运算中有两种特殊的连接 一种是等值连接 Equal Join 另一种是自 然连接 Natural Join 为 的连接运算称为等值连接 它是从关系 R 与 S 的笛卡儿积中选取 A B 属性值相等的那些元组 自然连接是一种特殊的等值连接 要求两个关系中进行比较的分量必须是相 同的属性组 并且在结果中把重复的属性去掉 自然连接记作 RS 例 2 12 在表 畅 中的关系 R 和表 畅 中的关系 S 自然连接 RS 的结果见表 畅 表 2畅19 RS的结果 ABCD k 缮 缮 R 和 S 唯一的公共属性是 B 因此 要成功地匹配成对 元组只需要在 B 分 量上一致即可 故结果元组有属性 A 来自 R B 来自 R 或 S C 来自 S 华中科技大学管理学院 D 来自 S 对应的分量 在这个例子中 R 的第一个元组只和 S 中的第一个成 功地匹配 这一对产生了第一个结果元组 R 中第二个元组和 S 中的第二个成功地匹配 这一对产生了第二个结果元组 S 中 的第三个元组不能和 R 中任何元组匹配 它对 RS 的结果没有影响 没能在 自然连接中和另一个关系的任何元组匹配的元组称为悬挂元组 畅 除 给定关系 R X Y 和 S Y Z 其中 X Y Z 为属性组 R 中的 Y 与 S 中的 Y 可以有不同的属性名 但必须出自相同的域集 R 与 S 的除运算 Divi sion 得到一个新的关系 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 13 关系 R 表示学生选修课程的情况 见表 畅 关系 S 表示课程 情况 见表 畅 表 2畅20 R 学号姓名课程号课程名 S WANGC hDB S WANGC hOS S WANGC hMIS S LIC hDB S LIC hDS S GUC hOS S SUNC hOS S SUNC hDS 表 2畅21 S 课程号课程名 C yOS C yMIS 表 2畅22 R S 学号姓名 S 妸WANG 查询至少选修了 S 中的全部课程的学生 该查询可以用除实现 关系 R 在 学号 姓名 上的投影为 S WANG S LI S GU S SUN 关系 S 在课程号属性上的 投影为 C C 其中 S WANG 在课程号属性上的象集为 C C C 包含 C C S LI 在课程号属性上的象集为 C C 不包含 C C S GU 在课程号属性上的象集为 C 不包含 C C S SUN 在课程号属性上的象集为 C C 不包含 C C 可见 只有 S WANG 在课程号属性上的象集包含 S 在课程号属性上 华中科技大学管理学院 的投影 所以 R S S WANG 见表 畅 2畅4畅4 关系代数运算的应用实例 本小节的所有例子都是基于前面讨论的饭卡管理系统的 该系统的数据表如 下所示 学生 学号 饭卡号 姓名 性别 院系 主码为学号 外部码为饭卡号 饭卡 饭卡号 密码 办卡日期 注销日期 状态 余额 主码为饭卡号 消费记录 消费记录号 售饭机号 饭卡号 消费金额 消费日期 主码 为消费记录号 外部码为售饭机号 饭卡号 售饭机 售饭机编号 状态 位置 主码为售饭机号 工作人员 工作人员编号 姓名 性别 年龄 主码为工作人员编号 操作 工作人员编号 售饭机编号 操作日期 主码为工作人员编号和售 饭机编号的组合编码 为了便于理解 这里的关系代数中涉及的实体名及实体属性名全部用汉语 书写 例 2 14 检索学号为 的学生姓名与所在院系 姓名 院系 学号 学生 表达式中也可以不写属性名 而写上属性在表中的序号 该查询也可以表 示为 学生 例 2 15 检索持有 号饭卡的学生的学号与姓名 学号 姓名 饭卡号 学生 例 2 16 检索管理学院或机械学院的学生学号和姓名 学号 姓名 院系 管理学院 院系 机械学院 学生 这里要用到两个条件的 或 操作 例 2 17 检索操作过第一食堂里的售饭机的工作人员的编号和姓名 工作人员编号 姓名 位置 第一食堂 工作人员售饭机操作 这里要用到连接操作 先由位置求出售饭机编号 再由工作人员编号 售饭 机编号的对应关系求出操作过这些售饭机的工作人员的编号 最后由工作人员编 号 姓名的对应关系求出工作人员的姓名 例 2 18 检索没有在第一食堂消费的学生的学号和姓名 学号 姓名 学生 学号 姓名 位置 第一食堂 学生消费记录售饭机 这里要用到集合差操作 先求出全体学生的学号和姓名 再求出在第一食堂 消费过的学生的学号和姓名 最后执行两个集合的差操作 例 2 19 检索操作过所有售饭机的工作人员的姓名 编写这个查询语句的关系代数过程如下 华中科技大学管理学院 工作人员对售饭机的操作情况可用 工作人员编号 售饭机编号 操作 表示 全部售饭机可用 售饭机编号 售饭机 表示 操作过全部售饭机的工作人员编号可用除操作表示 操作结果是工作人 员编号集 工作人员编号 售饭机编号 操作 售饭机编号 售饭机 所有工作人员的编号和姓名可用 工作人员编号 姓名 工作人员 表示 从工作人员编号求工作人员姓名 可以用自然连接和投影操作组合而成 姓名 工作人员编号 姓名 工作人员 工作人员编号 售饭机编号 操作 售饭机编号 售饭机 从例 和例 中可以看出 当查询涉及否定或全部值时 就要用到差 操作或除操作 畅 关 系 演 算 关系演算是以数理逻辑中的谓词演算为基础的 按照谓词变元的不同 关系 演算可以分为元组关系演算和域关系演算 前者以元组为变量 后者以域为变量 2畅5畅1 元组关系演算语言 ALPHA 元组关系演算是以元组变量作为谓词变元的基本对象 一种典型的元组关系 演算语言是 E畅F畅Codd 提出的 ALPHA 语言 ALPHA 语言虽然没有实现 但它 对关系演算语言的发展却有着重要的意义 例如 关系数据库管理系统 Ingress 所用的操作语言 QUEL 是参照 ALPHA 语言研制的 与 ALPHA 语言非常类 似 下面就通过对这一语言的介绍来了解元组关系演算的思想 ALPHA 语言包括的语句及其含义如表 畅 所示 表 2畅23 ALPHA语言包括的语句及其含义 语 句含 义 GET检索元组记录 PUT插入元组记录 HOLD将元组从数据库读到工作空间中 UPDATE修改元组记录 DELETE删除元组记录 DROP将元组从工作空间中移除 ALPHA 语言主要有 GET PUT HOLD UPDATE DELETE 和 DROP 等六条语句 语句的基本格式是 操作语句 工作空间名 表达式 操作条件 其中 工作空间指的是内存中的一块工作区域 在下面的例子中用 W 来表 华中科技大学管理学院 示 表达式用于指示语句操作的对象 关系名或属性名 需要注意的是一条语 句可以同时操作多个关系属性 操作条件是一个逻辑表达式 它的作用是将操作 结果限定在满足条件的元组中 操作条件可以为空 畅 用 GET 语句实现检索操作 例 2 20 查询所有学生的学号 GETW 学生 学号 上述查询语句中检索条件为空 表示没有限定条件 即检索所有记录 例 2 21 查询所有管理学院学生的饭卡号和学号 GETW 学生畅 学号 学生畅 饭卡号 学生畅 院系 管理学院 上述查询语句有一个限定条件 即学生畅 院系 管理学院 例 2 22 查询所有饭卡号和余额 结果按余额降序排列 GETW 饭卡畅 饭卡号 饭卡畅 余额 DO WN 饭卡畅 余额 DOWN 表示降序排列 例 2 23 查询机械学院所有女生的学号 GETW 学生畅 学号 学生畅 院系 机械学院 学生畅 性别 女 例 2 24 查询管理学院学生的名字 RANGE 学生 X GETW X畅 姓名 X畅 院系 管理学院 在 ALPHA 语言中用 RANGE 来说明元组变量 此时元组变量和关系名是 等价的 本例中 X 是关系学生上的元组变量 用途是简化关系名 即用 X 代 表 学生 例 2 25 查询饭卡号为 的学生的学号和姓名 RANGE 饭卡X GETW 学生畅 学号 学生畅 姓名 愁X X畅 饭卡号 学生畅 饭卡号 X畅 饭卡号 00000001 在元组关系演算的操作条件中 如果有存在量词 愁 则必须使用元组变量 例 2 26 查询一次消费超过 元的学生姓名和饭卡余额 RANGE 消费 X GETW 学生畅 姓名 饭卡畅 余额 愁X 学生畅 饭卡号 X畅 饭卡号 饭卡畅 饭卡号 X畅 饭卡号 X畅 消费金额 20 例 2 27 查询不是管理学院学生的饭卡余额 华中科技大学管理学院 RANGE 学生 X GETW 饭卡畅 余额 橙 X 学生畅 饭卡号 X畅 饭卡号 学生畅 院系 管理学院 例 2 28 查询操作过所有售饭机的工作人员编号和姓名 使用元组关系演算的求解思路是依次检查 操作 表中的每一个工作人员所 操作的所有售饭机是否与 售饭机 表中的售饭机一一对应 如是则表明当前工 作人员操作过所有售饭机 在本例中使用两个元组变量 其中一个表示售饭机元组 另一个表示操作 元组 RANGE 售饭机X 操作Y GETW 工作人员畅 工作人员编号 工作人员畅 姓名 橙X 愁Y Y畅 工作人员编号 工 作人员畅 工作人员编号 Y畅 售饭机编号 X畅 售饭机编号 例 2 29 假设有一个工作人员为 求至少操作过他所操作过 的售饭机的工作人员的编号和姓名 本例的解题思路是依次检查 售饭机 表中的每一个售饭机 若编号为 的工作人员操作过此售饭机 再看是否有另一个工作人员也操作过 这个售饭机 如果对于 所操作的每一个售饭机 该工作人员都操作 过的话 则该工作人员为满足条件的工作人员 RANGE 售饭机X 操作Y 操作 Z GETW 工作人员畅 工作人员编号 工作人员 畅 姓名 橙X 愁Y Y畅 工作人员编号 00000002 Y畅 售饭机编号 X畅 售饭机编号 愁 Z Z 畅 工作人员编号 工作人员畅 工作人 员编号 Z 畅 售饭机编号 X畅 售饭机编号 本例中使用 蕴含 操作 例如 A B 的含义为 若 A 为真 则 B 为真 本例中 若对于 X 元组中工作人员编号为 的工作人员操作的 所有售饭机 Z 元组的工作人员都选 畅 用 UPDATE 语句实现修改操作 ALPHA 语言中的修改操作使用 UPDATE 语句实现的 操作步骤如下 用 HOLD 语句将要修改的元组从数据库中读到工作空间中 用宿主语言修改工作空间中元组的属性值 用 UPDATE 语句将修改后的元组送回数据库中 例 2 30 把学号为 学生从管理学院转到机械学院 华中科技大学管理学院 HOLDW 学生畅 学号 学生畅 院系 学生畅 学号 012006033963 从 学生 关系中读出学号为 012006033963 学生的数据 学生畅 院系 机械学院 用宿主语言进行修改 UPDATEW 把修改后的元组记录写回数据库中 在例 中 使用 HOLD 语句而不是 GET 语句来读取 学生的数据 实质上 HOLD 是具有并发控制的 GET 语句 并发控制的内容将 在后面章节中介绍 另外 不能使用 UPDATE 语句修改表的主键值 如果必须 修改主键值的话 只能采用先删除再添加的方法 修改操作一次只能针对一个 表 如果需修改两个表中的记录的话 需执行两次 UPDATE 操作 畅 用 PUT 语句实现插入操作 ALPHA 语言中 PUT 语句实现插入操作 步骤如下 使用宿主语言在工作空间中建立新元组 使用 PUT 语句将新元组存入到数据库的指定表中 例 2 31 管理学院新招入一名叫李芳的女学生 学号为 插入该学生信息 W畅 学号 012006036715 W畅 姓名 李芳 W畅 性别 女 W畅 院系 管理学院 上述四条语句使用宿主语言在工作空间中建立新元组 P UTW 学生 把W 中的新元组插入到指定的表中 需要注意的是 PUT 语句只对一个表进行操作 若要想多个表插入记录需 执行多次 PUT 操作 畅 用 DELETE 语句实现删除操作 ALPHA 语言中用 DELETE 语句实现删除操作 步骤如下 使用 HOLD 语句将要删除的元组从数据库中读到工作空间中 用 DELETE 语句删除该元组 例 2 32 学号为 的学生因故退学 请从学生表中删除 该学生 HOLDW 学生 学生畅 学号 012006036715 DELETEW 华中科技大学管理学院 2畅5畅2 域关系演算语言 QBE 关系演算的另一种形式是域关系演算 域关系演算以元组变量的分量即域变 量作为谓词变元的基本对象 年由 M畅M畅Zloof 提出的 QBE 就是一个很有 特色的域关系演算语言 该语言于 年在 IBM 上得以实现 QBE 的英语全称是 Query By Example 即通过例子进行查询的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高端热稳定剂项目可行性研究报告
- 钒渣钠化焙烧项目可行性研究报告
- 防汛知识培训笔记课件
- 防汛知识培训与演练课件
- 土石方工程施工协议
- 可再生能源投资机会研究
- 营销推广合作协议书模板
- 湖北省武汉市2025年九年级上学期数学月考试题附答案
- 电子合同格式4篇
- 设备租赁合同与设备租赁合同范本3篇
- 2025年调饮师职业技能竞赛(省赛)考试题库(含答案)
- 班级量化管理方法分享
- 土方倒运施工方案作业方案
- 工程部员工绩效考核方案
- 数学 第一册(五年制高职) 课件 3.3.1增函数与减函数的定义
- 抢救车管理制度
- Python工程应用-数据分析基础与实践课件-第3章
- 应急处突知识培训课件
- 光伏并网发电项目施工进度计划范文
- 人教版初中英语七八九全部单词(打印版)
- 某自来水厂运营管理项目服务方案(技术方案)
评论
0/150
提交评论