




已阅读5页,还剩249页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 数据库原理与应用 加中实训 2 第一章绪论 数据库是数据管理的工具 数据管理经历了从手工管理阶段 文件管理阶段到数据库管理阶段的变迁 1 1数据库系统概述 1 1 1数据 数据库 数据库管理系统 数据库系统一 数据库 DataBase 存放数据的仓库 顾名思义 不准确的含义 信息的载体 表示尽管数据库技术已发展成熟 但还没有一个普遍接受的 严格的定义 3 数据库应具备的特征 定义 1 数据库是相互关联的数据的集合数据库中的数据不是孤立的 数据与数据之间是相互关联的 在数据库中不仅要能够表示数据本身 还要能够表示数据与数据之间的联系 如 学籍管理 学生 课程两类数据 2 用综合的方法组织数据顺序 索引 聚簇Cluster 1 1 1数据 数据库 数据库管理系统 数据库系统 4 例 人事部门有一个职工文件 教育部门也有一个职工文件 其中 职工基本情况 重复存储 浪费空间 可共享存储类似这样的共同数据 以降低数据的冗余度 3 具有较小的数据冗余 可供多个用户共享低冗余与数据共享 在数据库技术之前 数据文件都是独立的 任何数据文件都必须含有满足某一应用的全部数据 1 1 1数据 数据库 数据库管理系统 数据库系统 5 4 具有较高的数据独立性数据独立性 包括物理独立性 逻辑独立性 具体见萨师煊等主编 数据库系统概论 Page11 指数据的组织和存储方法与应用程序互不依赖 彼此独立的特性 可降低应用程序的开发代价和维护代价 1 1 1数据 数据库 数据库管理系统 数据库系统 在数据库技术之前 数据文件的组织方式和应用程序是密切相关的 数据结构改变 相应的应用程序也必须随之修改 开发 维护代价 6 1 1 1数据 数据库 数据库管理系统 数据库系统 5 具有安全控制机制 能够保证数据的安全 可靠数据库要有一套安全机制 以便有效地防止数据库中的数据被非法使用 修改 数据库还要有一套备份 恢复机制 以保证当数据遭到破坏时将数据立刻完全恢复 继续 可靠地运行 7 6 允许并发地使用数据库 能有效 及时地处理数据 并能保证数据的一致性和完整性一致性 数据库中的数据是共享的 并且允许多个用户同时使用相同的数据 这就要求数据库能够协议一致 保证各个用户之间对数据的操作不发生矛盾和冲突 正确性 完整性 保证数据正确的特性 数据完整性可通过建立一些约束条件保证数据库中的数据是正确的 如 学生年龄20 2或100则错误 1 1 1数据 数据库 数据库管理系统 数据库系统 8 二 数据库管理系统 DataBaseManagementSystem DBMS 上节提到的数据库的功能 特性不是数据库中的数据固有的 是靠管理或支持数据库的系统软件 DBMS 提供的 DBMS任务 对数据资源进行管理 使之能为多个用户共享 保证数据的安全性 可靠性 完整性 一致性 独立性 1 1 1数据 数据库 数据库管理系统 数据库系统 9 1 1 1数据 数据库 数据库管理系统 数据库系统 2 数据库操纵功能完成对数据库中数据的操作 插入 删除 修改 重新组织数据库的存储结构 完成对数据库的备份 恢复等 DBMS功能 1 数据库定义功能定义数据库结构和存储结构 定义数据库中数据之间的联系 定义数据完整性约束条件和保证完整性的触发机制等 10 3 数据库查询功能以各种方式提供灵活的查询功能 以便方便使用数据 4 数据库控制功能完成对数据库的安全性控制 完整性控制 并发控制5 数据库通信功能在分布式数据库或提供网络操作功能的数据库中还必须提供通信功能 1 1 1数据 数据库 数据库管理系统 数据库系统 11 三 数据库系统和数据库管理员1 数据库系统 DataBaseSystem DBS 基于数据库的计算机应用系统 包括 以数据为主体的数据库 管理数据库的系统软件DBMS 支持数据库系统的计算机硬件环境和操作系统环境 管理和使用数据库系统的人 特别是DBA 方便使用和管理系统的技术说明书和使用说明书 1 1 1数据 数据库 数据库管理系统 数据库系统 12 1 1 1数据 数据库 数据库管理系统 数据库系统 2 数据库管理和数据库管理员 DataBaseAdministrator DBA 从事数据库管理工作的人员 负责数据库的全面管理工作 维护 设计 数据库的使用会改变企事业单位的管理方式 但因为要把众多部门或用户的数据放在同一数据库中 会带来一些问题 如 数据冲突 越权使用数据 重要数据丢失 因此需要管理部门 负责和数据管理有关的工作 13 1 1 1数据 数据库 数据库管理系统 数据库系统 注 DBA工作繁重 重要 关键 除了要掌握一定的数据处理 数据库技术之外 还应有处理好人际关系的素质 能力 在一个企事业中 特别是一个规模较大的数据库 不能指望一两个人来完成管理工作 所以DBA常指数据库管理部门 开发DBS时 一开始就应设置DBA的职位或相应的机构 以明确DBA职责 权限 14 数据处理是计算机应用领域中最大的一类应用用计算机实现数据管理经历了三个发展阶段 1 人工管理阶段数据库管理的初级阶段 在50年代中期以前 计算机采用的是批处理方式 主要用于科学计算 具体见萨师煊等主编 数据库系统概论 Page6 1 1 2数据管理技术的产生和发展 15 2 文件系统阶段 50年代后期 60年代中期 特点 计算机技术有了很大的发展 开始广泛应用于信息处理 存储设备有了磁盘 磁鼓等可直接存取的设备 计算机有了操作系统 包括文件管理系统 用户可将数据组织成文件体交给系统进行自动管理 数据可长期保存在磁盘等存储设备上 程序和数据有了一定的独立性 且文件有多种形式的组织结构 顺序 链接 索引 直接 1 1 2数据管理技术的产生和发展 16 缺点 1 数据冗余较大 每个文件都是为特定的用途设计的 同样数据在多个文件中重复存储进能提供以文件为单位的数据共享 2 程序和数据之间的独立性较差应用程序依赖于文件的存储结构 修改文件存储结构就要修改程序 1 1 2数据管理技术的产生和发展 17 3 对数据的表示和处理能力较差文件的结构和操作比较单一 不够丰富 4 数据不一致由 1 造成 更新时会造成同一数据在不同文件中的不一致 5 数据联系弱文件与文件之间是独立的 文件之间的联系必须通过程序来构造 尽管如此 文件系统在数据管理技术的发展中仍起着很重要的作用 1 1 2数据管理技术的产生和发展 18 1 1 2数据管理技术的产生和发展 3 数据库系统阶段从60年代后期开始 计算机用于信息处理的规模越来越大 对数据管理的技术提出了更高的要求 此时开始提出计算机网络系统和分布式系统 出现了大容量的磁盘 文件系统已不再能胜任多用户环境下的数据共享和处理 一个新的数据库管理技术 DBMS由此而形成 它对所有用户数据实行统一的 集中的管理 操作和维护 特点 具体见萨师煊等主编 数据库系统概论 Page9 13 19 按照数据模型的进展情况 数据库系统的发展可划分为三代 第一代 层次数据库系统和网状数据库系统主要支持层次和网状数据模型第二代 关系数据库系统支持关系数据模型 该模型有严格的理论基础 概念简单 清晰 易于用户理解和使用 因此一经提出便迅速发展 成为实力性最强的产品 1 1 2数据管理技术的产生和发展 20 第三代 新一代数据库系统 面向对象数据库系统基于扩展的关系数据模型或面向对象数据模型的尚未完全成熟的一代数据库系统 特点 支持包括数据 对象和知识的管理在保持和继承第二代技术的基础上引进新技术 如OO 对其他系统开放 具有良好的可移植性 可连结性 可扩充性 互操作性 1 1 2数据管理技术的产生和发展 21 1 2数据模型 模型 对客观事物 现象 过程或系统的简化描述所有的数据库系统都为它所要描述的世界建立了模型 数据建模 描述了组织数据的框架结构 如 楼房住户 数据 房间规格 数据模型 数据建模最后发展成为数据的存储方式 数据字典中的定义 业务功能建模 用户的最终需求 业务功能建模最后发展成为应用程序产生高效的应用程序的前提是良好的数据模型 正如10平米的房间无法成为会议厅一样 一个糟糕的数据模型也无法产生高质量的应用 22 1 2数据模型 为什么要建立数据模型 DataModel 像盖大楼的设计图一样 DM可使所有的项目参与者都有一个共同的数据标准 避免出现问题再解决 边干边改的方式 可及早发现问题 加快应用开发速度 23 1 2 1数据模型的三要素 1 数据结构 描述数据的静态特征 包括对数据结构和数据建联系的描述 通常按照数据结构的类型来命名数据模型 层次结构 层次模型网状结构 网状模型关系结构 关系模型2 数据操作 描述数据的动态特征 一组定义在数据上的操作 包括操作的含义 操作符 运算规则及其语言等 主要操作 检索与更新 插入 删除 修改 24 1 2 1数据模型的三要素 3 3 数据的约束条件 完整性规则的集合 数据库中的数据必须满足这组规则 约束条件的主要目的是使数据库与它所描述的现实系统相符合 设计时 时数据模型正确 真实 有效地反映现实 运行时 保证数据库中的数据值真实地体现现实世界的状态 25 1 2 2常见数据模型 根据数据模型应用目的不同 数据模型有以下几种 概念 数据 模型 ConceptualDataModel 面向现实世界建模 主要用来描述现实世界的概念化结构 与具体的DBMS无关 现实世界的事物经过人脑的抽象加工 提取出对用户有用的信息 经过组织整理加工形成结余现实世界和计算机世界之间的中间模型 CDM只关心现实世界中的事物 事务特征 联系 完全没有与具体及其相关的任何概念 26 1 2 2常见数据模型 CDM是系统分析员 程序设计员 维护人员 用户之间相互理解的共同语言 CDM能时数据库的设计人员在设计的初始阶段摆脱计算机系统及DBMS的具体技术问题 集中精力分析数据 数据之间的联系 概念模型必须转换成逻辑模型 才能在DBMS中实现 最常用的概念模型是E R模型 27 1 2 2常见数据模型 逻辑 数据 模型 LogicalDataModel 面向用户建模 用户从数据库所看到的数据模型 是具体的DBMS所支持的数据模型 网状 层次 关系 面向对象 既要面向用户 也要面向系统 LDM表示数据建联系的方法 一般的DBMS支持一种LDM 特殊的DBMS支持多种LDM 28 1 2 2常见数据模型 物理 数据 模型 PhysicalDataModel 面向具体的DBMS 面向机器 描述数据在存储介质上的组织结构 PDM不仅与具体的DBMS有关 还与操作系统和硬件有关 每一种逻辑模型在实现时都有其对应的物理模型 PDM加入了概念模型中为考虑的因素 触发器 存储过程 主键 外键 索引等 DBMS为保证其独立性和可以执行 大部分PDM的实现工作由系统自动完成 而设计者只设计索引 聚簇等特殊结构 29 1 2 3概念模型 实体 联系 Entity Relationship 概念模型首先介绍E R模型中常用的几个重要概念 利用它们可构造出现实世界的数据的抽象描述 1 实体 实体型 实体集 实体 Entity 客观存在并能相互区分的事物如 人 数据库课程 正是用的计算机 一场足球赛不能严格地定义实体 正如几何中 点 线 一样 关键之处 一个实体能和别的实体区分开 30 1 2 3概念模型 实体型 EntityType 用实体名及属性名集合来抽象刻画同类实体 实体集 EntitySet 同型的实体组成的集合 2 属性 Attribute 指实体所具有的某一方面的特性 一个实体可由若干个属性来刻划 属性取值在一定的范围 称为该属性的值域 域 Domain 唯一标识实体的属性集称为码 Key 31 1 2 3概念模型 3 联系 Relationship 实体集合间存在的相互关系为了建立现实世界的完整模型 常常需要对联系分类 根据一个实体集合的实体可以和多少个另一类实体集合的实体相联系 可将联系分为如下几种 1 一对一联系 1 1 系 系主任 2 一对多联系 1 n 班级 学生 3 多对多联系 m n 课程 学生 32 1 2 3概念模型 举例1 具体见萨师煊等主编 数据库系统概论 Page17 18 两个实体型之间的联系 图1 10 三个实体型之间的联系 图1 11 一个实体型之间的联系 图1 12 举例2 具体见萨师煊等主编 数据库系统概论 Page19 20 图1 14 图1 15 33 1 2 3概念模型 4 实体 联系图 1 确定所有实体集合用矩形方框表示实体集合 方框内标明实体集合名称 2 选择实体集应包含的属性用椭圆框表示属性 通过无向边连接到实体集 只有一个属性的实体集可用属性代替 附加到它参加的联系上 3 确定实体集之间的联系用菱形框表示 框内标明联系的名称 通过无向边 或有向边 连接到参加联系的每个实体集合 34 1 2 3概念模型 4 确定实体集的关键字用下划线在属性上标明关键字的属性集合 5 确定联系的类型在用无向边连接联系到实体集时 在边上注明1或n 多 来知名联系的类型 在用有向边连接联系到实体集时 让边的箭头指向1的实体集的一方 多对多因为都是多方 故无箭头 35 1 2 4三种主要的逻辑数据模型 上节讨论的概念数据模型是 概念上 的 是抽象的 它与具体的数据库管理系统无关 这节要讨论的数据模型将与具体的DBMS有关 与DBMS支持的数据和联系的表示或存储有关 前面提到过 数据库中不仅要存放数据本身 还要存放数据间的联系 可用不同的方法表示数据与数据之间的联系 把表示数据与数据之间联系的方法称为逻辑 数据 模型 36 1 2 4三种主要的逻辑数据模型 一 层次模型 HierarchicalModel 用树型结构来表示实体之间联系的模型 支持层次模型的典型系统诞生于1970年前后 是IBM公司的IMS InformationManagementSystem 系统 1 层次模型的数据结构层次模型示例 萨师煊等主编 数据库系统概论 Page22图1 17 举例 Page23 37 1 2 4三种主要的逻辑数据模型 2 层次模型的数据操纵与完整性约束3 层次模型的存储结构4 层次模型的优缺点优点 结构简单缺点 插入 删除限制多 38 1 2 4三种主要的逻辑数据模型 二 网状模型 NetworkModel 典型代表 DBTG DataBaseTaskGroup 数据库任务组1 网状模型的数据结构2 网状模型的数据操纵与完整性约束3 网状模型的存储结构4 网状模型的优缺点优点 更能直接描述世界缺点 结构复杂 39 1 2 4三种主要的逻辑数据模型 三 关系模型 RelationalModel 1970 IBM E F Codd关系模型源于数学 它把数据看成是二维表 关系 中的元素 其严格定义下一章给出 用关系表示 不需用指针 实体和实体之间联系的模型称为关系模型 基本术语 萨师煊等主编 数据库系统概论 Page31举例见教材对于用户 关系方法应该是很简单的 但RDBMS很复杂 因为将大量工作都转嫁给了RDBMS 40 1 2 4三种主要的逻辑数据模型 RDBMS的设想在层次 网状数据库诞生的同时产生的 但研制开发RDBMS却花费了比人们想象的要长得多的时间 所以成为商品并投入使用比层次 网状数据库晚了十几年 但一投入使用就显示了旺盛的活力 并逐步取代层次 网状数据库 41 1 3数据库系统的结构 1 3 1数据库系统模式的概念当设计数据库时 对数据库的结构感兴趣 即模式 Schema 数据库中数据的逻辑结构和特征的描述当应用数据库时 关心的是数据库中存在的数据 实例 Instance 数据库中的数据经常变化 而数据库的结构在一定时间范围内不会改变 数据库中结构的定义可以在多个抽象级别进行 形成多个级别的数据库模式 42 1 3 2数据库系统的三级模式结构 数据库系统的三级模式不仅可以使数据具有独立性 而且还可以使数据达到共享 使同一数据满足更多用户的不同要求 一 内模式 InternalSchema 存储模式 是数据在数据库系统的内部表示 即对数据的物理结构 存储方式的描述 是低级描述 一般由DBMS提供的语言或工具完成 43 1 3 2数据库系统的三级模式结构 要修改存储数据库的结构 例如 用倒排文件代替多链表 那么仅仅需要把这些修改反映在存储模式中 通常我们不关心内模式的具体技术实现 而是从一般组织的观点 即概念模式 或用户的观点 外模式 来讨论数据库的描述 但我们必须意识到基本的内模式和存储数据库的存在 44 1 3 2数据库系统的三级模式结构 二 模式 Schema 逻辑模式 是数据库中全体数据的逻辑结构和特性的描述 是所有用户的公共数据视图 DBMS提供数据定义语言DDL来描述逻辑模式 严格定义数据的名称 特征 相互关系 约束等 45 1 3 2数据库系统的三级模式结构 三 外模式 ExternalSchema 用户模式 视图 是模式的子集或变形 是与某一应用有关的数据的逻辑表示 不同用户需求不同 看待数据的方式也可以不同 对数据保密的要求也可以不同 使用的程序设计语言也可以不同 因此不同用户的外模式的描述可以使不同的 46 1 3 2数据库系统的三级模式结构 举例 民航售票系统包括处理航班程序和处理旅客程序 程序的使用人员不必知道关于人事档案 丢失的行李 飞行员的航行分配等信息 调度员可能需要知道关于航班 飞机和人事档案等信息 如那些飞行员有资格驾驶747 但不必知道雇员的工资 旅客等信息 所以可以为订票部门建立一个数据库视图 为调度部门建立另一个完全不同的部门 47 1 3 2数据库系统的三级模式结构 Note 视图处理的数据并不实际存储在数据库中 而仅可以从逻辑数据库中构造出来 视图比 逻辑 模式的抽象级别更高 举例 年龄 在人事部门数据库中 但 逻辑 模式重金包含出生年月 当用户希望通过访问视图得到年龄时 DBMS翻译这个要求 在从物理数据库上取出的数据完成计算 注 一个数据库只有一个模式 一个内模式 但可以有多个外模式 48 1 3 3数据库的二级映象 在三级模式中提供了两级映象 保证了数据库系统的数据独立性 既物理独立性与逻辑独立性 一 外模式 模式映象数据库系统投入使用后 可能有必要修改模式 如增加新关系 属性 改变类型 这时 重新定义外模式 模式映象 现存外模式不变 应用程序不变 DBA职责 49 1 3 3数据库的二级映象 二 模式 内模式映象当内模式发生变化时 重新定义模式 内模式映象 模式保持不变 外模式保持不变 建立在外模式上的应用程序保持不变 50 1 5数据库技术的研究领域 1 数据库管理系统软件的开发2 数据库设计3 数据库理论具体见萨师煊等主编 数据库系统概论 page39 40 51 第二章关系数据库 1 关系操作 查询操作 选择 投影 连接 除 并 交 差 2 1关系模型概述从数据模型的三要素加以介绍一 数据结构 关系二 关系操作 增加 删除 修改 52 2 1关系模型概述 元组关系演算 谓词变元的基本对象是元组变量域关系演算 谓词变元的基本对象是域变量 Note 关系代数和关系演算是抽象的查询语言 与具体的DBMS中实际语言不一样 但彼此等价 是从抽象的观点出发学习数据库查询的问题 3 关系数据语言 具体见萨师煊等主编 数据库系统概论 page47 2 关系操作的表示方法 关系代数 用对关系的运算表达查询要求 关系演算 用谓词表达查询要求 53 2 1关系模型概述 实体完整性 关系模型必须满足的完整性约束条件 参照完整性 三 关系的完整性约束条件 用户定义的完整性 针对某一具体数据库的约束条件反映某一具体应用所设计的数据必须满足的语义要求 关系系统自动支持 54 2 2关系数据结构及形式化定义 2 2 1关系一 基本概念 具体见萨师煊等主编 数据库系统概论 page47 1 域 Domain 2 笛卡尔积 CartesianProduct 元组 Tuple 3 关系 Relation 分量 Component 候选码CandidateKey 非码属性Non keyattribute 主码PrimarkKey 全码All key 主属性Primeattribute 55 2 2关系数据结构及形式化定义 二 关系的三种类型 基本关系 基本表 实际存在的表 是实际存储数据的逻辑表示 三 关系的性质 6条 具体见萨师煊等主编 数据库系统概论 P50 查询表 查询结果对应的表视图表 由基本表或其它视图标导出的表 虚表 不对应实际存储的数据 56 2 2 2关系模式 值 Value 是型的一个具体赋值 关系是值 型 Type 对某一类数据的结构和属性的说明 关系模式是型 关系模式是对关系的描述 57 2 3关系的完整性 具体见萨师煊等主编 数据库系统概论 P52 55 58 2 4关系代数 RelationalAlgebra 关系代数是对关系运算的总和 关系运算分两类 2 4 1传统的集合运算 并 交 差 积 按行 59 2 4 2专门的关系运算 选择 投影 连接 除 按行 列 一 几个记号和概念 元组 分量 属性列域 剩余属性组 元组的连接 象集关系运算定义 具体见萨师煊等主编 数据库系统概论 P58 64 60 第三章关系数据库标准语言 SQL 关系代数和关系演算是形式化查询语言 商业DBMS使用SQL StructuredQueryLanguage 1974年由IBM的SanJose研究室提出 最初叫SEQUEL StructuredEnglishQueryLanguage 关系数据库系统通过SQL对数据库进行查询和更新 目前有许多不同版本的SQL语言 有两个不同的主要标准 ANSI AmericanNationalStandardsInstitute 1986ISO InternationalStandardsOrganization SQL 89 SQL 92 SQL2 正在制定SQL3 61 3 1SQL语言概貌及特点 一 SQL特点1 一体化SQL是一种一体化的语言 它包括了数据定义 查询 更新 控制四方面功能 可以完成数据库活动中的全部工作 以前的非关系模型的数据语言一般包括 内模式描述语言 模式描述语言 外模式描述语言 数据操纵语言等 内容多 操作起来不像SQL那样简单 62 3 1SQL语言概貌及特点 2 高度非过程化没有必要一步步地告诉计算机 如何 去做 只需描述清楚用户要 做什么 SQL就可以将要求交给系统 自动完成全部工作 3 面向集合的操作方式操作对象 查询结果是元组的集合 插入 删除 更新操作的对象也可以是元组的集合 63 3 1SQL语言概貌及特点 4 两种使用形式 统一的语法结构 自含式 将SQL作为操作命令独立使用 现在许多数据库开发工具都将SQL直接融入到自身的语言中 宿主式 将SQL嵌入到高级语言中使用 64 3 1SQL语言概貌及特点 5 语言简洁SQL虽然功能强且使用两种方式 但只有为数不多的几条命令 另外语法也非常简单 接近自然语言 易掌握 学习 除了以上特点之外 SQL语言还支持数据库的三级模式结构 具体见萨师煊等主编 数据库系统概论 Page87 65 3 1SQL语言概貌及特点 二 SQL语言组成SQL同一般的程序设计语言一样 由以下几个部分组成 1 常量 文本常量 字符串 整型常量 数值常量2 数据类型 以IBMDB2SQL为例 具体见萨师煊等主编 数据库系统概论 P893 空值 NULL 66 3 1SQL语言概貌及特点 集合运算符 算术运算符 5 函数SQL提供了非常丰富的内部函数 聚集函数 详见萨师煊等主编 数据库系统概论 P100 4 运算符 字符串运算符 连接 比较运算符 6个 逻辑运算符 NOT AND OR 67 3 1SQL语言概貌及特点 6 谓词SQL为了具有强大的查询能力 提供了一系列的谓词 BETWEENAND NOTBETWEENAND介于两者之间 介于两者之外 IN NOTIN在其中 不在其中 LIKE匹配 ISNULL ISNOTNULL EXISTS NOTEXISTS存在 不存在量词 ANY任意一个存在量词 ALL全程量词 68 3 1SQL语言概貌及特点 7 表达式8 条件由一个或多个含有比较运算符的表达试及逻辑运算符组合而成 命令 具体见萨师煊等主编 数据库系统概论 P86表3 1 69 3 2数据定义 存储过程定义 基本表定义 定义功能 数据库的定义 和物理数据有关 以后介绍 视图定义 索引定义 规则定义 与数据完整性有关 以后介绍 70 3 2 1定义 删除与修改基本表 具体见萨师煊等主编 数据库系统概论 P88 3 2 2建立与删除索引 具体见萨师煊等主编 数据库系统概论 P90 在使用关系数据库系统时 用户所看到和操作的数据好像在简单的二维表中 而实际上数据在磁盘上是如何存储的用户可能不知道 然而数据的物理存储如何却使数据库主要性能的主要因素 索引时最常见的改善数据库性能的技术 71 CREATETABLE 表名 列名 数据类型 列级完整性约束条件 表级完整性约束条件 例 CREATETABLEStudent SnoCHAR 5 NOTNULLUNIQUE SNAMECHAR 20 UNIQUE SSEXCHAR 1 SAGEINT SDEPTCHAR 15 72 修改基本表 ALTERTABLE 表名 ADD 新列名 数据类型 完整性约束 DROP 完整性约束名 ALTER 列名 数据类型 例 向学生表增加 入学时间 日期型ALTERTABLESTUDENTADDScomedate 修改年龄为半字长整数ALTERTABLESTUDENTALTERSAGESMALLINT 73 删除学生姓名必须取唯一值的约束 DROPTABLEStudentDROPUNIQUETagSnameDROPTABLE 74 3 2 2建立与删除索引 关于索引 索引的建立和删除由DBA或建表的人负责 用户不必也不能在存取数据是选择索引 作为一般规则 不应该在一个表上建立太多的索引 2 3个 索引能改善查询效果 但也耗费了磁盘空间 降低了更新操作的性能 因为系统必须花时间来维护这些索引 表中数据越多 索引的优越性才越明显 75 3 3 1单表查询 指定列 消除重复行 选择表中若干列 全部列 经计算的列 选择表中若干元组 查询满足条件的元组 对查询结果排序 对查询结果分组 76 3 3 2连接查询 等值 非等值连接 自身连接 外连接 复合条件连接 77 3 3 3嵌套查询 带有IN谓词的查询 带有比较运算符的查询 带有ANY或ALL谓词的子查询 带有EXISTS谓词的查询 78 3 3 4集合查询 具体见萨师煊等主编 数据库系统概论 P114 3 3 5SELECT语句的一般格式具体见萨师煊等主编 数据库系统概论 P115 79 3 4数据更新 插入 修改 删除数据 具体见萨师煊等主编 数据库系统概论 P117 一 插入数据1 插入单个元组2 插入子查询结果 80 3 4数据更新 二 修改数据1 修改一个元组的值2 修改多个元组的值3 带子查询的修改语句 81 3 4数据更新 三 删除数据1 删除一个元组的值2 删除多个元组的值3 带子查询的删除语句4 更新操作与数据库的一致性 82 3 5视图 一 关于视图 视图是原始数据库数据的一种变换 是查看表中数据的另外一种方式 可将视图看成是一个移动的窗口 通过它可看到感兴趣的数据 视图可从一个或多个实际表中获得 视图的定义存在数据库中 而数据并没再存一份在数据库中 通过视图看到的数据存放在基本表中 对视图的操作同其它表一样 通过视图修改数据时 实际是修改基本表中的数据 相反 基本表数据的改变也会自动反映在由基本表产生的视图中 83 3 5视图 二 视图的作用1 简单性 看到的就是用户需要的不仅可简化用户对数据的理解 也可简化它们的操作 经常使用的查询可以被定义为视图 84 3 5视图 2 安全性通过视图用户只能查询和修改他们能见到的数据 数据库其它数据则既看不到也取不到 数据库授权命令可是用户对数据库的检索限制到特定的数据库对象上 但不能授权到数据库特定的行 列上 视图可防止未授权用户查看特定的行 列3 逻辑数据独立性 85 3 5视图 一 定义视图具体见萨师煊等主编 数据库系统概论 P121 124二 查询视图具体见萨师煊等主编 数据库系统概论 P125三 更新视图具体见萨师煊等主编 数据库系统概论 P126 86 3 6数据控制 SQL数据控制功能对数据库中数据的安全控制提供保护 主要表现在对数据使用的授权 GRANT 和收回授权 REVOKE 每个用户对自己拥有的资源可以由任意的操作权限 同时也可以把其中的一部分权限授予他人 具体见萨师煊等主编 数据库系统概论 P130 87 3 6数据控制 一 授权 88 3 6数据控制 二 收回权限注 授权 GRANT 和收回授权 REVOKE 并不是数据库的全部控制功能 只是其中的一小部分 其它功能如安全性 完整性 并发控制和恢复在7 8 9 10章介绍 89 3 7嵌入式SQL 前面几节介绍的SQL 是作为独立的数据语言直接由用户在交互环境下使用的 此外 SQL还可以作为子语言嵌入在宿主语言 PASCAL C等 中使用 SQL作为子语言嵌入在宿主语言中使用必须要解决以下三方面问题 1 嵌入识别问题宿主语言的编译程序不能识别SQL语句 所以首要问题要解决如何区分宿主语言的语句和SQL语句 90 3 7嵌入式SQL 2 宿主语言与SQL语言的数据通信问题DBMS将SQL语句的查询结果或执行状态必须交给宿主语言 应用程序处理 通过SQLCA 运行时 宿主语言的数据通过变量 称为主变量 也要能够交给SQL使用 3 宿主语言的单记录与SQL的多记录的问题宿主语言一般一次处理一条记录 SQL语言常常处理的是记录 元组 的集合 其查询结果通常是含多个记录的一张表 阻抗不匹配 本节将围绕如何解决这三个问题来介绍 91 3 7嵌入式SQL 一 嵌入识别与预编译解决方法 为SQL语句加一个特殊的前缀 在用宿主语言的编译系统编译源程序之前 首先由预编译系统将SQL语句转换为宿主语言的合法函数调用 92 3 7嵌入式SQL 93 3 7嵌入式SQL 一 数据通信区与主变量1 数据通信区SQLCA SQLCommunicationArea在嵌入SQL语句的程序中 一般在程序的前部都要有一条语句 EXECSQLINCLUDESQLCA这里SQLCA即是SQL与宿主语言的通信区 它类似于结构变量 各个变量分别反映SQL语句的各种执行状态 94 3 7嵌入式SQL DBMS 数据库厂商标识 0 成功 例如 SQLAnywhere中SQLCA有16个属性 SQLCode long 存放执行SQL后返回的代码 100 SELECT找不到符合条件的记录 1 SQL操作错误 DataBase Userid DBPass SQLErrText 错误代码 SQLDBCode 错误信息 95 3 7嵌入式SQL SQL被执行时 DBMS将产生的各类系统信息 如执行状态信息 写入系统通信区 应用程序在调用SQL后 可通过读取数据通信区中信息来确定语句执行情况 应用通过SQLCA与数据库通信 96 3 7嵌入式SQL 输出主变量 SQL对其赋值或设置状态信息 返回给应用程序 利用它可得到SQL语句的结果数据和状态 输入主变量 由应用程序赋值 SQL引用 可用于 插入数据 修改值 制定条件 WHERE 2 主变量SQL语句使用宿主语言的变量来输入 输出数据 主变量 HostVariable 主变量根据作用不同分为 97 3 7嵌入式SQL Note 所有变量要在BEGINDECLARESECTION ENDDECLARESECTION之间说明 98 3 7嵌入式SQL 三 游标 Cursor 当查询结果超过一个元组时 不能一次性将结果值赋给宿主语言的变量 因为主变量仅能保存一个数据 而不是一组数据 为此 引进一个特殊的数据结构 游标 Cursor 游标是系统为用户开设的一个数据缓冲区 存放SQL的执行结果 可将其理解为一个指示器 指向数据库中满足条件的元组 游标包含两部分内容 结果集 游标内SELECT语句执行后产生的集合 游标位置 游标指针的当前位置 99 3 7嵌入式SQL 游标的定义和使用分为下面几步 声明游标不可执行的指令 仅定义游标 SELECT语句没有执行 类似于变量说明 打开游标执行SELECT语句 将结果放入结果集中 推进游标移动指针 该变结果集的当前记录 通过游标更新数据 关闭游标程序实例 具体见萨师煊等主编 数据库系统概论 P136 146 100 第四章关系系统及查询优化 具体见萨师煊等主编 数据库系统概论 P151 167 4 1 3全关系系统的12条基本准则 4 1关系系统 4 1 1关系系统的定义 4 1 2关系系统的分类 101 4 2关系数据库系统的查询优化 4 2 1关系系统及其查询优化 4 2 6优化的一般步骤 4 2 5关系代数表达式的优化算法 4 2 4关系代数等价变换规则 4 2 3查询优化的一般准则 4 2 2一个实例 102 第五章关系数据理论 数据库设计的一个最基本的问题是如何建立一个好的数据库模式 即给出一组数据 如何构造一个适合于它们的数据模式 使数据库系统无论是在数据存储方面 还是在数据操纵方面都有较好的性能 E R模型方法讨论了实体与实体之间的数据联系 现在来讨论实体内部属性与属性之间的数据关联 目标是要设计一个 好 的数据库模型 103 5 1问题的提出 1 关系模型定义 复习2 在解决如何设计一个好的数据库模式之前 先看一看什么是 不好 的数据库设计 关系数据库模式可能出现的异常 例 建立一个关系数据库来描述学生的一些情况 该数据库只包含一个关系模式 学生 学号 姓名 系名 系主任 课程 成绩 3 例 具体见萨师煊等主编 数据库系统概论 P171页 104 5 1问题的提出 1 存在的问题 i 数据冗余 姓名 系名 系 重复出现 ii 更新异常 某一元组修改系主任 其他不变 同一系 系主任不同 造成了数据潜在的不一致性 iii 插入异常 系刚成立 尚未招收学生 主关键字为空 则系主任 选的课都无法存入数据库 未选课的学生信息也无法存入 删除异常 一个系的学生毕业了 删除这些学生的记录 则系主任等信息也删除掉了 105 5 1问题的提出 2 产生异常的原因 这些异常的产生主要是因为关系模式的结构 即关系模式中的属性之间存在过多的数据依赖关系 与现实世界不符合 注 数据依赖关系 最重要的一类是函数依赖 主关键字 学号 课程 一定 元组就确定了 元组分量也就确定了 即所有其它属性都依赖于 学号 和 课程 但实际 学号 姓名 不需选课 系名 系主任 106 5 1问题的提出 3 解决 分解为三个新的关系模式 学生 学号 姓名 系名 成绩 学号 课程 成绩 系 系名 系主任 这样上面提到的问题不存在了 将学生 成绩和系三个相对独立的实体划分开来 使之更符合现实世界的实际 107 5 2规范化 Normalization 5 2 1函数依赖 FunctionalDependency 回顾 函数 熟悉的概念 Y f x x和Y之间数量上的对应关系 给定x值 Y值与之对应 称x函数决定Y 或Y函数依赖于x 在关系数据库中讨论函数或函数依赖注重的是语义上的关系 如 省 f 城市 108 5 2 1函数依赖 FunctionalDependency 定义 函数依赖 具体见萨师煊等主编 数据库系统概论 172页 说明 t1 x t2 x t1 r t2 r 成立 就有x Y 只有当t1 x t2 x 为真 而t1 Y t2 Y 为假时 x Y 当t1 x t2 x 为假时 不管t1 Y t2 Y 为T F 都有x Y 比如 当x为关键字属性时 t1 x t2 x 肯定为F 但x Y成立 109 5 2 1函数依赖 FunctionalDependency 术语和记号 非平凡的函数依赖 NontrivialFunctionalDependency 通常讨论 x Y 但Y x Y不包含于x 则x Y称为非平凡的函数依赖 若Y x 显然x Y成立 称为平凡的函数依赖 TrivialFunctionalDependency 110 5 2 1函数依赖 FunctionalDependency 决定因素 Determinant 若x Y 则x称为决定因素 决定方 x Y Y x则记作x Y 如 学号 姓名 若Y不函数依赖于x 记作x Y 111 5 2 1函数依赖 FunctionalDependency 定义 完全函数依赖 FullFunctionalDependency 若x Y 并且对x的任何一个真子集x 都有x Y 则称Y完全函数依赖x 记作x Y 部分函数依赖 PartialFunctionalDependency 若x Y成立 则称Y部分函数依赖于x 记作x Y 与书上定义比较 例 5 1模式中 学号 课程 系名 f p p 112 5 2 1函数依赖 FunctionalDependency 定义 传递函数依赖 TransitiveFunctionalDependency 若x Y 非平凡函数依赖 且Y x Y Z 则称Z传递函数依赖于x 若Y x 则x Y x Z 直接 113 5 2 1函数依赖 FunctionalDependency 例 教室 课程 班级 时间 教室 完全函数依赖 课程 班级 时间 教室 教师 姓名 职务 职务工资 传递函数依赖姓名 职务职务 职务工资则姓名 职务工资 前面例子 三个新的学生关系模式中 非平凡函数依赖学号 姓名学号 系系 系主任 学号 课程 成绩 f 114 5 2 2码 现实世界的每一实体集合 都有一关键字 码 即唯一确定各个实体的一组属性 同样 关系上最重要的约束是关系的关键字约束 即关键字 码唯一确定关系的元组 候选码 CandidateKey 与主码 PrimaryKey 外部码 ForeignKey 例 学生选课 学号 课号 成绩 F学生 学号 姓名 年龄 P注 主码与外码 主关键字与外关键字 提供了一个表示关系间联系的手段 115 5 2 3范式 在关系数据模式设计中 为了避免由依赖引起的数据的冗余和更新异常问题 必须进行关系数据模式的规范化 自1971年 E F Codd提出关系规范化理论以来 人们对规范化问题进行了长期的研究 并已经有了很大进展 范式 NormalForm 的概念最早是由E F Codd提出的 1971 1972年 先后提出了1NF 2NF 3NF 根据关系模式满足的不同性质和规范化的程度划分 1974年 又和Boyce共同提出了BCNF Boyce CoddNormalForm 1976年 Fagin提出了4NF 后又有人提出5NF 最重要的是3NF和BCNF 这是进行规范化的主要目标 116 5 2 3范式 具体见萨师煊等主编 数据库系统概论 P174页 图5 2 1 第一范式 1NF 具体见萨师煊等主编 数据库系统概论 P170 每个关系模式都应满足的最低要求 即关系的所有分量都必须是不可分的最小数据项 117 5 2 3范式 2 第二范式 2NF 具体见萨师煊等主编 数据库系统概论 P174 定义 若R 1NF 且每一非主属性完全函数依赖于码 则R 2NF 所有单属性关键字都是2NF关系 复合关键字 多属性构成 且存在非主属性对关键字的部分依赖 则否 118 5 2 3范式 反例 例 库存 仓库号 设备号 数量 地点 1NF 但非2NF 非主属性数量完全依赖于关键字 非主属性地点部分依赖于关键字 即有仓库号 地点 仓库号 设备号 地点 p 119 5 2 3范式 出现的问题 一个仓库若只有一种设备 则删除设备 删除仓库 学生关系 学生 学号 姓名 系名 不是2NF 只有成绩完全函数依赖于码 姓名 系名 系主任对码部分依赖 因为它们由学号可决定 120 5 2 3范式 解决办法 投影分解 将部分函数依赖关系洪的决定方和非主属性从关系模式中提出 单独构成一个关系模式 将余下属性加上码 仍要保留部分函数依赖的决定方属性 起分解出来的新关系之间的关联作用 构成另一关系模式 121 5 2 3范式 例 库存 仓库号 设备号 数量 仓库 仓库号 地点 学生记录 学号 姓名 系名 系主任 r 学生记录 学号 姓名 系名 系主任 r 学生 成绩 学号 课程 成绩 r 成绩 r 学生 122 5 2 3范式 1 第三范式 3NF 定义 具体见萨师煊等主编 数据库系统概论 P176 若R 2NF 并且所有非主属性都不传递依赖于关键字 则R 3NF 若存在非主属性对关键字的传递依赖 则不是3NF 123 5 2 3范式 反例 例 仓库 仓库号 所在省 仓库面积 所在城市 仓库号 所在城市 所在城市 所在省 仓库号 所在省 非3NF 问题 插入异常 如插入 WH30 湖北 400 邯郸 WH22 河北 240 再如 在山东济南要设一个仓库 想先存入有关所在城市信息 但无仓库号 则不能 124 5 2 3范式 解决 投影分解 将传递依赖的属性分解出来 自己总结的 仓库 仓库号 仓库面积 所在城市 城市 省 城市 再例 学生记录 学号 姓名 系 系主任 不是3NF 学号 系 系 系主任 学号 系主任系主任对码 学号 的传递依赖 分解 学生档案 学号 姓名 系名 系 系名 系主任 125 5 2 3范式 4 BCNF范式 由于3NF仍存在一些操作异常 定义 具体见萨师煊等主编 数据库系统概论 P176 即若R中的每个函数依赖的左部都是关键字 码 或所有的决定因素都是关键字 则R BCNF 126 5 2 3范式 或 若R 3NF 并且不存在主属性对非主属性的函数依赖 则R BCNF 一个满足BCNF的关系模式一定是非主属性对码完全函数依赖 主属性对不包含它的码也是完全函数依赖 设有属性完全函数依赖于码以外的属性组 127 5 2 3范式 举例及讨论 例 管理 仓库号 设备号 职工号 3NF 非BCNF 语义 一个仓库可有多个职工 一名职工仅在一个仓库工作 在每个仓库 一种设备仅由一名职工保管 但每名职工可以保管多种设备 根据语义有依赖 职工号 仓库号 仓库号 设备号 职工号 问题 新职工分到一仓库 尚未负责设备 则不能插入 插入异常 同一设备 两个职工 无法防止这样插入 与 违背 128 5 2 3范式 例 学生 学号 姓名 专业 宿舍 假定无重名 则码为学号或姓名 非主属性对这两个码不存在部分函数依赖和传递函数依赖 是3NF 而同时除 学号 和 姓名 以外没有其他决定因素 也是BCNF 129 5 2 3范式 例 通讯 城市 街道 邮编 完全依赖于码 且无传递依赖 是3NF 但邮编 城市 它是决定因素 它不是码 也不包含在码中 非BCNF 非BCNF分解 BCNF 会破坏函数依赖 Solution 保持3NF 警惕主属性对非主属性的函数依赖带来的操作异常现象 130 5 2 3范式 5 多值依赖与第四范式 多值依赖 MultivalentDependency 定义5 9 具体见萨师煊等主编 数据库系统概论 P1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于用户体验的2025年品质管理体系优化研究报告
- 家庭防滑改造项目施工管理要点报告
- 短保食品配冷链物流企业品牌建设报告
- 畜牧健康监2025畜牧养殖行业投资案例分析报告
- 临期调味品在社区团购中的产品推广策略报告
- 汽车电池换2025年电池更换市场技术创新趋势研究报告
- 小微企业AI路径规划在快递分拣效率提升中的应用报告
- 智能化VIP接送机平台构建策略研究报告
- 2026届江苏省徐州市市区部分物理八上期末教学质量检测试题含解析
- 2026届四川省成都市大邑县物理八上期末监测模拟试题含解析
- 2025年威海桃威铁路有限公司招聘笔试参考题库含答案解析
- 妊娠期高血压疾病的观察及护理
- 医院DIP支付方式改革工作实施方案
- 完成筹备申请正式设立高等职业学校的审批办理流程
- 手足显微外科护理常规
- 《开关培训》课件
- 俄乌冲突课件初中生
- 【初中英语】15天背完英语3500词
- 2024上海中考考纲单词
- 《激光原理及应用》全套课件
- 成人高考成考大学语文(专升本)试题及答案指导(2025年)
评论
0/150
提交评论