mysql数据库武洪萍版第一章习题与答案.pdf



-
第一章习题 一选择题 1现实世界中客观存在并能相互区别的事物称为 A A 实体 B 实体集 C字段 D 记录 2下列实体类型的联系中属于一对一联系的是 C A 教研室对教师的所属联系 B 父亲对孩子的亲生联系 C 省对省会的所属联系 D 供应商与工程项目的供货联系 3采用二维表格结构表达实体类型及实体间联系的数据模型是 C A 层次模型 B 网状模型 C 关系模型 D 实体联系模型 4 数据库

28KB
mysql数据库武洪萍版第五章习题与答案.pdf
2020-05-15第五章 一选择题 1.下列关于 SQL语言索引 Index的叙述中哪一条是不正确的 C A. 索引是外模式 B. 一个基本表上可以创建多个索引 C. 索引可以加快查询的执行速度 D. 系统在存取数据时会自动选择合适的索引作为存取路径 2.为了提高特定查询的速度 对 SCS,C,DEGREE)关系创建唯一性索引 应该创建在哪一个 属性组上 A A. S,C) B. (S,DEGREE) C. (C
519KB
《MySQL数据库原理、设计与应用》教学大纲.pdf
2019-08-27黑马程序员编的《MySQL数据库原理、设计与应用》,简单易懂,适合初学者,这个是书的教学大纲。
51KB
数据库原理及应用第3章课后习题答案知识分享.pdf
2020-07-28数 据 库 原 理 及 应 用 第 3 章 课 后 习 题 答 案 精品文档 习题 3 1.试述关系模型的 3 个组成部分 1数据结构 关系模型的数据结构非常简单只包括单一的数据结构关系从用户角 度关系模型中数据的逻辑结构是一张扁平的二维表 2 数据操作 关系操作采用集合操作方式即操作的对象和结果都是集合这种方式称 为一次一集合的方式而非关系数据结构的数据操作方式为一次一记录方式 关系模型中常用
345KB
《数据库原理与应用》(孟凡荣-闫秋艳)课后习题答案.pdf
2020-08-06精品文档 - 第一章 1.1 名词解释 数据库 (DB) 数据库系统 (DBS) 数据库管理系统 (DBMS) 实体 实体集 属性 关键字 数据模型 概念数据模型 关系模型 模式 外模式 内模式 数据独立性 逻辑数据独立性 物理数据独立性 一对一联系 一对多联系 多对多联系 数据库 (DB) 在计算机的存储设备上合理存放相关联有结构的数据集合 数据库系统 (DBS) 在计算机系统中引进数据库和数
731KB
数据库原理第五版课后题答案
2019-05-05pdf版的课后题答案,包括了书中十一章的全部课后题答案,清晰且全面
5.13MB
数据库原理(第5版)
2011-11-08本版的新内容 这一版中的新内容和特色将使学生和本书的其他读者受益,其中包括: ● 使用Microsoft Access 2010演示和强调数据库的创建和使用原则。本书把对Microsoft Access和其他Microsoft Office产品(如Excel)的所有引用都修订为最新发布的Microsoft Office 2010版本。 ● 本书的更新表现为使用Microsoft SQL Server 2008/2008 R2 Express版本。尽管书中大多数主题都向后兼容Microsoft SQL Server 2005 Express版本,但均专门使用SQL Server 2008和Office 2010。 ● 本书中的更新还表现为使用MySQL Workbench作为MySQL 5.1的唯一数据库开发工具。本书第4版使用的MySQL GUI工具被MySQL在2009年12月18日宣布停止使用。目前的MySQL Workbench 5.2.x集成了MySQL GUI工具的功能,这一版就使用它。 ● 使用Microsoft Windows 7操作系统作为本书的工作站操作系统。上一版使用的是Windows XP和Windows Vista操作系统,而这一版更新为最新的Microsoft工作站操作系统。 ● 添加了附录C“系统分析和设计入门”。这个新附录为没有学习过这方面课程的学生或读者介绍了系统分析和设计概念,论述了收集数据建模所需输入信息的基本方法(参见第4章),并在应用程序开发的过程中融入了数据库开发。此附录包含在本书配书光盘中。 ● 添加了附录D“Microsoft Visio 2010入门”。这个新附录介绍了如何使用Microsoft Visio 2010进行数据建模(参见第4章)和数据库设计(参见第5章)。此附录包含在本书配书光盘中。 ● 添加了附录E“Web服务器、PHP和Eclipse PDT入门”。这个新附录介绍了如何安装和使用Microsoft IIS Web服务器、PHP和用于Web数据库应用程序开发的Eclipse PDT IDE(参见第7章)。此附录包含在本书配书光盘中。 必要的基本概念 如果不学习基本概念,只靠现有的技术就不可能成功使用DBMS。凭借多年来为商业用户开发数据库的经验,我们认为下面的数据库概念非常重要: ● 关系模型的基本概念 ● 结构化查询语言(SQL) ● 数据建模 ● 数据库设计 ● 数据库管理 由于当前Internet、World Wide Web和分析工具的广泛使用,因此另外增加两个基本概念: ● Web数据库处理 ● 商业智能(BI)系统 像Colin这样的用户(或将来从事类似工作的学生)不需要像信息系统专家那样深入地了解这些主题。因此,本书只介绍最基本的概念,足以帮助Colin这样的用户创建和使用小型数据库了。本书的许多内容在David M.Kroenke和David J.Auer的Database Processing: Fundamentals, Designs, and Implementation1一书的基础上进行了重写和简化。不过在本书内容上我们也力求讨论准确,不会产生误导。即使学生已学习过更高级的数据库课程,也可从中获益。 独立于DBMS产品的概念 本书假设学生没有使用过任何特殊的DBMS产品,我们通过Microsoft Access、SQL Server Express版和MySQL来演示数据库概念,使学生可以将这些产品作为工具真正试验书中的内容,而这些概念都是以DBMS无关的方式出现。通过这种方式学习,学生可以掌握适用于任意数据库的基本原则,包括小型的Microsoft Access数据库到大型的Oracle或DB2数据库。而且这一方法也避免了一个常见的问题:在同时介绍概念和产品时,学生容易混淆概念与产品特性和功能。例如,在讲授参照完整性约束时,如果从概念的角度讲授会说明这时一个表中的列值必须总是由另一个表中的列值提供,并解释这一约束出现在关系定义的上下文中的方式,以及DBMS或应用程序如何强制执行这一约束。如果结合具体的DBMS讲授如Microsoft Access,学生就只知道:在某些情况下选取复选框,而在其他情况下不选取。这很容易导致学生在学习产品特性时,会淡忘数据库的基本概念。 这并不是说教学中不应使用DBMS。相反,学生们可以通过使用商业DBMS产品来更好掌握这些概念。本书的这一版包括Microsoft Access、SQL Server Express版和MySQL的足够多的基础信息,使您无需其他书籍或资料就可以在课堂上使用这些产品。本书还深入介绍了Microsoft Access,因为它是一个非常流行的个人数据库产品,并且包括在Microsoft Office Professional应用程序套件中。但如果希望深入理解特定的DBMS或使用本书没有介绍的DBMS产品,则需要额外的书籍或资料。Prentice Hall提供了Microsoft Access 2010和其他DBMS产品的大量图书,可以结合本书一起学习。 Access工作台 本书的这一版继续使用首次在第3版引入的特征—— “Access工作台”。由于Microsoft Access广泛用于初级数据库课程,因此介绍使用Microsoft Access的特定信息比较重要。每一章都带有一个“Access工作台”部分,其中使用Microsoft Access来演示本章的概念和技术。“Access工作台”部分在第1章中介绍了如何创建数据库和单个表,逐渐转移到不同主题,到最后第7章介绍相对于Microsoft Access数据库的Web数据库处理,和第8章介绍使用Microsoft Access和Microsoft Excel生成PivotTable OLAP报表。本书并非试图全面论述Microsoft Access,而是介绍所有必要的基本Access主题,使学生可以有效地构建并使用Microsoft Access数据库。 重要术语、复习题、练习题和项目 学生能否运用所学的知识非常重要,因此每章都提供了重要术语表(本版新增)、复习题、练习题(包括针对“Access工作台”的练习题)和三个贯穿本书始终的项目。如果学生阅读并理解了每一章的内容,就应能掌握每个重要术语的含义、能完成复习题。练习题要求学生将每章所讲的概念应用到具体的小问题或任务中。 第一个项目Garden Glory是有关一个向个人或企业提供园艺服务的合伙公司的数据库开发和使用。第二个项目James River珠宝行分析了为一家零售店实施常客计划的数据库需求。第三个项目Queen Anne Curiosity商店关注的是零售业的销售和库存需求。本书的所有章节都包括这三个项目。在每个实例中,都要求学生将各章的知识运用到项目中。教师会在教师手册中找到使用这些项目的更多信息,还可以从本书网站(www.pearsonhighered.com/kroenke)中受密码保护的教师部分获得数据库和数据。 本书使用的软件 与之前我们使用与DBMS无关的方式进行讨论一样,本书将尽可能选择独立于操作系统的软件,目前网络上有非常多的杰出软件可以使用,许多大的DBMS厂商都提供了其主要产品的免费版本(如Microsoft 的SQL Server Express版,Oracle公司的Oracle数据库和MySQL),Web编辑器和集成开发环境(IDE)也很常用,例如Eclipse、NetBeans和Visual Studio Express版。PHP被认为是第四个最常用的编程语言,可以下载用于许多操作系统和Web服务器。 所以尽管本书的示例是用Microsoft操作系统、SQL Server 2008/2008 R2 Express版、Microsoft Access 2010、Microsoft Excel 2010和IIS Web服务器创建的,但它们大都很容易用Linux、MySQL Server Community版、OpenOffice.org Base、OpenOffice.org Calc和Apache Web服务器创建。本书使用的一些软件产品,如PHP和Eclipse都可用于多种操作系统。 在过去30多年中,我们已经发现数据库和数据库应用程序的开发是一项愉快且有回报的活动。我们相信:在将来数据库的数量、大小和重要性会不断增加,而该领域也越来越重要。希望本书介绍的概念、知识和技术帮助学生成功地参与到现在和多年后的数据库项目中。 对第4版的改进 本版最重要的改进是在全文和“Access工作台”每个部分都使用了Access 2010。由于推出了Microsoft Office 2010,本书做了更新以反映该产品中的变化。当然,我们还更新了本书所有其他产品的信息,尤其是本版使用Windows 7操作系统来演示本书中的应用程序,MySQL工作台现在是MySQL数据库开发的GUI。 我们继续保持并改进了本书前几版引入的几个特性: ● 在每章中使用“Access工作台”介绍Microsoft Access的基础知识。 ● 介绍SQL Server 2008 R2 Express版(附录A)和Oracle MySQL Community Server 5.1(附录B)的用法。附录A和附录B包含在本书配书光盘中。 ● 使用示例数据集充分开发了在本书各个部分中使用的三个示例数据库:Wedgewood Pacific Corporation、Heather Sweeney Designs和Wallingford Motors。 ● 在Web数据库处理主题中使用PHP脚本语言和Eclipse IDE。 ● 扩充介绍了XML。 ● 扩充介绍了商业智能(BI)系统。 ● 介绍了多维数据库模型 本版继续使用之前版本增加的较为有效的规范化讨论,使用一个四步过程来演示规范化关系的规定步骤。这种方法不仅简化了规范化任务,而且使规范化原理更易于理解,因此当前版本仍沿用了这一方法。教师如需更多了解范式,可参考第5章中介绍的大多数范式的简短定义。 本书概要 本书包括8章和5个附录(附录内容包含在本书配书光盘中)。第1章解释了使用数据库的原因、数据库各个组件和开发方法。学生将学习数据库及其应用程序的用途、数据库相对于电子表格列表的差别和优势。第2章介绍了关系模型,定义了基本的关系术语,还介绍了规范化原则的基本概念,并描述了规范化过程。 第3章讲述了基本的SQL语句,介绍了定义数据的基本SQL语句,如SQL SELECT语句和数据修改语句。本书并不介绍高级的SQL语句,只讲述基本语句。 接下来的两章讨论了数据库设计。第4章使用实体-关系(E-R)模型解决数据建模问题,其中包括对数据建模的需求、基本的E-R术语和概念,并提供了一个简短的E-R建模示例应用程序(Heather Sweeney Designs)。第5章讲述了数据库设计,解释了规范化的基本概念。第4章示例中的数据模型在第5章中则被转换为关系设计。 最后三章讨论了数据库管理,以及数据库在应用程序中的使用。第6章概述了数据库管理,构建了一个作为功能数据库的示例数据库,并用作讨论数据库管理需求的示例。本章探讨了并发控制、安全性、备份及恢复技术。数据库管理主题很重要,因为它适用于所有数据库,即使是个人或单用户数据库也是如此。事实上,在某些方面这些主题对于小型数据库更重要,因为它们没有专业的数据库管理员来确保关键任务的执行。第6章也讨论了分布式数据库和面向对象的数据库。 第7章介绍了使用基于Web的数据库处理,包括开放数据库连接(ODBC)和PHP脚本语言的使用。本章也讨论了可扩展标记语言(XML)的出现和基本概念。 第8章介绍了商业智能(BI)系统和支持它们的数据仓库体系结构,还讨论了多维数据库,解释了如何为Heather Sweeney Designs建立多维数据库,并使用它生成PivotTable OLAP报表。 附录A提供了SQL Server 2008 R2 Express版的简介,附录B则提供了MySQL 5.1的类似介绍。在每章的“Access工作台”中都包括了对Microsoft Access的介绍。附录C介绍了系统分析与设计,可以为第4章(数据建模)和第5章(数据库设计)提供参考。附录D简要介绍了Microsoft Visio 2010,可用作数据建模(第4章)和数据库设计(第5章)的工具。另一个有效的数据库设计工具是MySQL工作台,其用法参见附录B。最后,附录E给出了启动和运转Microsoft IIS Web服务器、PHP和Eclipse PHP开发工具(PDT)的详细指导,这些将有助于我们更好地学习第7章。 在快速变化的环境下保持最新 为使数据库的概念在各版中保持最新,我们将根据需要在本书的网站(www.pearsonhighered .com/kroenke)上贴出更新表。例如,发布Office 2007后,我们就贴上了Access 2007的内容,在课堂上使用Access 2007的教师就会有“Access工作台”部分和PowerPoint幻灯片的所需版本。教师资源和学生资料也可以从网站上获得,所以应时常浏览本书的网站。
72.15MB
数据库系统基础:初级篇(第5版)(讲述数据库系统原理的经典教材)--详细书签版
2013-04-05CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 数据库系统基础:初级篇(第5版)(讲述数据库系统原理的经典教材) 基本信息 原书名: Fundamentals of Database Systems (5th Edition) 原出版社: Addison Wesl 作者: (美)Ramez Elmasri Shamkant B.Navathe 译者: 邵佩英 徐俊刚 王文杰 丛书名: 图灵计算机科学丛书 出版社:人民邮电出版社 ISBN:9787115164087 上架时间:2007-9-24 出版日期:2007 年10月 开本:16开 页码:409 版次:5-1 内容简介 本书是一本讲述数据库系统原理的教材,重点强调数据库建模与设计的基础、数据库管理系统提供的语言和工具以及系统实现技术。全书共分4个部分,第一部分介绍最基本的概念、术语及建模原则,第二部分描述了关系数据模型和关系型DBMS,第三部分讨论数据库设计,第四部分主要描述数据库系统中使用的物理文件结构和存取方法。书中涉及的内容非常广泛,包括DBMS的概念、术语和体系结构,ER模型和ER图,数据抽象和语义数据建模,UML类图表示法,基本关系模型,关系代数和关系演算,SQL,规范化,磁盘上组织记录文件的主要方法,文件的索引技术,查询处理与优化,以及物理数据库的设计与调优。 本书是高等院校计算机及相关专业本科生数据库系统课程的理想教材,也是对相关技术人员非常有价值的参考书。 作译者 Ramez elmasri是世界知名的数据库学者。现任得克萨斯大学职灵顿分校计算机科学与工程系教授。1980年于斯坦福大学获得计算机科学硕士和博士学位。他的主要研究方向是数据库系统、时间数据库、概念建模、面向对象数据库、Wed建模和本体论数据库模型和语言、DBMS系统实现、检索技术等。 Shamkant B.Navathe 世界知名的数据库学者。现任佐治亚理工学院计算学院教授,自1990年开始他一直在该校任教。他的主要研究方向是工程设计、生物(特别是人类基因组)数据库、文档及文本数据库等新兴应用中的数据库建模。设计和集成,此外,他对知识表示、数据挖掘和知识发现等也非常感兴趣。 目录 封面 -17 封底 -16 扉页 -15 版权 -14 译者序 -13 前言 -11 目录 -6 第一部分 引言与概念建模 1 第1章 数据库与数据库用户 2 1.1 引言 2 1.2 一个示例 4 1.3 数据库方法的特征 6 1.3.1 数据库系统的自描述性 7 1.3.2 程序与数据分离和数据抽象 7 1.3.3 支持数据的多视图 9 1.3.4 数据共享和多用户事务处理 9 1.4 幕前角色 10 1.4.1 数据库管理员 10 1.4.2 数据库设计者 10 1.4.3 最终用户 10 1.4.4 系统分析员和应用程序员(软件工程师) 11 1.5 幕后工作者 11 1.6 使用DBMS方法的优势 12 1.6.1 控制冗余 12 1.6.2 限制非授权的访问 12 1.6.3 为程序对象提供持久性存储 13 1.6.4 提供高效查询处理的存储结构 13 1.6.5 提供备份与恢复 14 1.6.6 提供多用户界面 14 1.6.7 表示数据间复杂联系 14 1.6.8 确保完整性约束 14 1.6.9 允许使用规则进行推理和动作 15 1.6.10 使用数据库方法的其他含义 15 1.7 数据库应用简史 16 1.7.1 使用分层和网状系统的早期数据库应用 16 1.7.2 关系数据库提供应用灵活性 16 1.7.3 面向对象的应用和对更复杂数据库的需求 16 1.7.4 在Web上交换数据实现电子商务 17 1.7.5 为新应用扩展数据库功能 17 1.7.6 数据库与信息检索 17 1.8 什么时候不应该使用DBMS 18 1.9 小结 18 复习题 18 练习题 19 选读文献 19 第2章 数据库系统的概念和体系结构 20 2.1 数据模型、模式和实例 20 2.1.1 数据模型的分类 21 2.1.2 模式、实例和数据库状态 21 2.2 三层模式体系结构和数据独立性 23 2.2.1 三层模式体系结构 23 2.2.2 数据独立性 24 2.3 数据库语言和界面 25 2.3.1 DBMS的语言 25 2.3.2 DBMS界面 26 2.4 数据库系统的环境 27 2.4.1 DBMS的组成模块 27 2.4.2 数据库系统实用工具 29 2.4.3 工具、应用环境和通信软件 29 2.5 DBMS的集中式和客户/服务器体系结构 30 2.5.1 集中式DBMS体系结构 30 2.5.2 基本的客户/服务器体系结构 31 2.5.3 DBMS两层客户/服务器体系结构 32 2.5.4 面向Web应用的三层和n层体系结构 32 2.6 数据库管理系统的分类 33 2.7 小结 35 复习题 36 练习题 36 选读文献 37 第3章 使用实体-联系(ER)模型的数据建模 38 3.1 使用高级概念数据模型进行数据库设计 39 3.2 一个数据库应用示例 40 3.3 实体类型、实体集、属性和码 40 3.3.1 实体和属性 41 3.3.2 实体类型、实体集、码和值集 43 3.3.3 COMPANY数据库的初步概念设计 45 3.4 联系类型、联系集、角色和结构约束 46 3.4.1 联系类型、联系集和联系实例 47 3.4.2 联系度、角色名称和递归联系 48 3.4.3 联系类型的约束 49 3.4.4 联系类型的属性 50 3.5 弱实体类型 51 3.6 COMPANY数据库ER设计的改进 52 3.7 ER图、命名约定和设计问题 53 3.7.1 ER图表示法小结 53 3.7.2 模式结构的正确命名 53 3.7.3 ER概念设计的设计选择 54 3.7.4 ER图的候选表示法 55 3.8 其他表示法示例:UML类图 55 3.9 高于2度的联系类型 57 3.9.1 对二元和三元(或高度)联系的选择 57 3.9.2 三元(或高度)联系上的约束 60 3.10 小结 60 复习题 61 练习题 61 实验题 66 选读文献 66 第4章 增强的实体-联系(EER)建模 68 4.1 子类、超类和继承 68 4.2 特化和泛化 69 4.2.1 特化 69 4.2.2 泛化 71 4.3 特化和泛化层次的约束和特征 71 4.3.1 特化与泛化的约束 72 4.3.2 特化和泛化的层次和格 73 4.3.3 利用特化与泛化改进概念模型 75 4.4 采用类别的并类型建模 76 4.5 示例UNIVERSITY的EER模式设计选择和形式化定义 78 4.5.1 UNIVERSITY数据库示例 78 4.5.2 特化/泛化的设计选择 79 *4.5.3 EER模型概念的形式化定义 80 4.6 其他表示法的示例:UML类图中的特化/泛化 81 4.7 数据抽象、知识表示和本体论概念 82 4.7.1 分类和实例化 82 4.7.2 标识 83 4.7.3 特化和泛化 83 4.7.4 聚集和关联 83 4.7.5 本体论和语义网 85 4.8 小结 86 复习题 86 练习题 86 实验题 91 选读文献 93 第二部分 关系模型:概念、约束、语言、设计和编程 95 第5章 关系数据模型和关系数据库约束 96 5.1 关系模型概念 96 5.1.1 域、属性、元组和关系 97 5.1.2 关系的特性 99 5.1.3 关系模型表示法 101 5.2 关系模型约束和关系数据库模式 101 5.2.1 域约束 102 5.2.2 码约束和NULL值约束 102 5.2.3 关系数据库和关系数据库模式 103 5.2.4 实体完整性、参照完整性和外码 104 5.2.5 其他类型的约束 106 5.3 更新操作、事务和处理违例约束 107 5.3.1 插入操作 107 5.3.2 删除操作 108 5.3.3 更新操作 109 5.3.4 事务的概念 109 5.4 小结 109 复习题 110 练习题 110 选读文献 113 第6章 关系代数和关系演算 114 6.1 一元关系操作:SELECT和PROJECT 115 6.1.1 SELECT操作 115 6.1.2 PROJECT操作 116 6.1.3 操作序列和RENAME操作 117 6.2 基于集合论的关系代数操作 118 6.2.1 UNION、INTERSECTION和MINUS操作 118 6.2.2 笛卡儿积(或叉积)操作 120 6.3 二元关系操作:JOIN和DIVISION 121 6.3.1 JOIN操作 121 6.3.2 JOIN的变体EQUIJOIN和NATURAL JOIN 122 6.3.3 关系代数操作的完备集 124 6.3.4 DIVISION操作 124 6.3.5 查询树表示法 126 6.4 其他关系操作 127 6.4.1 广义投影 127 6.4.2 聚集函数和分组 127 6.4.3 递归闭包操作 128 6.4.4 OUTER JOIN操作 130 6.4.5 OUTER UNION操作 130 6.5 关系代数中的查询示例 131 6.6 元组关系演算 133 6.6.1 元组变量和值域关系 133 6.6.2 元组关系演算中的表达式与公式 134 6.6.3 存在量词与全称量词 134 6.6.4 使用存在量词的查询示例 135 6.6.5 查询图表示法 136 6.6.6 全称量词与存在量词的转换 137 6.6.7 使用全称量词 137 6.6.8 安全表达式 138 6.7 域关系演算 139 6.8 小结 140 复习题 141 练习题 141 实验题 144 选读文献 146 第7章 使用ER到关系的映射和EER到关系的映射进行关系数据库设计 147 7.1 使用ER到关系的映射进行关系数据库设计 147 7.1.1 ER到关系的映射算法 147 7.1.2 ER模型构造映射的讨论和总结 151 7.2 EER模型构造到关系的映射 152 7.2.1 特化或泛化的映射 153 7.2.2 共享子类(多重继承)的映射 154 7.2.3 类别的映射(并类型) 155 7.3 小结 156 复习题 156 练习题 156 实验题 157 选读文献 157 第8章 SQL-99:模式定义、约束、查询和视图 158 8.1 SQL数据定义和数据类型 159 8.1.1 SQL2中模式和目录的概念 159 8.1.2 SQL的CREATE TABLE命令 160 8.1.3 SQL中的属性数据类型和域 161 8.2 在SQL中定义约束 162 8.2.1 指定属性约束和属性默认值 162 8.2.2 指定码和参照完整性约束 163 8.2.3 为约束命名 164 8.2.4 使用CHECK指定元组约束 164 8.3 SQL中的模式更改语句 165 8.3.1 DROP命令 165 8.3.2 ALTER命令 165 8.4 SQL中的基本查询 166 8.4.1 基本SQL查询的SELECT-FROM- WHERE结构 166 8.4.2 多义属性名、别名和元组变量 168 8.4.3 未指定WHERE子句的查询语句和星号(*)的用法 170 8.4.4 SQL中作为集合的表 170 8.4.5 子串样式匹配和算术操作符 172 8.4.6 查询结果排序 173 8.5 更复杂的SQL查询 173 8.5.1 包含NULL和三值逻辑的比较 173 8.5.2 嵌套查询、元组与集/多集比较 174 8.5.3 关联嵌套查询 176 8.5.4 SQL中的EXISTS和UNIQUE函数 177 8.5.5 SQL中的显式集合和属性重新命名 178 8.5.6 SQL中的连接表和外连接 179 8.5.7 SQL中的聚集函数 180 8.5.8 分组:GROUP BY和HAVING子句 181 8.5.9 SQL查询的讨论与小结 183 8.6 SQL中的插入、删除和更新语句 184 8.6.1 INSERT命令 184 8.6.2 DELETE命令 185 8.6.3 UPDATE命令 186 8.7 指定约束作为断言和触发器 186 8.8 SQL中的视图(虚表) 187 8.8.1 SQL中视图的概念 187 8.8.2 SQL中的视图规范 188 8.8.3 视图的实现和更新 188 8.9 SQL的其他特性 190 8.10 小结 190 复习题 192 练习题 192 实验题 194 选读文献 195 第9章 SQL程序设计技术简介 197 9.1 数据库程序设计:问题与技术 197 9.1.1 数据库程序设计方法 198 9.1.2 阻抗失配 198 9.1.3 数据库程序设计中的典型交互序列 199 9.2 嵌入式SQL、动态SQL和SQLJ 199 9.2.1 用嵌入式SQL检索单个元组 199 9.2.2 在嵌入式SQL中使用游标检索多个元组 202 9.2.3 使用动态SQL在运行时指定查询 203 9.2.4 SQLJ:Java中嵌入SQL命令 204 9.2.5 SQLJ中使用迭代器检索多个元组 206 9.3 使用函数调用的数据库程序设计:SQL/CLI和JDBC 207 9.3.1 以C语言为宿主语言,使用SQL/CLI进行数据库程序设计 208 9.3.2 JDBC:面向Java程序设计的SQL函数调用 211 9.4 数据库存储过程与SQL/PSM 214 9.4.1 数据库存储过程和函数 214 9.4.2 SQL/PSM: 扩展SQL以指定持久存储模块 215 9.5 小结 216 复习题 216 练习题 216 实验题 217 选读文献 218 第三部分 数据库设计理论和方法学 219 第10章 函数依赖和关系数据库的规范化 220 10.1 关系模式的非形式化设计准则 221 10.1.1 给予关系中的属性以清晰的语义 221 10.1.2 元组中的冗余信息和更新异常 223 10.1.3 元组中的NULL值 225 10.1.4 生成寄生元组 226 10.1.5 总结和讨论设计准则 227 10.2 函数依赖 228 10.2.1 函数依赖的定义 228 10.2.2 函数依赖的推理规则 229 10.2.3 函数依赖集的等价 232 10.2.4 最小函数依赖集 232 10.3 基于主码的范式 233 10.3.1 关系的规范化 233 10.3.2 范式的实际使用 234 10.3.3 码的定义和参与码的属性 234 10.3.4 第一范式 235 10.3.5 第二范式 238 10.3.6 第三范式 239 10.4 第二范式和第三范式的通用定义 239 10.4.1 第二范式的通用定义 240 10.4.2 第三范式的通用定义 241 10.4.3 解释第三范式的通用定义 241 10.5 Boyce-Codd范式 241 10.6 小结 243 复习题 244 练习题 244 实验题 247 选读文献 248 第11章 关系数据库设计算法和其他依赖 249 11.1 关系分解的性质 250 11.1.1 关系分解和范式的不足 250 11.1.2 分解的依赖保持性质 250 11.1.3 分解的非加性(无损)连接性质 251 11.1.4 检验二元分解的非加性连接性质 253 11.1.5 连续非加性连接分解 254 11.2 关系数据库模式设计算法 254 11.2.1 依赖保持分解成3NF模式 254 11.2.2 非加性连接分解成BCNF模式 255 11.2.3 依赖保持和非加性(无损)连接分解成3NF模式 256 11.2.4 NULL值和悬挂元组问题 258 11.2.5 规范化算法的讨论 258 11.3 多值依赖和第四范式 261 11.3.1 多值依赖的形式化定义 261 11.3.2 函数依赖和多值依赖的推理规则 263 11.3.3 第四范式 263 11.3.4 非加性连接分解成4NF关系 264 11.4 连接依赖和第五范式 265 11.5 包含依赖 266 11.6 其他依赖和范式 267 11.6.1 模板依赖 267 11.6.2 域-码范式 268 11.7 小结 268 复习题 268 练习题 269 实验题 270 选读文献 270 第12章 实际数据库设计方法学和UML图的使用 271 12.1 组织中信息系统的角色 271 12.1.1 使用数据库系统的组织环境 271 12.1.2 信息系统的生命周期 273 12.1.3 数据库应用系统的生命周期 274 12.2 数据库设计与实现过程 275 12.2.1 第1阶段:需求汇集和分析 276 12.2.2 第2阶段:概念数据库设计 277 12.2.3 第3阶段:DBMS的选择 284 12.2.4 第4阶段:数据模型映射(逻辑数据库设计) 285 12.2.5 第5阶段:物理数据库设计 286 12.2.6 第6阶段:数据库系统的实现和调优 286 12.3 使用UML图作为数据库设计规范说明的辅助工具 287 12.3.1 UML作为设计规范说明的标准 287 12.3.2 将UML用于数据库应用设计 287 12.3.3 各种UML图 288 12.3.4 建模和设计的示例:UNIVERSITY数据库 291 12.4 基于UML的设计工具:Rational Rose 293 12.4.1 面向数据库设计的RationalRose 293 12.4.2 Rational Rose Data Modeler 293 12.4.3 使用Rational Rose Data Modeler的数据建模 294 12.5 自动化数据库设计工具 297 12.6 小结 299 复习题 299 选读文献 300 第四部分 数据存储、索引、查询处理和物理设计 303 第13章 磁盘存储、基本文件结构和散列 304 13.1 概述 304 13.1.1 存储层次和存储设备 304 13.1.2 数据库的存储 305 13.2 二级存储设备 306 13.2.1 磁盘设备的硬件描述 306 13.2.2 磁带存储设备 310 13.3 块缓冲 311 13.4 把文件记录保存在磁盘上 312 13.4.1 记录和记录类型 312 13.4.2 文件、定长记录和变长记录 313 13.4.3 记录块、跨块记录与非跨块记录 314 13.4.4 在磁盘上分配文件块 315 13.4.5 文件首部 315 13.5 文件操作 315 13.6 无序记录文件(堆文件) 317 13.7 有序记录文件(排序文件) 318 13.8 散列技术 320 13.8.1 内部散列 321 13.8.2 磁盘文件的外部散列法 323 13.8.3 允许动态文件扩展的散列技术 324 13.9 其他主文件组织 327 13.9.1 混合记录文件 327 13.9.2 B树和其他数据结构作为主组织 327 13.10 使用RAID技术的并行磁盘访问 327 13.10.1 用RAID增强可靠性 328 13.10.2 用RAID改善性能 329 13.10.3 RAID组织体系和级别 329 13.11 新的存储系统 331 13.11.1 存储局域网 331 13.11.2 网络连接存储 331 13.12 小结 332 复习题 332 练习题 333 选读文献 335 第14章 文件的索引结构 336 14.1 单级有序索引的类型 336 14.1.1 主索引 337 14.1.2 聚簇索引 339 14.1.3 辅助索引 339 14.1.4 小结 344 14.2 多级索引 344 14.3 使用B树与B+树的动态多级索引 346 14.3.1 搜索树和B树 347 14.3.2 B+树 350 14.4 多码上的索引 357 14.4.1 多属性上的有序索引 357 14.4.2 分区散列法 357 14.4.3 网格文件 358 14.5 其他类型的索引 358 14.5.1 使用散列和其他数据结构作为索引 358 14.5.2 逻辑索引与物理索引 359 14.5.3 讨论 359 14.6 小结 359 复习题 360 练习题 360 选读文献 362 第15章 查询处理和优化的算法 363 15.1 把SQL查询转换成关系代数 364 15.2 外排序算法 365 15.3 SELECT与JOIN操作的算法 366 15.3.1 SELECT操作的实现 366 15.3.2 JOIN操作的实现 369 15.4 PROJECT和集合操作的算法 374 15.5 聚集操作和外连接的实现 375 15.5.1 聚集操作的实现 375 15.5.2 外连接的实现 375 15.6 用流水线组合操作 376 15.7 在查询优化中使用启发式规则 376 15.7.1 查询树和查询图的表示法 377 15.7.2 查询树的启发式优化 378 15.7.3 将查询树转换为查询执行计划 383 15.8 利用选择性和代价估算进行查询优化 383 15.8.1 查询执行的代价成分 383 15.8.2 代价函数中使用的目录信息 384 15.8.3 SELECT操作的代价函数示例 384 15.8.4 JOIN的代价函数示例 386 15.8.5 多关系查询和连接顺序 387 15.8.6 说明基于代价的查询优化的示例 388 15.9 Oracle中的查询优化概述 390 15.10 语义查询优化 390 15.11 小结 391 复习题 391 练习题 391 选读文献 392 第16章 物理数据库设计和调优 393 16.1 关系数据库中的物理数据库设计 393 16.1.1 影响物理数据库设计的因素 393 16.1.2 物理数据库设计决策 394 16.2 关系系统中的数据库调优概述 396 16.2.1 索引的调优 396 16.2.2 数据库设计的调优 397 16.2.3 查询的调优 398 16.2.4 其他的查询调优原则 399 16.3 小结 400 复习题 400 选读文献 400 附录A ER模型的可选图形表示法 401 附录B 磁盘参数 403 附录C QBE语言概述 405 前言 近几年来,虽然许多出版社都影印和翻译了多种数据库系统方面的教材,我们也曾与中国人民大学张坤龙老师等一起翻译了《数据库系统基础》的第3版。凭我们多年来从事数据库课程教育的实践经验,认为Elmasri和Navathe的《数据库系统基础》是一本出色的、系统的、先进的、实用的数据库课程教科书。它清晰地阐述了数据库系统理论和设计问题;它的内容极为充实,广泛地涵盖了所有涉及数据库系统的设计、实现和管理所要求的诸多专题;它使用优秀的实例引入最新的现代数据库技术,全书贯穿两个例子:COMPANY和UNIVERSITY,使得读者能够使用同一个应用来比较不同的方法。当我们得到并初步阅读了Elmasri和Navathe的《数据库系统基础》第5版时,我们发现它对全书又作了完善性修改和更新,适时地反映了数据库技术和应用开发的最新发展趋势。而且它新增了一些应用实例使读者可以参与其中,而书中章节后面的练习题和新的实验题,又可以让读者获得基于现代数据库技术,如Oracle、MySQL和SQLServer,以及了解使用PHP和XML的Web数据库编程,获得建造数据库应用系统的实践经验。《数据库系统基础》正在成为从技术角度而不是从商业角度介绍数据库系统的权威教材。它既适合于研究生又适合于本科生使用,更为教师提供了足够丰富的数据库课程教育素材。当然,本书也是从事数据库技术研究和应用开发人员的良师益友。 这就是为什么我们还要花费大量精力和时间来翻译本书的原因和理由。 本书包括8个部分和5个附录。从第1部分开始,介绍了为更好地掌握数据库设计与实现所需的基本概念,以及数据库系统中用到的概念建模技术。第2部分到第4部分深入讲解了数据库系统基础中最重要的几个方面,包括:关系模型的概念、约束、语言、设计和编程,数据库设计理论和方法学,数据存储、索引、查询处理和物理设计。第5部分和第6部分是数据库系统的高级专题,包括:事务处理、并发控制、恢复技术,以及对象和对象-关系数据库,并给出了如何用SQL实现这些概念。第7和第8部分作为结束,对诸如数据库安全性,适应高级应用的增强数据模型,分布式数据库及三层客户/服务器据结构,以及XML、Web数据库、数据挖掘、数据仓库、移动数据库、多媒体数据库、地理信息系统、基因数据管理等新兴技术作了介绍。附录A给出许多可选用的显示ER或EER模式的图形记号;附录B给出磁盘的一些重要物理参数;附录C给出最早的图形化查询语言之一:示例查询(Query-By-Example,QBE)语言的概述;附录D和E介绍基于层次数据模型和网状数据模型的传统数据库系统(http://www.aw.com/elmasri)。 本书分为上、下两册:上册包括第1~4部分及附录,建议可以作为“数据库导论课程”的教科书;下册包括第5~8部分及附录,建议可以作为“数据库高级课程”的教科书。当然,正如在本书的前言中所指出的那样,讲授一门数据库课程有许多种不同的方式,各位教师可根据课程侧重点的不同,以及根据学生的背景和需求组织教学内容。在前言中展示的各章节间的主要依赖关系图可以作为参考,各主题可以按不同顺序进行讲授。可以跳过那些选择性的章节,也可以添加书中其余部分的章节以便充实课程。 本书的翻译和审校由中国科学院研究生院信息学院邵佩英教授、徐俊刚副教授、王文杰副教授共同组织完成。参加翻译的还有(按姓氏笔画)裴莹、陈明、丁杰、林欢欢、张坤、张颖、周良、余清等。全书由邵佩英教授负责统一定稿。由于水平有限,翻译不当之处,恳请读者批评指正。 本书翻译过程中曾得到中国科学院高能物理所李伯民研究员的关心和指导,得到我们的研究生王辉、祝孔强、阚劲松的帮助,在此向他们表示衷心的感谢。我们还应感谢人民邮电出版社杨海玲等编辑们,是他们的远见和支持,使得本书能够尽快与读者见面。 译者 中国科学院研究生院信息学院 2007年5月 本书介绍了在设计、使用和实现数据库系统及应用时所需的基本概念。书中重点强调了数据库建模与设计的基础、数据库管理系统提供的语言和工具,以及系统实现技术。本书旨在作为本科生或研究生的数据库系统课程(一个或两个学期)的教材或教学参考书。本书假定读者已熟悉基本的程序设计和数据结构的概念,并对基本的计算机组成知识有所了解。 本书第一部分先提供了一个引言,并介绍了最基本的概念和术语以及数据库概念建模原则。第二部分到第四部分深入讲解了数据库基础中最重要的几个方面。 以下是第5版的主要特色: ●本书内容的组织遵循独立性和灵活性原则,可以根据个人需要进行取舍。 ●新增加了一章来介绍SQL程序设计技术,这种技术用于使用PHP(一种流行的脚本语言)的Web应用。 ●对每章末尾的习题集进行了更新和扩充。 ●提供了一个辅助网站(http://www.aw.com/elmasri),其中包括可以装载到各种类型关系数据库中的数据,以便学生更好地进行实验题。 ●提供了一个简单的关系代数和关系演算解释程序。 ●每章末尾的实验题(第3章~第12章)涵盖了该章的主题,这些主题是与本书辅助网站上的数据库相关联的;这些实验题一开始是介绍性的,在后续的章节中则将引入新的资料对其进行扩展。 ●对补充资料进行了重要的修订,包括为教师和学生而准备的一组资料,例如PowerPoint幻灯片和书中的图表,以及带有答案的教师指导手册。 ■与第4版的主要区别 第5版对全书内容的组织结构改动较少,主要改动集中于对单独某一章的改进上。主要改动如下: ●增加了新的实验题,并对每章(第一部分到第三部分)末尾的练习题做了改进。 ●给出了说明规范化和数据库设计算法的新示例(第10章和第11章)。 ●给出了一种新设计,这种设计增强了书中插图的视觉效果,并对各种属性和实体类型使用了特殊字体,从而增强了可读性和可理解性。 ■第5版的内容 第一部分描述了为更好地掌握数据库设计与实现所需的基本概念,以及数据库系统中用到的概念建模技术。第1章和第2章介绍了数据库、数据库的典型用户以及DBMS(数据库管理系统)的概念、术语和体系结构。第3章介绍了实体—联系(Entity-Relationship, ER)模型和ER图的概念,并用它来说明概念数据库设计。第4章重点讨论数据抽象和语义数据建模的概念,并且扩展ER模型以便把这些概念融入到模型中,从而产生增强的实体—联系(Enhanced ER, EER)数据模型和EER图。第4章提出的概念包括子类、特化、泛化和并类型(类别)。在第3章和第4章中还介绍了UML类图表示法。 第二部分描述了关系数据模型和关系型DBMS。第5章描述了基本关系模型、完整性约束和更新操作;第6章描述了关系代数操作,并介绍了关系演算;第7章讨论了通过ER到关系的映射和EER到关系的映射进行关系数据库设计;第8章详细介绍了SQL语言,包括SQL标准,大多数关系型系统中都实现了这一标准;第9章介绍了有关SQL程序设计的主题,如SQLJ、JDBC和SQL/CLI。 第三部分讨论了一些与数据库设计有关的主题。第10章和第11章涵盖了通过规范化进行关系数据库设计而开发的形式化体系、理论和算法。这些内容包括函数依赖和其他类型的依赖,以及各种关系范式等;第10章对规范化提供了循序渐进的直观的讲解;第11章则给出了带有示例的关系设计算法,并定义了一些其他类型的依赖,如多值依赖和连接依赖等;第12章概要介绍了使用UML完成中型和大型应用数据库设计过程中的各个阶段。 第四部分从描述数据库系统中使用的物理文件结构和存取方法开始。第13章描述了磁盘上组织记录文件的主要方法,包括静态和动态的散列技术;第14章描述了文件的索引技术,包括B树和B+树数据结构和网格文件;第15章介绍了查询处理与优化的基本知识;第16章讨论了物理数据库的设计与调优。 附录A给出了展示基本的ER或EER模式时还可选用的其他一些图示表示法。如果教师认为必要,可以用这些表示法替代书中所用的表示法。附录B给出了关于磁盘的一些重要的物理参数。附录C概述了QBE图形查询语言。附录D和附录E(在本书的辅助网站http://www.aw.com/elmasris 中也可找到)讨论了基于分层和网状数据模型的遗留数据库系统。这些已经使用了30多年的数据库系统是现今许多商业数据库应用和事务处理系统的基础,要完全取代它们还需要数十年。我们认为,对于学习数据库管理的学生来说,了解这些存在已久的方法也是很重要的。 ■如何使用本书 讲授数据库课程有许多种不同的方式。本书的第一部分到第四部分中的各章可用于讲授数据库系统的导论课程,各位教师可以按照本书给出的顺序,也可以按照自己喜欢的顺序组织讲授。根据课程侧重点的不同,教师可以跳过那些选择性的章节,也可以添加书中其余部分的章节以充实授课内容。在每章开篇的最后列出了对某个特定的主题不需要详细讨论的情况下可以跳过的小节。我们建议作为数据库导论课程的教材,可以选用第1章到第14章的内容,并根据学生的背景和需求,从本书中的其他章节选择一些内容添加进来。如果要强调系统实现技术,那么可以包括本书第四部分和本书姊妹篇《数据库系统基础:高级篇》的第一部分的内容。 第3章和第4章涵盖了如何使用ER模型和EER模型进行概念建模,这部分内容对于较好地从概念上理解数据库是很重要的。但是,这两章内容可以有选择地讲授,或者在课程的后期讲授,如果课程的重点是数据库管理系统(DBMS)的实现,甚至可以跳过这两章。第13章和第14章介绍的是文件组织和索引,这两章内容同样可以在课程的前期或后期讲授,如果课程的重点是数据库模型和语言,也可以跳过这两章。对于学习过文件组织课程的学生,可以把这几章的部分内容作为课后阅读材料,或者布置一些练习题来复习这些概念。 一个有完整生命周期的数据库设计与实现的项目,要涵盖概念设计(第3章和第4章)、数据模型映射(第7章)、规范化(第10章)和SQL实现(第9章)。同时还需要有关特定的程序设计语言和RDBMS的附加文档。 本书在编写时就考虑到了其主题可以按不同顺序进行讲授。下图展示了各章之间的主要依赖关系 。由图可知,在前面引导性的两章之后,可以从多个不同的主题开始讲授。这个图可能看起来有些复杂,但它显现了非常重要的一点是,如果按照如图所示的顺序进行讲授,章节间的依赖关系就不会丢失。如果教师想以自己选择的顺序来讲授课程,那么可以将此图作为参考。 如果将本书作为一个学期课程的教材,可以将某些章节留作课外阅读资料。第四部分、《数据库系统基础:高级篇》的第三部分和第四部分可以考虑作为这样的阅读资料。如果将本书作为上、下两个学期的教材,第一学期的课程“数据库设计/系统导论”,面向大二、大三或大四的学生,可以涵盖第1章~第14章的大部分内容。第二学期的课程“数据库设计与实现技术”,面向大四学生或一年级研究生,则可涵盖《数据库系统基础:高级篇》中的内容。在以上两个学期中可以有选择地选用《数据库系统基础:高级篇》第三部分和第四部分中的某些章节。除本书之外,如果学生所在学院还有其他介绍DBMS的资料,也可以作为本书的附加资料进行学习。 ■补充资料 本书的所有使用者均可获得辅助资料。 ●在网站http://www.aw.com/cssupport上提供了PowerPoint讲稿和图。 ●在本书辅助网站(http://www.aw.com/elmasri)上提供了第5版新增的实验手册。实验手册包括流行的数据建模工具、关系代数和关系演算解释程序,以及本书中使用的两个通用数据库管理系统实现的示例。本书每章末尾的实验题也与实验手册相关。 ●得到确认的教师可以获得习题答案。请访问Addison-Wesley 的教师资源中心(http://www.aw.com/irc)、联系当地的Addison-Wesley销售代表或者发送电子邮件到computing@aw.com以获取如何获得习题答案的信息。 ■致谢 非常荣幸能够向这么多人致谢,感谢他们对本书的帮助与贡献。首先要感谢本书的编缉Matt Goldstein及Katherine Harutunian。特别要感谢第5版的首席编辑Matt Goldstein所付出的努力及帮助。我们还要感谢Addison-Wesley的那些为第5版做出贡献的人们:Michelle Brown、Gillian Hall、Patty Mahtani、Maite Suarez-Rivas、Bethany Tidd和Joyce Cosentino Wells。我们感谢Gillian Hall完成了本书的内部设计,包括版式、字体和艺术设计方面非常细致的工作,正是她周全的考虑,我们才有了如此美观的书。 我们感谢为本书作出贡献的审稿人: Hani Abu-Salem,迪保罗大学 Jamal R. Alsabbagh, 大河谷州立大学 Ramzi Bualuan,圣母大学 Soon Chung,赖特州立大学 Sumali Conlon,密西西比大学 Hasan Davulcu,亚利桑那州立大学 James Geller,新泽西理工学院 Le Gruenwald,俄克拉何马大学 Latifur Khan,得克萨斯大学达拉斯分校 Herman Lam,佛罗里达大学 Byung S.Lee,佛蒙特大学 Donald Sanderson,东田纳西州立大学 Jamil Saquer,西南密苏里州立大学 Costas Tsatsoulis,堪萨斯大学 Jack C. Wileden,马萨诸塞大学阿默斯特分校 我们感谢Raj Sunderraman与我们一起完成了本书的实验部分并设计了实验题。旧金山大学的Salman Azar也贡献了部分习题。 Sham Navathe要向他佐治亚理工学院的学生们致谢:Saurav Sahay、Liora Sahar、Fariborz Farahmand、Nalini Polavarapu、Wanxia Xie、Ying Liu以及Gaurav Bhatia。Ed Omiecinski也曾提供了有价值的建议和修正。 我们还要再次感谢曾经审阅本书以及为本书前几版做出过贡献的人们。 ●第1版。Alan Apt(编缉)、Don Batory、Scott Downing、Dennis Heimbinger、Julia Hodges、Yannis Ioannidis、Jim Larson、Dennis McLeod、Per-Ake Larson、Rahul Patel、Nicholas Roussopoulos、David Stemple、Michael Stonebraker、Frank Tompa和Kyu-Young Whang。 ●第2版。Dan Joraanstad(编缉)、Rafi Ahmed、Antonio Albano、David Beech、Jose Blakeley、Panos Chrysanthis、Suzanne Dietrich、Vic Ghorpadey、Goets Graefe、Eric Hanson、Junguk L.Kim、Roger King、Vram Kouramajian、Vijay Kumar、John Lowther、Sanjay Manchanda、Toshimi Minoura、Inderpal Mumick、Ed Omiecinski、Girish Pathak、Raghu Ramakrishnan、Ed Robertson、Eugene Sheng、David Stotts、Marianne Winslett以及Stan Zdonick。 ●第3版。Maite Suarez-Rivas和Katherine Harutunian(编缉)、Suzanne Dietrich、Ed Omiecinski、Rafi Ahmed、Francois Bancilhon、Jose Blakeley、Rick Cattell、Ann Chervenak、David W.Embley、Henry A. Etlinger、Leonidas Fegaras、Dan Forsyth、Farshad Fotouhi、Michael Franklin、Sreejith Gopinath、Goetz Craefe、Richard Hull、Sushil Jajodia、Ramesh K. Karne、Harish Kotbagi、Vijay Kumar、Tarcisio Lima、Ramon A. Mata-Toledo、Jack McCaw、Dennis McLeod、Rokia Missaoui、Magdi Morsi、M.Narayanaswamy、Carlos Ordonez、Joan Peckham、Betty Salzberg、Ming-Chien Shan、Junping Sun、Rajshekhar Sunderraman、Aravindan Veerasamy以及Emilia E.Villareal。 ●第4版。Maite Suarez-Rivas、Katherine Harutunian、Daniel Rausch以及Juliet Silveri(编缉);、Phil Bernhard、Zhengxin Chen、Jan Chomicki、Hakan Ferhatosmanoglu、Len Fisk、William Hankley、Ali R.Hurson、Vijay Kumar、Peretz Shoval、Jason T.L. Wang(审稿人);;Ed Omiecinski(协助完成了第27章);得克萨斯大学阿灵顿分校的贡献者有Hyoil Han、Babak Hojabri、Jack Fu、Charley Li、Ande Swathi以及Steven Wu;佐治亚理工学院的贡献者有Dan Forsythe、Weimin Feng、Angshuman Guin、Abrar Ul-Haque、Bin Liu、Ying Liu、Wanxia Xie以及Waigen Yee。 最后,我们真切地感谢我们的家人所给予的支持、鼓励和耐心。 R.E. S.B.N.
49.95MB
数据库系统基础:高级篇(第5版)(讲述数据库系统原理的经典教材)--详细书签版
2013-04-05CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 数据库系统基础:高级篇(第5版)(讲述数据库系统原理的经典教材) 基本信息 原书名: Fundamentals of Database Systems (5th Edition) 原出版社: Addison Wesley 作者: (美)Ramez Elmasri Shamkant B. Navathe [作译者介绍] 译者: 邵佩英 徐俊刚 王文杰 丛书名: 图灵计算机科学丛书 出版社:人民邮电出版社 ISBN:9787115171603 上架时间:2007-12-21 出版日期:2008 年1月 开本:16开 页码:300 版次:5-1 内容简介 本书是一本讲述数据库系统原理的经典教材,重点强调了数据库的设计与实现。全书分为4部分。第一部分讲述事务处理的概念、并发控制技术和数据库恢复技术;第二部分讲述面向数据库的概念、语言、设计及对象-关系和扩展-关系系统;第三部分主要描述了数据库安全和客户-服务器体系结构;第四部分简要介绍了xml、数据挖掘和数据仓库等几种新兴技术。 本书是高等院校计算机及相关专业本科生、研究生数据库系统课程的理想教材,也是对相关技术人员非常有价值的参考书。 作译者 Ramez elmasri是世界知名的数据库学者。现任得克萨斯大学职灵顿分校计算机科学与工程系教授。1980年于斯坦福大学获得计算机科学硕士和博士学位。他的主要研究方向是数据库系统、时间数据库、概念建模、面向对象数据库、Wed建模和本体论数据库模型和语言、DBMS系统实现、检索技术等。 Shamkant B.Navathe 世界知名的数据库学者。现任佐治亚理工学院计算学院教授,自1990年开始他一直在该校任教。他的主要研究方向是工程设计、生物(特别是人类基因组)数据库、文档及文本数据库等新兴应用中的数据库建模。设计和集成,此外,他对知识表示、数据挖掘和知识发现等也非常感兴趣。 目录 封面 -15 封底 -14 扉页 -13 版权 -12 版权声明 -11 译者序 -10 前言 -8 目录 -5 第一部分 事务处理的概念 1 第1章 事务处理的概念与理论简介 2 1.1 事务处理简介 2 1.1.1 单用户系统与多用户系统 2 1.1.2 事务、读写操作和DBMS缓冲区 3 1.1.3 并发控制的必要性 4 1.1.4 恢复的必要性 6 1.2 事务和系统概念 6 1.2.1 事务状态及附加操作 7 1.2.2 系统日志 7 1.2.3 事务的提交点 8 1.3 事务的描述特性 8 1.4 描述基于可恢复性调度的特征 9 1.4.1 事务的调度(历史) 9 1.4.2 描述基于可恢复性调度的特征 10 1.5 描述基于可串行性调度的特征 11 1.5.1 串行、非串行和冲突-可串行化调度 11 1.5.2 测试调度的冲突可串行性 14 1.5.3 可串行性的用途 16 1.5.4 视图等价和视图可串行性 17 1.5.5 调度等价性的其他类型 18 1.6 SQL中的事务支持 18 小结 19 复习题 20 练习题 20 参考文献 21 第2章 并发控制技术 22 2.1 并发控制的两阶段加锁技术 22 2.1.1 锁类型与系统锁表 22 2.1.2 通过两阶段加锁保证可串行性 26 2.1.3 死锁和饥饿处理 27 2.2 基于时间戳顺序的并发控制 29 2.2.1 时间戳 29 2.2.2 时间戳排序算法 30 2.3 多版本并发控制技术 31 2.3.1 基于时间戳排序的多版本技术 31 2.3.2 使用验证锁的多版本两阶段加锁 32 2.4 确认(乐观的)并发控制技术 32 2.5 数据项粒度和多粒度加锁 33 2.5.1 加锁的粒度级别考虑 34 2.5.2 多粒度级别加锁 34 2.6 索引中使用加锁进行并发控制 36 2.7 并发控制的其他问题 37 2.7.1 插入、删除以及幻像记录 37 2.7.2 交互式事务 38 2.7.3 锁存器 38 小结 38 复习题 38 练习题 39 参考文献 39 第3章 数据库恢复技术 41 3.1 恢复概念 41 3.1.1 恢复概述和恢复算法的分类 41 3.1.2 磁盘块的高速缓存(缓冲) 42 3.1.3 先写日志、潜入/非潜入和强制/非强制 42 3.1.4 系统日志中的检查点和模糊检查点 43 3.1.5 事务回滚 44 3.2 基于延迟更新的恢复技术 45 3.2.1 单用户环境下使用延迟更新的恢复 46 3.2.2 多用户环境下并发执行的延迟更新 46 3.2.3 不影响数据库的事务活动 48 3.3 基于即时更新的恢复技术 48 3.3.1 单用户环境下基于即时更新的UNDO/REDO恢复 49 3.3.2 多用户环境下基于即时更新的UNDO/REDO恢复 49 3.4 镜像分页 49 3.5 ARIES恢复算法 50 3.6 多数据库系统中的恢复 53 3.7 数据库备份和灾难性故障恢复 53 小结 54 复习题 54 练习题 55 参考文献 57 第二部分 对象和对象-关系数据库 59 第4章 面向对象数据库的概念 60 4.1 面向对象的概念 61 4.2 对象标识、对象结构和类型构造器 63 4.2.1 对象标识 63 4.2.2 对象结构 63 4.2.3 类型构造器 66 4.3 操作、方法和持久性的封装 67 4.3.1 通过类操作指定对象行为 67 4.3.2 通过命名和可达性指定对象的持久性 69 4.4 类型、类层次和继承 70 4.4.1 类型层次和继承 70 4.4.2 对应于类型层次的外延约束 72 4.5 复杂对象 72 4.5.1 非结构化复杂对象和类型可扩展性 73 4.5.2 结构化复杂对象 73 4.6 其他面向对象的概念 74 4.6.1 多态性(操作符重载) 74 4.6.2 多重继承与选择性继承 75 4.6.3 版本和配置 75 小结 76 复习题 76 练习题 77 参考文献 77 第5章 对象数据库标准、语言和设计 78 5.1 ODMG对象模型概述 79 5.1.1 对象和文字 79 5.1.2 汇集对象的内置接口 83 5.1.3 原子(用户定义)对象 85 5.1.4 接口、类和继承 86 5.1.5 类外延、码和工厂对象 86 5.2 对象定义语言(ODL) 88 5.3 对象查询语言(OQL) 92 5.3.1 简单OQL查询、数据库入口点和迭代变量 92 5.3.2 查询结果和路径表达式 93 5.3.3 OQL的其他特性 95 5.4 C++语言绑定概述 98 5.5 对象数据库概念设计 99 5.5.1 ODB与RDB概念设计的区别 99 5.5.2 EER模式到ODB模式的映射 100 小结 101 复习题 102 练习题 102 参考文献 102 第6章 对象-关系和扩展-关系系统 104 6.1 SQL及其对象-关系特性概述 104 6.1.1 SQL标准及其组件 104 6.1.2 SQL-99中的对象-关系支持 105 6.1.3 SQL中一些新操作和特性 109 6.2 数据模型的演变和数据库技术的当前发展趋势 109 6.3 Informix Universal Server 110 6.3.1 可扩展数据类型 111 6.3.2 支持用户定义例程 112 6.3.3 支持继承 113 6.3.4 支持索引扩展 115 6.3.5 支持外部数据源 115 6.3.6 支持数据刀片应用编程接口 115 6.4 Oracle 8的对象-关系特性 118 6.4.1 Oracle对象-关系特性的一些示例 118 6.4.2 管理大对象以及其他存储特性 119 6.5 扩展类型系统的实现和相关问题 120 6.6 嵌套关系数据模型 120 小结 122 参考文献 122 第三部分 高级主题:安全性、高级建模和分布式 125 第7章 数据库的安全性 126 7.1 数据库安全性问题简介 126 7.1.1 安全性的类型 126 7.1.2 控制措施 127 7.1.3 数据库安全性和DBA 128 7.1.4 访问保护、用户账户和数据库审计 128 7.2 基于授予和收回权限的自主访问控制 129 7.2.1 自主性权限的类型 129 7.2.2 使用视图指定权限 130 7.2.3 收回权限 130 7.2.4 使用GRANT OPTION选项传播权限 130 7.2.5 一个示例 130 7.2.6 指定权限传播的限定 131 7.3 多级安全性的强制访问控制和基于角色访问控制 132 7.3.1 自主访问控制与强制访问控制的比较 134 7.3.2 基于角色的访问控制 134 7.3.3 XML访问控制 135 7.3.4 电子商务和Web的访问控制策略 135 7.4 统计数据库的安全性简介 136 7.5 流控制简介 137 7.6 加密和公钥构架 138 7.6.1 数据加密标准和高级加密标准 138 7.6.2 公钥加密 138 7.6.3 数字签名 139 7.7 保密性问题和保护 140 7.8 数据库安全性所面临的挑战 140 7.8.1 数据质量 140 7.8.2 知识产权 140 7.8.3 数据库生存能力 140 小结 141 复习题 141 练习题 142 参考文献 142 第8章 面向高级应用的增强数据模型 144 8.1 主动数据库概念和触发器 145 8.1.1 主动数据库和Oracle触发器的一般模型 145 8.1.2 主动数据库的设计和实现 148 8.1.3 STARBURST系统中使用语句级主动规则的示例 150 8.1.4 主动数据库的潜在应用 151 8.1.5 SQL-99中的触发器 152 8.2 时态数据库概念 152 8.2.1 时间表示法、日历和时间维 153 8.2.2 使用元组版本化在关系数据库中加入时间 154 8.2.3 使用属性版本化在面向对象数据库中加入时间 159 8.2.4 时态查询构造与TSQL2语言 160 8.2.5 时间序列数据 161 8.3 空间和多媒体数据库 162 8.3.1 空间数据库概念介绍 162 8.3.2 多媒体数据库概念介绍 163 8.4 演绎数据库介绍 164 8.4.1 演绎数据库概述 164 8.4.2 Prolog/Datalog表示法 165 8.4.3 Datalog表示法 166 8.4.4 子句形式与Horn子句 167 8.4.5 规则解释 168 8.4.6 Datalog程序及其安全性 169 8.4.7 关系操作的使用 171 8.4.8 非递归Datalog查询的估算 172 小结 173 复习题 174 练习题 174 参考文献 177 第9章 分布式数据库和客户-服务器体系结构 178 9.1 分布式数据库概念 178 9.1.1 并行与分布式技术 179 9.1.2 分布式数据库的优势 180 9.1.3 分布式数据库的附加功能 181 9.2 分布式数据库设计的数据分片、复制和分配技术 182 9.2.1 数据分片 182 9.2.2 数据复制和分配 184 9.2.3 分片、分配和复制示例 185 9.3 分布式数据库系统的类型 187 9.4 分布式数据库中的查询处理 189 9.4.1 分布式查询处理的数据传输代价 189 9.4.2 使用半连接的分布式查询处理 191 9.4.3 查询和更新分解 191 9.5 分布式数据库中并发控制和恢复概述 193 9.5.1 基于识别数据项副本的分布式并发控制 194 9.5.2 基于投票方法的分布式并发控制 195 9.5.3 分布式恢复 195 9.6 三层客户-服务器体系结构概述 195 9.7 Oracle分布式数据库 197 小结 199 复习题 199 练习题 200 参考文献 201 第四部分 新兴技术 203 第10章 使用PHP进行Web数据库程序设计 204 10.1 结构化、半结构化以及非结构化数据 204 10.2 一个简单的PHP示例 207 10.3 PHP基本特性概述 209 10.3.1 PHP变量、数据类型和程序设计结构 209 10.3.2 PHP数组 210 10.3.3 PHP函数 211 10.3.4 PHP服务器变量和表单 213 10.4 PHP数据库程序设计概述 214 10.4.1 连接数据库 214 10.4.2 从表单中汇集数据并插入记录 215 10.4.3 数据库表的检索查询 216 小结 217 复习题 217 练习题 217 实验练习题 217 参考文献 218 第11章 XML:可扩展标记语言 219 11.1 XML层次(树)数据模型 219 11.2 XML文档、DTD和XML模式 221 11.2.1 合式、有效XML文档及XML DTD 221 11.2.2 XML模式 222 11.3 XML文档和数据库 226 11.3.1 存储XML文档的方法 226 11.3.2 从关系数据库中抽取XML文档 227 11.3.3 断开环以实现从图到树的转换 230 11.3.4 从数据库抽取XML文档的其他步骤 230 11.4 XML查询 231 11.4.1 XPath:在XML中指路径表达式 231 11.4.2 XQuery:在XML中指定查询 232 小结 232 复习题 233 练习题 233 参考文献 233 第12章 数据挖掘概念 234 12.1 数据挖掘技术概述 234 12.1.1 数据挖掘和数据仓库 234 12.1.2 数据挖掘是知识发现过程的一部分 234 12.1.3 数据挖掘和知识发现的目标 235 12.1.4 数据挖掘期间知识发现的类型 236 12.2 关联规则 237 12.2.1 市场购物篮模型、支持度与可信度 237 12.2.2 Apriori算法 238 12.2.3 采样算法 239 12.2.4 频繁模式树算法 239 12.2.5 分区算法 241 12.2.6 其他类型的关联规则 242 12.2.7 关联规则的附加考虑 244 12.3 分类 244 12.4 聚类 246 12.5 其他数据挖掘问题的方法 248 12.5.1 序列模式的发现 248 12.5.2 时间序列中模式的发现 248 12.5.3 回归 249 12.5.4 神经网络 249 12.5.5 遗传算法 249 12.6 数据挖掘的应用 250 12.7 商业化数据挖掘工具 250 12.7.1 用户界面 251 12.7.2 应用编程接口 251 12.7.3 未来的方向 251 小结 252 复习题 252 练习题 252 参考文献 254 第13章 数据仓库和OLAP概述 255 13.1 概述、定义和术语 255 13.2 数据仓库的特性 256 13.3 数据仓库的数据模型 257 13.4 构建数据仓库 261 13.5 数据仓库的典型功能 263 13.6 数据仓库和视图 263 13.7 数据仓库中的难题和开放问题 264 13.7.1 数据仓库实现中的困难 264 13.7.2 数据仓库的开放问题 264 小结 265 复习题 265 参考文献 265 第14章 新兴的数据库技术及应用 266 14.1 移动数据库 266 14.1.1 移动计算体系结构 266 14.1.2 移动环境的特征 269 14.1.3 数据管理问题 270 14.1.4 应用:间歇同步数据库 270 14.2 多媒体数据库 271 14.2.1 多媒体数据和应用的特征 271 14.2.2 数据管理问题 272 14.2.3 开放研究问题 273 14.2.4 多媒体数据库应用 274 14.3 地理信息系统(GIS) 275 14.3.1 GIS系统组件 276 14.3.2 GIS中数据的特征 276 14.3.3 GIS概念数据模型 278 14.3.4 GIS的DBMS增强功能 278 14.3.5 GIS标准和操作 279 14.3.6 GIS应用和软件 281 14.3.7 GIS未来的工作 282 14.4 基因组数据管理 283 14.4.1 生物科学和遗传学 283 14.4.2 生物数据的特征 284 14.4.3 人类基因组项目和现有的生物数据库 286 参考文献 289 致谢 291 附录A ER模型的可选图形表示法 292 附录B 磁盘参数 294 附录C QBE语言概述 296 前言 近几年来,虽然许多出版社都影印和翻译了多种数据库系统方面的教材,我们也曾与中国人民大学张坤龙老师等一起翻译了《数据库系统基础》的第3版。凭我们多年来从事数据库课程教育的实践经验,认为Elmasri和Navathe的《数据库系统基础》是一本出色的、系统的、先进的、实用的数据库课程教科书。它清晰地阐述了数据库系统理论和设计问题;它的内容极为充实,广泛地涵盖了所有涉及数据库系统的设计、实现和管理所要求的诸多专题;它使用优秀的实例引入最新的现代数据库技术,全书贯穿两个例子:COMPANY和UNIVERSITY,使得读者能够使用同一个应用来比较不同的方法。当我们得到并初步阅读了Elmasri和Navathe的《数据库系统基础》第5版时,我们发现它对全书又作了完善性修改和更新,适时地反映了数据库技术和应用开发的最新发展趋势。而且它新增了一些应用实例使读者可以参与其中,而书中章节后面的练习题和新的实验题,又可以让读者获得基于现代数据库技术,如Oracle、MySQL和SQLServer,以及了解使用PHP和XML的Web数据库编程,获得建造数据库应用系统的实践经验。《数据库系统基础》正在成为从技术角度而不是从商业角度介绍数据库系统的权威教材。它既适合于研究生又适合于本科生使用,更为教师提供了足够丰富的数据库课程教育素材。当然,本书也是从事数据库技术研究和应用开发人员的良师益友。 这就是为什么我们还要花费大量精力和时间来翻译本书的原因和理由。 本书包括8个部分和5个附录。从第1部分开始,介绍了为更好地掌握数据库设计与实现所需的基本概念,以及数据库系统中用到的概念建模技术。第2部分到第4部分深入讲解了数据库系统基础中最重要的几个方面,包括:关系模型的概念、约束、语言、设计和编程,数据库设计理论和方法学,数据存储、索引、查询处理和物理设计。第5部分和第6部分是数据库系统的高级专题,包括:事务处理、并发控制、恢复技术,以及对象和对象-关系数据库,并给出了如何用SQL实现这些概念。第7和第8部分作为结束,对诸如数据库安全性,适应高级应用的增强数据模型,分布式数据库及三层客户/服务器据结构,以及XML、Web数据库、数据挖掘、数据仓库、移动数据库、多媒体数据库、地理信息系统、基因数据管理等新兴技术作了介绍。附录A给出许多可选用的显示ER或EER模式的图形记号;附录B给出磁盘的一些重要物理参数;附录C给出最早的图形化查询语言之一:示例查询(Query-By-Example,QBE)语言的概述;附录D和E介绍基于层次数据模型和网状数据模型的传统数据库系统(http://www.aw.com/elmasri)。 本书分为上、下两册:上册包括第1~4部分及附录,建议可以作为“数据库导论课程”的教科书;下册包括第5~8部分及附录,建议可以作为“数据库高级课程”的教科书。当然,正如在本书的前言中所指出的那样,讲授一门数据库课程有许多种不同的方式,各位教师可根据课程侧重点的不同,以及根据学生的背景和需求组织教学内容。在前言中展示的各章节间的主要依赖关系图可以作为参考,各主题可以按不同顺序进行讲授。可以跳过那些选择性的章节,也可以添加书中其余部分的章节以便充实课程。 本书的翻译和审校由中国科学院研究生院信息学院邵佩英教授、徐俊刚副教授、王文杰副教授共同组织完成。参加翻译的还有(按姓氏笔画)裴莹、陈明、丁杰、林欢欢、张坤、张颖、周良、余清等。全书由邵佩英教授负责统一定稿。由于水平有限,翻译不当之处,恳请读者批评指正。 本书翻译过程中曾得到中国科学院高能物理所李伯民研究员的关心和指导,得到我们的研究生王辉、祝孔强、阚劲松的帮助,在此向他们表示衷心的感谢。我们还应感谢人民邮电出版社杨海玲等编辑们,是他们的远见和支持,使得本书能够尽快与读者见面。 译者 中国科学院研究生院信息学院 2007年5月 本书介绍了在设计、使用和实现数据库系统及应用时所需的基本概念。书中重点强调了数据库建模与设计的基础、数据库管理系统提供的语言和工具,以及系统实现技术。本书旨在作为本科生或研究生的数据库系统课程(一个或两个学期)的教材或教学参考书。本书假定读者已熟悉基本的程序设计和数据结构的概念,并对基本的计算机组成知识有所了解。 本书第一部分先提供了一个引言,并介绍了最基本的概念和术语以及数据库概念建模原则。第二部分到第四部分深入讲解了数据库基础中最重要的几个方面。 以下是第5版的主要特色: ●本书内容的组织遵循独立性和灵活性原则,可以根据个人需要进行取舍。 ●新增加了一章来介绍SQL程序设计技术,这种技术用于使用PHP(一种流行的脚本语言)的Web应用。 ●对每章末尾的习题集进行了更新和扩充。 ●提供了一个辅助网站(http://www.aw.com/elmasri),其中包括可以装载到各种类型关系数据库中的数据,以便学生更好地进行实验题。 ●提供了一个简单的关系代数和关系演算解释程序。 ●每章末尾的实验题(第3章~第12章)涵盖了该章的主题,这些主题是与本书辅助网站上的数据库相关联的;这些实验题一开始是介绍性的,在后续的章节中则将引入新的资料对其进行扩展。 ●对补充资料进行了重要的修订,包括为教师和学生而准备的一组资料,例如PowerPoint幻灯片和书中的图表,以及带有答案的教师指导手册。 ■与第4版的主要区别 第5版对全书内容的组织结构改动较少,主要改动集中于对单独某一章的改进上。主要改动如下: ●增加了新的实验题,并对每章(第一部分到第三部分)末尾的练习题做了改进。 ●给出了说明规范化和数据库设计算法的新示例(第10章和第11章)。 ●给出了一种新设计,这种设计增强了书中插图的视觉效果,并对各种属性和实体类型使用了特殊字体,从而增强了可读性和可理解性。 ■第5版的内容 第一部分描述了为更好地掌握数据库设计与实现所需的基本概念,以及数据库系统中用到的概念建模技术。第1章和第2章介绍了数据库、数据库的典型用户以及DBMS(数据库管理系统)的概念、术语和体系结构。第3章介绍了实体—联系(Entity-Relationship, ER)模型和ER图的概念,并用它来说明概念数据库设计。第4章重点讨论数据抽象和语义数据建模的概念,并且扩展ER模型以便把这些概念融入到模型中,从而产生增强的实体—联系(Enhanced ER, EER)数据模型和EER图。第4章提出的概念包括子类、特化、泛化和并类型(类别)。在第3章和第4章中还介绍了UML类图表示法。 第二部分描述了关系数据模型和关系型DBMS。第5章描述了基本关系模型、完整性约束和更新操作;第6章描述了关系代数操作,并介绍了关系演算;第7章讨论了通过ER到关系的映射和EER到关系的映射进行关系数据库设计;第8章详细介绍了SQL语言,包括SQL标准,大多数关系型系统中都实现了这一标准;第9章介绍了有关SQL程序设计的主题,如SQLJ、JDBC和SQL/CLI。 第三部分讨论了一些与数据库设计有关的主题。第10章和第11章涵盖了通过规范化进行关系数据库设计而开发的形式化体系、理论和算法。这些内容包括函数依赖和其他类型的依赖,以及各种关系范式等;第10章对规范化提供了循序渐进的直观的讲解;第11章则给出了带有示例的关系设计算法,并定义了一些其他类型的依赖,如多值依赖和连接依赖等;第12章概要介绍了使用UML完成中型和大型应用数据库设计过程中的各个阶段。 第四部分从描述数据库系统中使用的物理文件结构和存取方法开始。第13章描述了磁盘上组织记录文件的主要方法,包括静态和动态的散列技术;第14章描述了文件的索引技术,包括B树和B+树数据结构和网格文件;第15章介绍了查询处理与优化的基本知识;第16章讨论了物理数据库的设计与调优。 附录A给出了展示基本的ER或EER模式时还可选用的其他一些图示表示法。如果教师认为必要,可以用这些表示法替代书中所用的表示法。附录B给出了关于磁盘的一些重要的物理参数。附录C概述了QBE图形查询语言。附录D和附录E(在本书的辅助网站http://www.aw.com/elmasris 中也可找到)讨论了基于分层和网状数据模型的遗留数据库系统。这些已经使用了30多年的数据库系统是现今许多商业数据库应用和事务处理系统的基础,要完全取代它们还需要数十年。我们认为,对于学习数据库管理的学生来说,了解这些存在已久的方法也是很重要的。 ■如何使用本书 讲授数据库课程有许多种不同的方式。本书的第一部分到第四部分中的各章可用于讲授数据库系统的导论课程,各位教师可以按照本书给出的顺序,也可以按照自己喜欢的顺序组织讲授。根据课程侧重点的不同,教师可以跳过那些选择性的章节,也可以添加书中其余部分的章节以充实授课内容。在每章开篇的最后列出了对某个特定的主题不需要详细讨论的情况下可以跳过的小节。我们建议作为数据库导论课程的教材,可以选用第1章到第14章的内容,并根据学生的背景和需求,从本书中的其他章节选择一些内容添加进来。如果要强调系统实现技术,那么可以包括本书第四部分和本书姊妹篇《数据库系统基础:高级篇》的第一部分的内容。 第3章和第4章涵盖了如何使用ER模型和EER模型进行概念建模,这部分内容对于较好地从概念上理解数据库是很重要的。但是,这两章内容可以有选择地讲授,或者在课程的后期讲授,如果课程的重点是数据库管理系统(DBMS)的实现,甚至可以跳过这两章。第13章和第14章介绍的是文件组织和索引,这两章内容同样可以在课程的前期或后期讲授,如果课程的重点是数据库模型和语言,也可以跳过这两章。对于学习过文件组织课程的学生,可以把这几章的部分内容作为课后阅读材料,或者布置一些练习题来复习这些概念。 一个有完整生命周期的数据库设计与实现的项目,要涵盖概念设计(第3章和第4章)、数据模型映射(第7章)、规范化(第10章)和SQL实现(第9章)。同时还需要有关特定的程序设计语言和RDBMS的附加文档。 本书在编写时就考虑到了其主题可以按不同顺序进行讲授。下图展示了各章之间的主要依赖关系 。由图可知,在前面引导性的两章之后,可以从多个不同的主题开始讲授。这个图可能看起来有些复杂,但它显现了非常重要的一点是,如果按照如图所示的顺序进行讲授,章节间的依赖关系就不会丢失。如果教师想以自己选择的顺序来讲授课程,那么可以将此图作为参考。 如果将本书作为一个学期课程的教材,可以将某些章节留作课外阅读资料。第四部分、《数据库系统基础:高级篇》的第三部分和第四部分可以考虑作为这样的阅读资料。如果将本书作为上、下两个学期的教材,第一学期的课程“数据库设计/系统导论”,面向大二、大三或大四的学生,可以涵盖第1章~第14章的大部分内容。第二学期的课程“数据库设计与实现技术”,面向大四学生或一年级研究生,则可涵盖《数据库系统基础:高级篇》中的内容。在以上两个学期中可以有选择地选用《数据库系统基础:高级篇》第三部分和第四部分中的某些章节。除本书之外,如果学生所在学院还有其他介绍DBMS的资料,也可以作为本书的附加资料进行学习。 ■补充资料 本书的所有使用者均可获得辅助资料。 ●在网站http://www.aw.com/cssupport上提供了PowerPoint讲稿和图。 ●在本书辅助网站(http://www.aw.com/elmasri)上提供了第5版新增的实验手册。实验手册包括流行的数据建模工具、关系代数和关系演算解释程序,以及本书中使用的两个通用数据库管理系统实现的示例。本书每章末尾的实验题也与实验手册相关。 ●得到确认的教师可以获得习题答案。请访问Addison-Wesley 的教师资源中心(http://www.aw.com/irc)、联系当地的Addison-Wesley销售代表或者发送电子邮件到computing@aw.com以获取如何获得习题答案的信息。 ■致谢 非常荣幸能够向这么多人致谢,感谢他们对本书的帮助与贡献。首先要感谢本书的编缉Matt Goldstein及Katherine Harutunian。特别要感谢第5版的首席编辑Matt Goldstein所付出的努力及帮助。我们还要感谢Addison-Wesley的那些为第5版做出贡献的人们:Michelle Brown、Gillian Hall、Patty Mahtani、Maite Suarez-Rivas、Bethany Tidd和Joyce Cosentino Wells。我们感谢Gillian Hall完成了本书的内部设计,包括版式、字体和艺术设计方面非常细致的工作,正是她周全的考虑,我们才有了如此美观的书。 我们感谢为本书作出贡献的审稿人: Hani Abu-Salem,迪保罗大学 Jamal R. Alsabbagh, 大河谷州立大学 Ramzi Bualuan,圣母大学 Soon Chung,赖特州立大学 Sumali Conlon,密西西比大学 Hasan Davulcu,亚利桑那州立大学 James Geller,新泽西理工学院 Le Gruenwald,俄克拉何马大学 Latifur Khan,得克萨斯大学达拉斯分校 Herman Lam,佛罗里达大学 Byung S.Lee,佛蒙特大学 Donald Sanderson,东田纳西州立大学 Jamil Saquer,西南密苏里州立大学 Costas Tsatsoulis,堪萨斯大学 Jack C. Wileden,马萨诸塞大学阿默斯特分校 我们感谢Raj Sunderraman与我们一起完成了本书的实验部分并设计了实验题。旧金山大学的Salman Azar也贡献了部分习题。 Sham Navathe要向他佐治亚理工学院的学生们致谢:Saurav Sahay、Liora Sahar、Fariborz Farahmand、Nalini Polavarapu、Wanxia Xie、Ying Liu以及Gaurav Bhatia。Ed Omiecinski也曾提供了有价值的建议和修正。 我们还要再次感谢曾经审阅本书以及为本书前几版做出过贡献的人们。 ●第1版。Alan Apt(编缉)、Don Batory、Scott Downing、Dennis Heimbinger、Julia Hodges、Yannis Ioannidis、Jim Larson、Dennis McLeod、Per-Ake Larson、Rahul Patel、Nicholas Roussopoulos、David Stemple、Michael Stonebraker、Frank Tompa和Kyu-Young Whang。 ●第2版。Dan Joraanstad(编缉)、Rafi Ahmed、Antonio Albano、David Beech、Jose Blakeley、Panos Chrysanthis、Suzanne Dietrich、Vic Ghorpadey、Goets Graefe、Eric Hanson、Junguk L.Kim、Roger King、Vram Kouramajian、Vijay Kumar、John Lowther、Sanjay Manchanda、Toshimi Minoura、Inderpal Mumick、Ed Omiecinski、Girish Pathak、Raghu Ramakrishnan、Ed Robertson、Eugene Sheng、David Stotts、Marianne Winslett以及Stan Zdonick。 ●第3版。Maite Suarez-Rivas和Katherine Harutunian(编缉)、Suzanne Dietrich、Ed Omiecinski、Rafi Ahmed、Francois Bancilhon、Jose Blakeley、Rick Cattell、Ann Chervenak、David W.Embley、Henry A. Etlinger、Leonidas Fegaras、Dan Forsyth、Farshad Fotouhi、Michael Franklin、Sreejith Gopinath、Goetz Craefe、Richard Hull、Sushil Jajodia、Ramesh K. Karne、Harish Kotbagi、Vijay Kumar、Tarcisio Lima、Ramon A. Mata-Toledo、Jack McCaw、Dennis McLeod、Rokia Missaoui、Magdi Morsi、M.Narayanaswamy、Carlos Ordonez、Joan Peckham、Betty Salzberg、Ming-Chien Shan、Junping Sun、Rajshekhar Sunderraman、Aravindan Veerasamy以及Emilia E.Villareal。 ●第4版。Maite Suarez-Rivas、Katherine Harutunian、Daniel Rausch以及Juliet Silveri(编缉);、Phil Bernhard、Zhengxin Chen、Jan Chomicki、Hakan Ferhatosmanoglu、Len Fisk、William Hankley、Ali R.Hurson、Vijay Kumar、Peretz Shoval、Jason T.L. Wang(审稿人);;Ed Omiecinski(协助完成了第27章);得克萨斯大学阿灵顿分校的贡献者有Hyoil Han、Babak Hojabri、Jack Fu、Charley Li、Ande Swathi以及Steven Wu;佐治亚理工学院的贡献者有Dan Forsythe、Weimin Feng、Angshuman Guin、Abrar Ul-Haque、Bin Liu、Ying Liu、Wanxia Xie以及Waigen Yee。 最后,我们真切地感谢我们的家人所给予的支持、鼓励和耐心。 R.E. S.B.N.
186.3MB
收获,不止SQL优化--抓住SQL的本质
2018-12-21第1章 全局在胸——用工具对SQL整体优化 1 1.1 都有哪些性能工具 1 1.1.1 不同调优场景分析 2 1.1.2 不同场景对应工具 2 1.2 整体性能工具的要点 4 1.2.1 五大性能报表的获取 5 1.2.2 五大报表关注的要点 10 1.3 案例的分享与交流 18 1.3.1 和并行等待有关的案例 18 1.3.2 和热块竞争有关的案例 19 1.3.3 和日志等待有关的案例 20 1.3.4 新疆某系统的前台优化 20 1.3.5 浙江某系统的调优案例 21 1.4 本章总结延伸与习题 21 1.4.1 总结延伸 21 1.4.2 习题训练 23 第2章 风驰电掣——有效缩短SQL优化过程 24 2.1 SQL调优时间都去哪儿了 25 2.1.1 不善于批处理频频忙交互 25 2.1.2 无法抓住主要矛盾瞎折腾 25 2.1.3 未能明确需求目标白费劲 26 2.1.4 没有分析操作难度乱调优 26 2.2 如何缩短SQL调优时间 27 2.2.1 先获取有助调优的数据库整体信息 27 2.2.2 快速获取SQL运行台前信息 27 2.2.3 快速拿到SQL关联幕后信息 28 2.3 从案例看快速SQL调优 29 2.3.1 获取数据库整体的运行情况 29 2.3.2 获取SQL的各种详细信息 29 2.4 本章总结延伸与习题 32 2.4.1 总结延伸 32 2.4.2 习题训练 33 第3章 循规蹈矩——如何读懂SQL执行计划 34 3.1 执行计划分析概述 35 3.1.1 SQL执行计划是什么 35 3.1.2 统计信息用来做什么 36 3.1.3 数据库统计信息的收集 37 3.1.4 数据库的动态采样 37 3.1.5 获取执行计划的方法(6种武器) 40 3.2 读懂执行计划的关键 48 3.2.1 解释经典执行计划方法 49 3.2.2 总结说明 55 3.3 从案例辨别低效SQL 55 3.3.1 从执行计划读出效率 56 3.3.2 执行计划效率总结 60 3.4 本章习题、总结与延伸 60 第4章 运筹帷幄——左右SQL执行计划妙招 62 4.1 控制执行计划的方法综述 63 4.1.1 控制执行计划的意义 63 4.1.2 控制执行计划的思路 64 4.2 从案例探索其方法及意义 65 4.2.1 HINT的思路 65 4.2.2 非HINT方式的执行计划改变 72 4.2.3 执行计划的固定 100 4.3 本章习题、总结与延伸 102 第5章 且慢,感受体系结构让SQL飞 103 5.1 体系结构知识 104 5.1.1 组成 104 5.1.2 原理 104 5.1.3 体会 105 5.2 体系与SQL优化 106 5.2.1 与共享池相关 107 5.2.2 数据缓冲相关 111 5.2.3 日志归档相关 116 5.3 扩展优化案例 118 5.3.1 与共享池相关 118 5.3.2 数据缓冲相关 122 5.3.3 日志归档相关 126 5.4 本章习题、总结与延伸 130 第6章 且慢,体验逻辑结构让SQL飞 132 6.1 逻辑结构 132 6.2 体系细节与SQL优化 133 6.2.1 Block 133 6.2.2 Segment与extent 137 6.2.3 Tablespace 139 6.2.4 rowid 139 6.3 相关优化案例分析 140 6.3.1 块的相关案例 141 6.3.2 段的相关案例 144 6.3.3 表空间的案例 148 6.3.4 rowid 151 6.4 本章习题、总结与延伸 153 第7章 且慢,探寻表的设计让SQL飞 154 7.1 表设计 154 7.1.1 表的设计 155 7.1.2 其他补充 155 7.2 表设计与SQL优化 156 7.2.1 表的设计 156 7.2.2 其他补充 179 7.3 相关优化案例分析 184 7.3.1 分区表相关案例 185 7.3.2 全局临时表案例 190 7.3.3 监控异常的表设计 195 7.3.4 表设计优化相关案例总结 199 7.4 本章习题、总结与延伸 199 第8章 且慢,学习索引如何让SQL飞 200 8.1 索引知识要点概述 201 8.1.1 索引结构的推理 201 8.1.2 索引特性的提炼 204 8.2 索引的SQL优化 206 8.2.1 经典三大特性 207 8.2.2 组合索引选用 217 8.2.3 索引扫描类型的分类与构造 219 8.3 索引相关优化案例 225 8.3.1 三大特性的相关案例 225 8.3.2 组合索引的经典案例 231 8.4 本章习题、总结与延伸 234 第9章 且慢,弄清索引之阻碍让SQL飞 235 9.1 索引的不足之处 235 9.1.1 索引的各种开销 236 9.1.2 索引使用失效 236 9.2 感受美好索引另一面 237 9.2.1 索引各种开销 237 9.2.2 索引使用失效 243 9.2.3 索引取舍控制 246 9.3 从案例看索引各种恨 248 9.3.1 索引的开销 248 9.3.2 索引去哪儿了 253 9.3.3 索引的取舍 267 9.4 本章习题、总结与延伸 269 第10章 且慢,其他索引应用让SQL飞 270 10.1 其他索引的总体概述 270 10.1.1 位图索引 271 10.1.2 函数索引 271 10.1.3 反向键索引 272 10.1.4 全文索引 272 10.2 走进其他索引的世界 272 10.2.1 位图索引 273 10.2.2 函数索引 278 10.2.3 反向键索引 282 10.2.4 全文索引 282 10.3 其他索引的相关案例 285 10.3.1 位图索引 286 10.3.2 函数索引 288 10.3.3 反向键索引 297 10.3.4 全文索引 299 10.4 本章习题、总结与延伸 300 第11章 且慢,表连接的秘密让SQL飞 302 11.1 三大经典表连接概要说明 302 11.2 各类型表连接的知识要点 303 11.2.1 从表的访问次数探索 304 11.2.2 表驱动顺序与性能 308 11.2.3 表连接是否有排序 311 11.2.4 各连接的使用限制 314 11.2.5 三大表连接的特性总结 317 11.3 从案例学表连接优化要点 (三刀三斧四式走天下) 317 11.3.1 一次Nested Loops Join的优化全过程 318 11.3.2 一次Hash Join 的 优化全过程 320 11.3.3 一次 Merge Sort Join 的优化全过程 324 11.3.4 一次统计信息收集不准确引发的NL性能瓶颈 329 11.4 本章习题、总结与延伸 332 第12章 动手,经典等价改写让SQL飞 333 12.1 设法减少访问路径 333 12.1.1 Case When改造 334 12.1.2 Rownum分页改写 337 12.1.3 Hint直接路径改造 338 12.1.4 只取你所需的列 339 12.1.5 避免或者减少递归调用 341 12.1.6 ROWID优化应用 347 12.2 设法避免外因影响 350 12.2.1 Hint改写确保执行计划正确 350 12.2.2 避免子查询的错误执行计划 350 12.2.3 所在环境的资源不足等问题 351 12.3 本章习题、总结与延伸 351 第13章 动手,过程函数优化让SQL飞 352 13.1 PL/SQL优化重点 353 13.1.1 定义类型的优化 353 13.1.2 PL/SQL的集合优化 355 13.1.3 PL/SQL的游标合并 361 13.1.4 动态SQL 364 13.1.5 使用10046trace 跟踪PL/SQL 368 13.2 PL/SQL优化其他相关扩展 369 13.2.1 编译无法成功 369 13.2.2 通用脚本分享 370 13.3 本章习题、总结与延伸 380 第14章 动手,高级写法应用让SQL飞 381 14.1 具体SQL调优思路 381 14.1.1 改写SQL调优 382 14.1.2 不改写SQL调优 382 14.2 高级SQL介绍与案例 383 14.2.1 GOURP BY的扩展 383 14.2.2 INSERT ALL 389 14.2.3 MERGE 392 14.2.4 WITH子句 402 14.3 本章习题、总结与延伸 404 第15章 动手,分析函数让SQL飞 406 15.1 高级SQL之分析函数 407 15.1.1 语法概述 407 15.1.2 特别之处 407 15.2 分析函数详解与案例 409 15.2.1 学习详解 410 15.2.2 案例分享 417 15.3 本章习题、总结与延伸 432 第16章 动手,把握需求改写让SQL飞 433 16.1 考虑需求最小化 434 16.2 千万弄清SQL改造的等价性 434 16.2.1 看似等价的写法,其实不等价 435 16.2.2 看似不等价的写法,其实等价 438 16.3 开发设计应用中的需求 439 16.3.1 界面权限设计优化 439 16.3.2 界面汇总与展现 439 16.3.3 界面实时刷新改良 439 16.3.4 目录树菜单的优化 440 16.4 场景选择的经典案例之谁是Count(*)之王 440 16.4.1 优化过程 440 16.4.2 优化总结 445 16.5 本章习题、总结与延伸 446 第17章 总结与延伸:从勿信讹传到洞若观火 447 17.1 SQL优化的各个误区 447 17.1.1 COUNT(*)与COUNT(列)的传言 447 17.1.2 谈SQL编写顺序之流言蜚语 451 17.1.3 IN与EXISTS之争 455 17.1.4 总结探讨 457 17.2 误区背后的话题扩展 457 17.2.1 话题扩展之等价与否优先 457 17.2.2 话题扩展之颠覆误区观点 458 17.3 全书完,致读者 461
24.4MB
PHP动态网页设计(第2版)(PHP Solutions)
2012-06-16高清英文PDF版。 《php动态网页设计(第2版)》分为3 个部分,共17 章。第一部分向初学者介绍php 开发的必备知识,重点介绍php 的功能、测试环境、基本语法等;第二部分内容包括包含文件、处理表单、上传和管理文件、生成缩略图以及使用会话传递信息等;第三部分利用php 与mysql 的绝佳组合打造动态网站,其中包括mysql 简介、使用php 连接mysql、创建动态在线图库、内容管理、格式化文本和日期、从多个表中提取数据、管理多个数据库表以及数据库用户身份验证等。 《php动态网页设计(第2版)》适合各个阶段的php 学习者阅读。 作为运行于服务器端并完全跨平台的嵌入式脚本编程语言,php吸取了众多编程语言的优点,成为众多网页设计人员制作动态网页的首选语言。
144.60MB
若干源程序资料12.rar
2012-06-110 1.txt 2012-06-11 21:42 554,081 13 套ROOTKITS源码—Windows内核的安全防护.rar 2012-06-11 21:41 1,322,993 1)华为研发(pdf版).pdf 2012-06-11 21:07 9,883 806419蚁群算法程序.rar 2012-06-11 21:40 60 access连接字符串.txt 2012-06-11 21:08 666 adc-test.c 2012-06-11 21:07 765,000 AS3游戏编程大学.pdf 2012-06-11 21:40 750,563 ATL开发指南源码.rar 2012-06-11 21:05 186,863 BIOS练习工具加BIOS完全手册.rar 2012-06-11 21:03 340,134 C++ Primer Plus.第五版.习题解答和例题代码.rar 2012-06-11 21:03 956,190 C++ Primer中文版(第4版)中的源代码.rar 2012-06-11 21:12 1,386,523 C++-打飞机的游戏.rar 2012-06-11 21:06 78,719 C++USB接口的鼠标驱动源程序.rar 2012-06-11 21:07 50,067 C++VC编写的退火算法.rar 2012-06-11 21:06 67,891 C++一示所有点阵字库内容的工具源代码.rar 2012-06-11 21:11 60,547 C++工会管理系统源代码.rar 2012-06-11 21:22 2,618,588 COM技术内幕源码.rar 2012-06-11 21:16 97,280 C语言 内存管理详解.doc 2012-06-11 21:06 387,499 c语言写的一个多任务内核.rar 2012-06-11 21:15 6,669,174 C语言常用算法集(人手一份).pdf 2012-06-11 21:44 2,279 C语言编一个程序完成64位数据(无符号)的加法,减法运算.txt 2012-06-11 21:43 1,480,155 Direct3D加载3d文件.rar 2012-06-11 21:29 22,102 DSP编程一周通.rar 2012-06-11 21:04 837,926 fatfs-0.08b.zip 2012-06-11 21:11 48,640 FFT算法.doc 2012-06-11 21:28 10,891,658 GPS应用程序设计.程序源代码.rar 2012-06-11 21:20 610,619 gram_analysis.rar 2012-06-11 21:38 536,654 HTML、CSS、JavaScript标签参考.pdf 2012-06-11 21:00 29,184 inline-block深入理解.doc 2012-06-11 21:44 6,947,979 Linux内核完全注释V3.0书签版(带源码).rar 2012-06-11 21:31 11,599 MATLAB仿真程序OFDM程序.txt 2012-06-11 21:37 14,584,477 msdn for vb6.0简体中文版.zip 2012-06-11 21:02 12,288 OpenCV 测试代码.doc 2012-06-11 21:41 0 OpenGL编程基础 源码.zip 2012-06-11 21:26 55,505 PHP实现多服务器共享SESSION数据.docx 2012-06-11 21:40 49,392 Pointers on C.zip 2012-06-11 21:22 3,386,253 R
-
下载
炎夏季节大体积混凝土温度裂缝的控制.doc
炎夏季节大体积混凝土温度裂缝的控制.doc
-
下载
APSO for PHEV in order to do optimization
APSO for PHEV in order to do optimization
-
下载
福建省南安市柳城中学2021届高三下学期周考(一)物理试题 Word版含答案.docx
福建省南安市柳城中学2021届高三下学期周考(一)物理试题 Word版含答案.docx
-
下载
大型悬挑现浇钢筋混凝土异形柱施工技术.doc
大型悬挑现浇钢筋混凝土异形柱施工技术.doc
-
下载
湿陷性黄土地区建筑物下沉加固技术.doc
湿陷性黄土地区建筑物下沉加固技术.doc
-
下载
云南省玉溪市一中2020-2021学年高二下学期4月月考数学(理)试题 Word版含答案.rar
云南省玉溪市一中2020-2021学年高二下学期4月月考数学(理)试题 Word版含答案.rar
-
下载
hev_subsystem.mdl
hev_subsystem.mdl
-
下载
RSServer.zip
RSServer.zip
-
下载
多层厂房结构综合加固技术.doc
多层厂房结构综合加固技术.doc
-
下载
openwrt-Printer-mt7620-rt-n14u-squashfs-sysupgrade.bin
openwrt-Printer-mt7620-rt-n14u-squashfs-sysupgrade.bin
