在access中,使用query如何使用但是出现这种问题要怎么解决呢?谢谢大家了~ 请求

当前位置: >>
数据库原理(第7版):使用Access 2013演示与实践--sy
国外计算 机 科 学 经 典 教材数据库原理(第7版):使用Access 2013演示与实践[美] David M. Kroenke David J.Auer 著 朱居正 译KROENKE/AUERDatabase ConceptsSeventh E
ditionPEARSONth Edition cepts, Seven Database Con 国外计算机科学经典教材数据库原理(第 7 版): 使用 Access 2013 演示与实践[美 ] David M. Kroenke David J.Auer 朱居正 著 译北京 Authorized translation from the English language edition, entitled Database Concepts, Seventh Edition, 978-0-13- by David M. Kroenke, David J.Auer, published by Pearson Education, Inc, publishing as Prentice Hall, Copyright ? , 2011. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. CHINESE SIMPLIFIED language edition published by PEARSON EDUCATION ASIA LTD., and TSINGHUA UNIVERSITY PRESS Copyright ? 2015. 北京市版权局著作权合同登记号 图字:01- 本书封面贴有 Pearson Education(培生教育出版集团)防伪标签,无标签者不得销售。 版权所有,侵权必究。侵权举报电话:010- 图书在版编目(CIP)数据 数据库原理(第 7 版):使用 Access 2013 演示与实践/( 美) 克伦克(Kroenke,D.M.) 等著;朱居正 译. ―北京:清华大学出版社,2015 (国外计算机科学经典教材) ISBN 978-7-302-39638-3 Ⅰ. ①数… Ⅱ. ①克… ②朱… Ⅲ. ①数据库系统―教材 Ⅳ. ①TP311.13中国版本图书馆 CIP 数据核字(2015)第 059292 号 责任编辑:王 军 于 平 装帧设计:牛静敏 责任校对:成凤进 责任印制: 出版发行:清华大学出版社 .cn 社 总 机:010-地 邮 邮址:北京清华大学学研大厦 A 座 编:100084 购:010-投稿与读者服务:010-,c-service@tup. 质 量 反 馈:010-,zhiliang@tup. 印 刷 者: 装 订 者: 经 销:全国新华书店 开 本:185×260 印 张:29 字 数:761 千字 (附光盘 1 张) 版 次:2015 年 5 月第 1 版 印 次:2015 年 5 月第 1 次印刷 印 数:1~ 3500 定 价:49.80 元 ―――――――――――――――――――――――――――――――――――――――――――― 产品编号: 出版说明近年来,我国的高等教育特别是计算机学科教育,进行了一系列大的调整和改革,亟 需一批门类齐全、具有国际先进水平的计算机经典教材,以适应我国当前计算机科学的教 学需要。通过使用国外优秀的计算机科学经典教材,可以了解并吸收国际先进的教学思想 和教学方法,使我国的计算机科学教育能够跟上国际计算机教育发展的步伐,从而培养出 更多具有国际水准的计算机专业人才,增强我国计算机产业的核心竞争力。为此,我们从 国外多家知名的出版机构 Pearson、McGraw-Hill、John Wiley & Sons、Springer、Cengage Learning 等精选、引进了这套“国外计算机科学经典教材” 。 作为世界级的图书出版机构,Pearson、McGraw-Hill、John Wiley & Sons、Springer、 Cengage Learning 通过与世界级的计算机教育大师携手, 每年都为全球的计算机高等教育奉 献大量的优秀教材。清华大学出版社和这些世界知名的出版机构长期保持着紧密友好的合 作关系,这次引进的“国外计算机科学经典教材”便全是出自上述这些出版机构。同时, 为了组织该套教材的出版,我们在国内聘请了一批知名的专家和教授,成立了专门的教材 编审委员会。 教材编审委员会的运作从教材的选题阶段即开始启动,各位委员根据国内外高等院校 计算机科学及相关专业的现有课程体系,并结合各个专业的培养方向,从上述这些出版机 构出版的计算机系列教材中精心挑选针对性强的题材, 以保证该套教材的优秀性和领先性, 避免出现“低质重复引进”或“高质消化不良”的现象。 为了保证出版质量,我们为该套教材配备了一批经验丰富的编辑、排版、校对人员, 制定了更加严格的出版流程。本套教材的译者,全部由对应专业的高校教师或拥有相关经 验的 IT 专家担任。每本教材的责编在翻译伊始,就定期不间断地与该书的译者进行交流与 反馈。为了尽可能地保留与发扬教材原著的精华,在经过翻译、排版和传统的三审三校之 后,我们还请编审委员或相关的专家教授对文稿进行审读,以最大程度地弥补和修正在前 面一系列加工过程中对教材造成的误差和瑕疵。 由于时间紧迫和受全体制作人员自身能力所限,该套教材在出版过程中很可能还存在 一些遗憾,欢迎广大师生来电来信批评指正。同时,也欢迎读者朋友积极向我们推荐各类 优秀的国外计算机教材,共同为我国高等院校计算机教育事业贡献力量。清华大学出版社 国外计算机科学经典教材编审委员会主任委员:孙家广 周立柱 王成山 王 珊 冯少荣 冯全源 刘乐善 刘腾红 吉根林 孙吉贵 阮秋琦 何 晨 吴百锋 李 彤 沈钧毅 邵志清 陈 纯 陈 钟 陈道蓄 周伯生 孟祥旭 姚淑珍 徐佩霞 徐晓飞 秦小麟 钱培德 曹元大 龚声蓉 谢希仁 清华大学教授 清华大学教授 天津大学教授 中国人民大学教授 厦门大学教授 西南交通大学教授 华中科技大学教授 中南财经政法大学教授 南京师范大学教授 吉林大学教授 北京交通大学教授 上海交通大学教授 复旦大学教授 云南大学教授 西安交通大学教授 华东理工大学教授 浙江大学教授 北京大学教授 南京大学教授 北京航空航天大学教授 山东大学教授 北京航空航天大学教授 中国科学技术大学教授 哈尔滨工业大学教授 南京航空航天大学教授 苏州大学教授 北京理工大学教授 苏州大学教授 中国人民解放军理工大学教授副主任委员: 委员(按姓氏笔画排序): 译 者 序随着计算机技术与网络通信技术的发展,数据库技术已成为信息社会中对大量数据进行组 织与管理的重要技术手段及软件技术,是网络信息化管理系统的基础。它不仅有完整的理论基 础,而且随着硬件技术与软件技术的飞速发展,它的应用也越来越广泛。 《数据库原理(第 7 版): 使用 Access 2013 演示与实践》 是数据库初学者和初级开发人员不可 多得的数据库宝典。本书的作者 David M. Kroenke 曾经在科罗拉多州立大学、西雅图大学、华盛 顿大学执掌教鞭多年,深谙《数据库原理》的教学精髓。本书的第 1 版于 2003 年出版,现在是 第 7 版,其中融入了作者对数据库深入透彻的理解和丰富的实际操作经验。本书力求对传统的数 据库理论和应用进行精简,保留实用的部分,使其更为通俗易懂,更为简明实用。全书共有 8 章, 主要内容包括:关系模型的基本原理、结构化查询语言(SQL)、数据建模、数据库设计、数据库 管理、Web 数据库处理等。 本版最重要的改进是介绍了 Big Data 的快速演变和相关的 NoSQL 运动。第 8 章围绕 Big Data 主题来组织,还介绍了数据仓库、群集的数据库服务器、分布式数据库、商业智能(BI) 系统等。附录 K 还提供了 Big Data 的更多信息,以深入讨论受本书篇幅所限未能讨论的内容。 此外, 本书在总结前几版的基础上对章节进行了更精确细微的调整, 使内容在逻辑上更加合理, 读起来更加流畅,更符合阅读习惯。 数据库原理是一门理论与工程实践密切相关的综合性课程, 能否运用所学的知识非常重要, 因此本书的每一章都带有一个“Access 工作台”部分,其中使用 Microsoft Access 来演示该章 的概念和技术,使读者可以将这些产品作为工具真正试验书中的内容,掌握适用于任意数据库 的基本原则,包括小型的 Microsoft Access 数据库到大型的 Microsoft SQL Server 或 Oracle 数据 库。另外,每章都提供了重要术语表、复习题、练习题(包括针对“Access 工作台”的练习题)、 案例问题集和三个贯穿本书始终的项目。各章的项目把每一章的主题联系在一起,读者可以通 过具体的案例巩固所学知识。 数据库原理是计算机类专业的核心课程,也是现在许多专业中涉及信息处理的首选课程。 如计算机应用技术、信息管理、软件、电子商务、经济管理等专业。本书可作为计算机各专业 及信息类、电子类等相关专业的本科、专科“数据库原理”类课程的教材,同时也可以供参加 自学考试人员、数据库应用系统开发设计人员、工程技术人员及其他相关人员参阅。 在这里要感谢清华大学出版社的编辑们,她们为本书的翻译投入了巨大的热情并付出了很 多心血。没有你们的帮助和鼓励,本书不可能顺利付梓。本书全部章节由朱居正翻译,参与本 次翻译活动的还有孔祥亮、陈跃华、杜思明、熊晓磊、曹汉鸣、陶晓云、王通、方峻、李小凤、 曹晓松、蒋晓冬、邱培强、洪妍、李亮辉、高娟妮、曹小震、陈笑。在此一并表示感谢! 对于这本经典之作,译者本着“诚惶诚恐”的态度,在翻译过程中力求“信、达、雅” ,但 是鉴于译者水平有限,错误和失误在所难免,如有任何意见和建议,请不吝指正。 最后,希望读者通过阅读本书能早日步入数据库设计的殿堂! 作 者 简介David M. Kroenke 在 1967 年作为 Rand 公司的暑期实习生进入了计算行业。此后,他的职 业生涯涉及教育、工业、顾问和出版等领域。 Kroenke 曾经在华盛顿大学、科罗拉多州立大学、西雅图大学任教。在多年的教学生涯中, 他组织了数十次由大学教授参加的教学研讨会。 1991 年,国际信息系统协会 (International Association of Information System)授予他“年度计算机教育家”的荣誉称号。 在工业方面,Kroenke 曾经为美国空军和波音计算机服务公司工作,是三家公司的主要创 办人。他曾任 Microrim 公司负责产品销售和开发的副总经理,是 Wall Data 公司在数据库部门 的首席技术专家。此外,他也是语义对象数据模型的创始者,其咨询客户包括 IBM、Microsoft、 Computer Sciences 公司以及许多其他公司和组织。 Kroenke 的著作 Database Processing:Fundamentals, Design,and Implementation 最初出版于 1977 年,现在已经是第 13 版(第 11、12、13 版均与 David Auer 合作编写),Database Concepts 已于 2003 年出版(现在是第 7 版)。他还出版了许多其他书籍,包括经典的 Business Computer Systems(1981)。他最近编写的书籍是 Using MIS(第 7 版)、Experiencing MIS(第 5 版)、MIS Essential(第 4 版)、Processs, Systems and Information: An Introdution to MIS (第 2 版,与 Earl McKinney 合作编写 ) 和 Essential of Processs, Systems and Information (与 Earl McKinney 合作 编写)。 由于渴望成为海员,Kroenke 也编写了 Know Your Boat: The Guide to Everything That Makes Your Boat Work。Kroenke 现居住在华盛顿州的西雅图市,婚后有两个孩子和三个外孙。 自 1994 年至今, David J. Auer 一直是西华盛顿大学 College of Business and Economics(CBE) 信息系统和技术服务的主管,也是 CBE 决策科学系的讲师。他从 1981 年开始在 CBE 中任教, 教授的课程包括数值方法、生产和操作管理、统计、财务、管理信息系统。除了管理 CBE 的计 算机、网络和其他技术资源之外,他还教授管理信息系统课程。 Auer 还教过管理信息系统 (Management Information System,MIS)原理和商业数据库开发课程,并负责开发 CBE 的网络架 构课程,包括计算机硬件和操作系统、远程通信和网络管理。Auer 和他人合编过几本与 MIS 相关的教材。 Auer 在华盛顿大学获得了英语文学学士学位, 在西华盛顿大学获得了数学和经济学学士学 位,在西华盛顿大学获得经济学硕士学位和辅导心理学硕士学位。Auer 是美国空军军官,他还 作为组织开发专家和治疗专家为 Employee Assistance Program(EAP)工作。 Auer 和妻子 Donna 居住在华盛顿州的贝灵汉市,他有两个孩子和五个外孙。 前 言Colin Johnson 是西雅图一家小型制造厂的产品主管。 几年前, Colin 计划构建一个数据库来 跟踪产品包中的产品。开始时他用电子表格完成这一工作,却无法通过该表获取所需的报表。 Colin 听说了 Microsoft Access,希望该软件能解决问题。经过几天的尝试,他发现无法掌握 Access,于是购买了一些流行的 Access 书籍并努力学习。不过最终他还是放弃了,而是聘请了 一个顾问,该顾问创建了一个大致可满足 Colin 要求的应用程序。一段时间以后,Colin 想修改 此应用程序,但不敢进行这样的尝试。 Colin 是一名成功的商人,他能够主动地去实现他的目标。作为一名老练的 Windows 用户, 他可以通过自学掌握 Excel、PowerPoint 以及大量面向生产的应用程序包。但他在使用 Access 解决问题时却停滞不前。Colin 认为“我确信我可以做到,但我没有更多的时间” 。这样的事件 非常引人注目,因为在过去的十年内这在很多人身上上演了无数次。 Microsoft、Oracle、IBM 和其他数据库管理系统(Database Management System,DBMS)厂 商都意识到了这一情况,他们投入了数百万美元来创建更好的图形界面、数以百计的多窗格向 导以及众多示例应用程序。遗憾的是,这样的努力无法从根本上解决问题。事实上,许多用户 并不清楚向导可以实现哪些功能。一旦这些用户需要改变数据结构或组件(例如表和查询),就 会陷入麻烦中,这令他们措手不及。如果不了解底层结构,这些用户就会无所适从。结果是数 据库和应用程序设计得非常糟糕,无法满足要求。 为什么像 Colin 这样的用户可以学会字处理软件或电子表格这样的产品,却学不会 DBMS 产品?首先,许多人都不熟悉数据库的基本概念。尽管每个人可能都知道段落和边距的含义, 但无法理解关系的概念。其次,他们可能觉得使用 DBMS 产品应该更容易。 “我们只想记录一 些内容,为什么实现起来却这么困难?”如果不了解关系模型,在存储数据之前将一张销售发 票分成五个单独的表就可能使商业用户感到困惑。 本书旨在帮助类似 Colin 的读者理解、创建和使用 DBMS 产品中的数据库,既适用于从书 店购买本书的自学者,也适用于使用本书作为教材的学生。本版的新内容这一版中的新内容和特色将使学生和本书的其他读者受益,其中包括: ● ● ● Microsoft Office 2013,特别是 Microsoft Access 2013 是本书使用的基本软件,运行在 Windows 8.1 下。 DBMS 软件更新为 Microsoft SQL Server 2014 Express 版本和 Oracle MySQL 5.6 Community Server。 第 3 章添加了介绍 SQL 连接概念的内容,以使读者更容易理解。 数据库原理(第 7 版):使用 Access 2013 演示与实践●附录 E 添加了通过 SQL/Persistent Stored Modules(SQL/PSM)进行 SQL 编程的内容,以 更好地组织这些以前散布在其他地方的内容。还讨论了如何把 Microsoft Excel 工作表 数据导入数据库。 本章简要介绍了 Big Data(大数据)和 NoSQL 运动的演变历史。这个内容主要在第 8 章 和新增的附录 K 中讨论。第 8 章还讨论了非关系型数据库的开发(例如 Cassandra 和 HBase)和 DBC e06 首次引入的 Hadoop 分布式文件系统。 附录 K 还详细讨论了 Big Data 设置中使用的 NoSQL 数据库,供希望深入介绍这个主题的教师使用。 第 7 章用 Oracle NetBeans IDE 替代了 Eclipse PDT IDE。Java JDK 和 NetBeans 的集成 安装文件可以下载,所以这些软件产品的安装就更容易了,参见附录 I。NetBeans IDE 还比 Eclipse PDT 更容易使用,学生创建第 7 章使用的 HTML 和 PHP Web 页面也就更●●容易。 我们保留了 DBC e06 中的所有主要创新,包括: ● ● 第 7 章中的 Web 数据库应用程序现在包含数据输入 Web 表单页面。这样 Web 数据库 应用程序就可以用数据输入和数据读取 Web 页面来创建。 Microsoft Access 2013 的介绍现在包含 Microsoft Access switchboard 表单(参见附录 H), 它用于为数据库应用程序建立菜单。switchboard 表单可用于建立数据库应用程序,其 中包含一个友好的主菜单,用户可以使用该菜单显示表单、打印报表、运行查询。 每章现在都包含一个独立的 Case Question 集。Case Question 集是一个问题集,一般不 需要学生完成上一章中同一个案例的工作(有一个故意设置的例外,它把数据建模和数 据库设计联系在一起)。在一些实例中,不同的章节可能使用同名的基本案例,但每个 实例都完全独立于其他实例。 ● 支持 Oracle Database Express Edition 11g Release 2。附录 B 介绍了如何使用该产品和 Oracle SQL Developer GUI 实用工具,这个附录只包括基本知识,书中的 Oracle SQL Developer 屏幕图用于演示特定的概念。●必要的基本概念如果不学习基本概念,只靠现有的技术就不可能成功使用 DBMS。凭借多年来为商业用户 开发数据库的经验,我们认为下面的数据库概念非常重要: ● 关系模型的基本概念 ● ● ● ● 结构化查询语言(SQL) 数据建模 数据库设计 数据库管理由于当前 Internet、World Wide Web 和分析工具的广泛使用,以及 NoSQL 运动的兴起,因 此另外增加四个基本概念: ● ● ● Web 数据库处理 数据仓库结构 商业智能(BI)系统X 前言● 非关系结构的数据存储 像 Colin 这样的用户(或将来从事类似工作的学生)不需要像信息系统专家那样深入地了解 这些主题。因此,本书只介绍最基本的概念,足以帮助 Colin 这样的用户创建和使用小型数据 库了。 本书的许多内容在 David M.Kroenke 和 David J.Auer 的 Database Processing: Fundamentals, Designs, and Implementation1 一书的基础上进行了重写和简化。 不过在本书内容上我们也力求讨 论准确,不会产生误导。即使学生已学习过更高级的数据库课程,也可从中获益。独立于 DBMS 产品的概念本书假设学生没有使用过任何特殊的 DBMS 产品,我们通过 Microsoft Access、SQL Server Express 版、Oracle Database Express 版和 MySQL Community Server 来演示数据库概念,使学生 可以将这些产品作为工具真正试验书中的内容,而这些概念都是以 DBMS 无关的方式出现。通 过这种方式学习,学生可以掌握适用于任意数据库的基本原则,包括小型的 Microsoft Access 数据库到大型的 Microsoft SQL Server 或 Oracle 数据库。而且这一方法也避免了一个常见的问 题:在同时介绍概念和产品时,学生容易混淆概念与产品特性和功能。例如,在讲授参照完整 性约束时,如果从概念的角度讲授会说明这时一个表中的列值必须总是由另一个表中的列值提 供,并解释这一约束出现在关系定义的上下文中的方式,以及 DBMS 或应用程序如何强制执行 这一约束。如果结合具体的 DBMS 讲授,如 Microsoft Access,学生就只知道:在某些情况下 选取复选框,而在其他情况下不选取。这很容易导致学生在学习产品特性时,会淡忘数据库的 基本概念。 这并不是说教学中不应使用 DBMS。相反,学生们可以通过使用商业 DBMS 产品来更好地掌 握这些概念。 本书的这一版包括 Microsoft Access、 SQL Server Express 版、 Oracle Database Express 版和 MySQL 的足够多的基础信息,使你无须其他书籍或资料就可以在课堂上使用这些产品。 本书还深入介绍了 Microsoft Access,因为它是一个非常流行的个人数据库产品,并且包括在 Microsoft Office Professional 应用程序套件中。但如果希望深入理解特定的 DBMS 或使用本书 没有介绍的 DBMS 产品, 则需要额外的书籍或资料。 Pearson 提供了 Microsoft Access 2013 和其 他 DBMS 产品的大量图书,可以结合本书一起学习。Access 工作台本书的这一版继续使用首次在第 3 版引入的特征―― “Access 工作台” 。由于 Microsoft Access 广泛用于初级数据库课程,因此介绍使用 Microsoft Access 的特定信息比较重要。每一 章都带有一个“Access 工作台”部分,其中使用 Microsoft Access 来演示本章的概念和技术。 “Access 工作台”部分在第 1 章中介绍了如何创建数据库和单个表,逐渐转移到不同主题,到 最后第 7 章介绍相对于 Microsoft Access 数据库的 Web 数据库处理, 和第 8 章介绍使用 Microsoft1. David M. Kroenke 和 David J. Auer 著, Database Processing: Fundamentals, Design, and Implementation,第 13 版(Upper Saddle River, NJ:Pearson/Prentice Hall, 2014)。XI 数据库原理(第 7 版):使用 Access 2013 演示与实践Access 和 Microsoft Excel 生成 PivotTable OLAP 报表。 本书并非试图全面论述 Microsoft Access, 而是介绍所有必要的基本 Access 主题, 使学生可以有效地构建并使用 Microsoft Access 数据库。重要术语、复习题、练习题、案例和项目学生能否运用所学的知识非常重要,因此每章都提供了重要术语表、复习题、练习题(包括 针对“Access 工作台”的练习题)、案例问题集和三个贯穿本书始终的项目。如果学生阅读并理 解了每一章的内容,就应能掌握每个重要术语的含义、能完成复习题。练习题要求学生将每章 所讲的概念应用到具体的小问题或任务中。 第一个项目 Garden Glory 向个人或企业提供园艺服务的合伙公司的数据库开发和使用。第 二个项目 James River 珠宝行分析了为一家零售店实施常客计划的数据库需求。第三个项目 Queen Anne Curiosity 商店关注的是零售业的销售和库存需求。本书的所有章节都包括这三个项 目(但 James River 珠宝行项目的具体内容位于在线的附录 D 中)。在每个实例中,都要求学生将 各章的知识运用到项目中。教师会在教师手册中找到使用这些项目的更多信息,还可以从本书 网站(/kroenke)中受密码保护的教师部分获得数据库和数据。本书使用的软件与之前我们使用与 DBMS 无关的方式进行讨论一样, 本书将尽可能选择独立于操作系统的 软件,目前网络上有非常多的杰出软件可以使用,许多大的 DBMS 厂商都提供了其主要产品的 免费版本(如 Microsoft 的 SQL Server Express 版,Oracle 公司的 Oracle Database Express 版,和 MySQL Community Server), Web 编辑器和集成开发环境(IDE)也很常用, 例如 Eclipse、 NetBeans 和 Visual Studio Express 版。PHP 被认为是第四个最常用的编程语言,可以下载用于许多操作系 统和 Web 服务器。 所以尽管本书的示例是用 Microsoft 操作系统、 SQL Server 2014 Express 版、 Microsoft Access 2013、 Microsoft Excel 2013 和 IIS Web 服务器创建的, 但它们大都很容易用 Linux、 MySQL Server Community 版、Apache OpenOffice Base、Apache OpenOffice Calc 和 Apache Web 服务器创建。 本书使用的一些软件产品,如 PHP 和 Eclipse 都可用于多种操作系统。 在过去 30 多年中,我们发现数据库和数据库应用程序的开发是一项愉快且有回报的活动。 我们相信:将来,数据库的数量、大小和重要性会不断增加,而该领域也越来越重要。希望本 书介绍的概念、知识和技术帮助学生成功地参与到现在和多年后的数据库项目中。对第 6 版的改进本版最重要的改进是介绍了 Big Data 的快速演变和相关的 NoSQL 运动。存储和处理极大 数据集的需求改变了数据库世界。尽管这些发展并没有改变本书介绍的数据库基础,但我们需XII 前言要把本书核心的关系数据库放在数据库的总体框架下,并使读者理解 Big Data 环境中使用的非 关系结构的数据存储。因此,第 8 章现在围绕 Big Data 主题来组织,还介绍了数据仓库、群集 的数据库服务器、分布式数据库、商务智能(BI)系统等。为了提供 Big Data 的更多信息,新增 了附录 K,以深入讨论受本书篇幅所限未能讨论的内容。有些读者希望包含上一版的 BI 内容, 这部分不再放在第 8 章,而放在附录 J 中。 最后, 第 6 版新增的案例问题集仍独立于各章节。 各章的项目把每一章的主题联系在一起, 但案例问题并不需要学生完成前面各章的案例。第 4、5 章的案例是一个例外,它把数据建模和 数据库设计联系起来,但每一章仍包含一个独立的案例。在一些实例中,不同的章节可能使用 同名的基本案例,但每个实例仍完全独立于其他实例。 Web 站点 / kroenke 提供了必要的 Microsoft Access 2013 数据库和 SQL 脚本。 当然,本书还更新了所有其他产品的信息, 尤其是包含新发布的 Microsoft SQL Server 2014 和 MySQL 5.6 Community Server。 我们继续保持并改进了本书前几版引入的几个特性: ● 在每章中使用“Access 工作台”介绍 Microsoft Access 的基础知识,现在包含 Microsoft Access switchboards(附录 H)。 ● 介绍 Microsoft SQL Server 2014 Express 版(附录 A)和 Oracle Database Express Edition 11g Release 2(附录 B)和 Oracle MySQL 5.6 Community Server (附录 C)的用法。附录 A、 附录 B 和附录 C 包含在本书配书光盘中。 使用示例数据集充分开发了在本书各个部分中使用的三个示例数据库: Wedgewood Pacific Corporation、Heather Sweeney Designs 和 Wallingford Motors。 PHP 脚本语言现在用于 NetBeans IDE,在 Web 数据库处理主题中使用 PHP,目前包含● ●Web 页面输入表单的代码。 ● 在重新构建的第 8 章中保留了多维数据库模型的内容,还介绍了 OLAP。 为了给新内容腾出空间,我们只好把本书以前版本中的一些很有价值的内容移到光盘中, 包括 James River 珠宝行项目的问题目前在光盘的附录 D 中,SQL 视图的内容目前在光盘的附 录 E 中,附录 E 还添加了 SQL Persistent Stored Modules(SQL/PSM)的内容,以及如何导入 Microsoft Excel 数据。报表系统和数据挖掘的商务智能系统内容目前在光盘的附录 J 中。本书概要本书包括 8 章和 11 个附录(附录内容包含在本书配书光盘中)。第 1 章解释了使用数据库的 原因、数据库的各个组件和开发方法。学生将学习数据库及其应用程序的用途、数据库相对于 电子表格列表的差别和优势。第 2 章介绍了关系模型,定义了基本的关系术语,还介绍了规范 化原则的基本概念,并描述了规范化过程。 第 3 章讲述了基本的 SQL 语句,介绍了定义数据的基本 SQL 语句,如 SQL SELECT 语句 和数据修改语句。本书并不介绍高级的 SQL 语句,只讲述基本语句。附录 E 还介绍了 SQL 视图。 接下来的两章讨论了数据库设计。第 4 章使用实体-关系(E-R)模型解决数据建模问题,其 中包括对数据建模的需求、基本的 E-R 术语和概念,并提供了一个简短的 E-R 建模示例应用程XIII 数据库原理(第 7 版):使用 Access 2013 演示与实践序(Heather Sweeney Designs)。第 5 章讲述了数据库设计,解释了规范化的基本概念。第 4 章示 例中的数据模型在第 5 章中则被转换为关系设计。 本版继续使用之前版本增加的较为有效的规范化讨论,使用一个四步过程来演示规范化关 系的规定步骤。这种方法不仅简化了规范化任务,而且使规范化原理更易于理解,因此当前版 本仍沿用了这一方法。 教师如需更多了解范式, 可参考第 5 章中介绍的大多数范式的简短定义。 最后三章讨论了数据库管理, 以及数据库在应用程序中的使用。 第 6 章概述了数据库管理, 构建了一个作为功能数据库的示例数据库,并用作讨论数据库管理需求的示例。本章探讨了并 发控制、安全性、备份及恢复技术。数据库管理主题很重要,因为它适用于所有数据库,即使 是个人或单用户数据库也是如此。事实上,在某些方面这些主题对于小型数据库更重要,因为 它们没有专业的数据库管理员来确保关键任务的执行。 第 7 章介绍了使用基于 Web 的数据库处理,包括开放数据库连接(ODBC)和 PHP 脚本语言 的使用。本章也讨论了可扩展标记语言(XML)的出现和基本概念。 第 8 章介绍了 Big Data 和 NoSQL 运动的新兴世界、 探讨了商业智能(BI)系统和支持它们的 数据仓库体系结构,但 BI 系统的许多内容都移到了附录 J。还讨论了多维数据库,解释了如何 为 Heather Sweeney Designs 建立多维数据库,并使用它生成 PivotTable OLAP 报表。第 8 章还 讨论了分布式数据和面向对象的数据库。 附录 A 提供了 SQL Server 2014 Express 版的简介, 附录 B 则提供了 Oracle Database Express Edition 11g Release 2 的类似介绍。附录 C 则提供了 MySQL 5.6 Community Server 的类似介绍。 在每章的 “Access 工作台” 中都包括了对 Microsoft Access 的介绍。 附录 D 目前包含 James River 珠宝行项目的问题,SQL 视图的内容在附录 E 中。附录 F 介绍了系统分析与设计,可以为第 4 章(数据建模)和第 5 章(数据库设计)提供参考――但本书主要关注数据库, 数据库在应用程序中 的使用。附录 F 详细描述了应用程序的开发过程。附录 G 简要介绍了 Microsoft Visio 2013,可 用作数据建模(第 4 章)和数据库设计(第 5 章)的工具。另一个有效的数据库设计工具是 MySQL 工作台, 其用法参见附录 C。 附录 H 介绍了 Microsoft Access switchboards, 扩展了第 5 章的 “Access 工作台”一节。附录 I 给出了启动和运转 Microsoft IIS Web 服务器、PHP 和 NetBeans PHP 开发 工具(PDT)的详细指导, 这些内容将有助于我们更好地学习第 7 章。 附录 J 提供了报表系统和数 据挖掘的内容,增加了商业智能(BI)系统的内容,以补充和支持第 8 章。最后,附录 K 提供了 Big Data 和 NoSQL 数据库的其他内容,以补充和支持第 8 章。在快速变化的环境下保持最新为使数据库的概念在各版中保持最新, 我们将根据需要在本书的网站(www.pearsonhighered .com/kroenke)上贴出更新表。教师资源和学生资料也可以从网站上获得,所以应时常浏览本书 的网站。致谢我们要感谢以下审稿人提出了高水平的、有益的意见和建议:XIV 前言Namjoo Choi,Kentucky 大学 David Chou, Eastern Michigan 大学 Geoffrey Decker,Northern Illinois 大学 Deena Engel,纽约大学 Marni Ferner,North Carolina,Wilmington 大学 Jean Hendrix,Arkansas 大学 Monticello 分校 Malini Krishnamurthi,加州州立大学 Fullerton Rashmi Malhotra,St. Joseph’s 大学 Gabriel M. Petersen,北加州中心大学 Eliot Rich,纽约州立大学 Albany 分校 Liz Thiry,Pennsylvania 州立大学 Bond Wetherbe,Taxes 技术学院 Diane Wolfe,Oklahoma 州立大学 我们还要感谢编辑 Nicole Sam、策划经理 Denise Vaughn、项目经理 Ilene Kahn 对编写本书 的专业支持和帮助,感谢 Robert Mills、Robert Yoder 和 Scott Vandenberg 对终稿的详细审阅。最 后,David Kroenke 还要感谢妻子 Lynda,David Auer 还要感谢妻子 Donna 的爱和对作者完成本 书的鼓励和忍耐。David Kroenke 西雅图,华盛顿区 David Auer 贝灵翰姆,华盛顿区XV 目 录第Ⅰ部分数据库基础1.4.11第 1 章 数据库入门 ................................ 3 1.1 使用数据库的原因 ....................... 3 1.1.1 关于列表的问题 .......................4 1.1.2 使用关系数据库表 ...................6 1.1.3 关系表的处理........................ 10 1.2 数据库系统的概念 ..................... 12 1.2.1 数据库 ................................... 12 1.2.2 DBMS.................................... 131.2.3 个人数据库系统和企业级数据 库系统 ................................... 16使用表单修改数据和删除 记录 ..................................... 42 创建单表的 Access 报表 ..... 43 关闭数据库并退出 Access 2013 ..................................... 451.4.12 1.4.131.3 NoSQL 数据库的概念 ................ 21 1.4 Access 工作台:第一部分―― 熟悉 Microsoft Access ................ 211.4.1 Wallingford Motors 客户关系 管理系统 ............................... 21 1.4.2 创建 Access 数据库 ............... 22 1.4.3 Office Fluent 用户界面 .......... 25 1.4.4 关闭数据库,退出 Access .... 27 1.4.5 1.4.6 1.4.7 打开已有的 Access 数据库.... 27 创建 Access 数据库表 ........... 29 在表中插入数据―― 数据表 视图 ....................................... 35 修改表中的数据―― 数据表 视图 ....................................... 38 删除表中的行―― 数据表 视图 ....................................... 39 在表中插入数据―― 使用 表单 ..................................... 40小结 ............................................. 45 重要术语 ..................................... 46 复习题 ......................................... 47 练习题 ......................................... 48 Access 工作台的重要术语 ......... 48 Access 工作台练习题 ............... 49 San Juan Sailboat Charters 案例问题 ................................... 50 1.12 Garden Glory 项目问题 ............ 51 1.13 James River 珠宝行项目问题..... 51 1.14 Queen Anne Curiosity 商店 项目问题 .................................. 52 1.5 1.6 1.7 1.8 1.9 1.10 1.11 第 2 章 关系模型 ................................. 53 2.1 关系 ............................................. 532.1.1 一个关系表与两个非关系表 的示例 ................................... 54 显示关系表结构要注意的 问题 ....................................... 55 术语说明 ............................... 562.1.21.4.82.1.32.21.4.91.4.10键的类型 ..................................... 56 2.2.1 复合键 ................................... 57 2.2.2 候选键与主键........................ 57 2.2.3 代理键 ................................... 60 2.2.4 外键与参照完整性 ................ 61 2.3 NULL 值的问题 .......................... 64 数据库原理(第 7 版):使用 Access 2013 演示与实践2.4函数依赖与规范化 ..................... 65 2.4.1 函数依赖 ............................... 65 2.4.2 再论主键与候选键 ................ 66 2.4.3 规范化 ................................... 67 2.4.4 表的设计原则........................ 68 2.4.5 规范化过程 ........................... 68 2.4.6 规范化的示例........................ 70 2.4.7 消除多值依赖中的异常......... 74 2.5 Access 工作台:第二部分―― 在 Access 中操作多个表 ............ 772.5.1 WMCRM 数据库中可能 出现的修改问题 .................... 78 2.5.2 2.5.3 2.5.4 2.5.5 操作多个表 ........................... 83 创建表之间的关系 ................ 86 使用包括两个表的表单......... 88 创建包括两个表中数据的 报表 ....................................... 89 关闭数据库并退出 Access .... 913.4 SQL DML 单表查询 ................. 1243.4.1 SQL SELECT/FROM/ WHERE 架构....................... 124 3.4.2 3.4.3 3.4.4 从单个表中读取指定列....... 125 从单个表中读取指定行....... 127 从单个表中读取指定行和 指定列 ................................. 1293.4.5 WHERE 子句中的范围、 通配符和空值...................... 130 对查询结果排序 .................. 133 3.4.7 SQL 内置函数和计算 .......... 135 3.4.8 内置函数和分组 .................. 137 3.4.62.5.6小结 ............................................. 91 重要术语 ..................................... 92 复习题 ......................................... 92 练习题 ......................................... 94 Access 工作台的重要术语 ....... 95 Access 工作台练习题 ............... 95 Regional Labs 案例问题 ........... 98 Garden Glory 项目问题 ............ 99 James River Jewelry 珠宝行 项目问题 ................................. 100 2.15 Queen Anne Curiosity 商店 项目问题 ................................. 100 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 第 3 章 结构化查询语言 .................... 103 3.1 示例数据库 ............................... 104 3.2 用于数据定义的 SQL 语句 创建表和关系 ........................... 109 3.2.1 使用表约束定义主键 .......... 116 3.2.2 使用表约束定义外键 .......... 117 3.2.3 向 DBMS 提交 SQL 语句 .... 119 3.3 插入关系数据的 SQL 语句 ...... 121 XVIII3.5 SQL DML――多表查询 .......... 139 3.5.1 使用子查询处理多个表....... 139 3.5.2 使用连接查询多个表 .......... 141 3.5.3 SQL JOIN ON 语法 ............. 144 3.5.4 内连接和外连接 .................. 146 3.6 修改和删除关系数据的 SQL 语句 ........................................... 151 3.6.1 修改数据 ............................. 151 3.6.2 删除数据 ............................. 153 3.7 修改与删除表和约束的 SQL 语句 ........................................... 154 3.7.1 DROP TABLE 语句 ............. 154 3.7.2 ALTER TABLE 语句 ........... 1543.7.3 SQL TRUNCATE TABLE 语句 ..................................... 155 3.7.4 CHECK 约束 ....................... 1553.8 SQL 视图 ................................... 156 3.9 Access 工作台:第三部分―― 在 Access 中使用查询 .............. 157 3.9.1 使用 Access SQL ................. 157 3.9.2 使用 Microsoft Access QBE ... 1613.9.3 使用 Microsoft Access 参数化 查询 ..................................... 166 使用 Access SQL 创建表 ..... 168 修改 Access 表以添加 Access SQL 不支持的数据需求 ...... 170 用 Access SQL 插入数据 ..... 1753.9.4 3.9.53.9.6 目录3.9.7使用 Access SQL 添加参照 完整性约束.......................... 179 修改 Access 数据库以添加 Access SQL 不支持的约束 .... 179 关闭数据库并退出 Access .... 1814.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7培训课的客户列表 .............. 226 给客户的信函模板 .............. 228 销售发货单 ......................... 230 特性规范 ............................. 233 业务规则 ............................. 233 验证数据模型...................... 2333.9.83.9.9小结 ......................................... 182 重要术语 ................................. 183 复习题 ..................................... 184 练习题 ..................................... 187 Access 工作台的重要术语 ..... 188 Access 工作台练习题 ............. 188 Heather Sweeney Designs 案例问题 ................................. 191 3.17 Garden Glory 项目问题 .......... 200 3.18 James River 珠宝行项目 问题 ......................................... 203 3.19 Queen Anne Curiosity 商店 项目问题 ................................. 204 3.10 3.11 3.12 3.13 3.14 3.15 3.164.5 Access 工作台: 第四部分―― 使用 Access 开发原型 .............. 2344.5.1 为原始的数据模型创建 原型表单 ............................. 235 为修改过的数据模型创建 原型表单 ............................. 2364.5.24.5.3 Access 的 Banded Form 和 Report Editors ...................... 240 4.5.4 使用 Microsoft Access Switchboards ........................ 240 关闭数据库并退出 Access .... 2414.5.5第Ⅱ部分数据库设计第 4 章 数据建模与实体-关系模型..... 211 4.1 需求分析 ................................... 212 4.2 实体-关系数据模型 .................. 212 4.2.1 实体..................................... 213 4.2.2 特性..................................... 214 4.2.3 标识符 ................................. 214 4.2.4 关系..................................... 215 4.3 实体-关系图 .............................. 217 4.3.1 E-R 模型的版本 .................. 217 4.3.2 IE 鸟足 E-R 模型 ................. 218 4.3.3 弱实体 ................................. 220 4.3.4 ID 依赖实体 ........................ 220 4.3.5 非 ID 依赖的弱实体 ............ 221 4.3.6 关联实体 ............................. 223 4.3.7 子型实体 ............................. 224 4.3.8 递归关系 ............................. 226 4.4 开发 E-R 图示例 ....................... 2264.4.1 Heather Sweeney Designs 公司的数据库...................... 2264.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16 第5章 5.1 5.2 5.3小结 ........................................... 241 重要术语 ................................... 242 复习题 ....................................... 243 练习题 ....................................... 244 Access 工作台重要术语 ......... 244 Access 工作台练习题 ............. 244 Highline University Mentor Program 案例问题 .................. 245 Washington State Patrol 案例 问题 ........................................ 247 Garden Glory 项目问题 .......... 248 James River Jewelry 项目 问题 ........................................ 248 Queen Anne Curiosity 商店 项目问题 ................................ 248 数据库设计 ............................ 251 数据库设计的目标 ................... 251 把数据模型转换为数据库的 设计方案 .................................. 252 使用关系模型表示实体 ........... 253 5.3.1 ITEM 实体的表示 ............... 253 5.3.2 CUSTOMER 实体的表示 .... 255 XIX 数据库原理(第 7 版):使用 Access 2013 演示与实践反规范化 ............................. 2565.3.35.3.4 SALES_COMMISSION 实体 的关系设计.......................... 257 5.3.5 弱实体的表示...................... 2596.2 6.35.45.55.65.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16 5.17关系的表示 ............................... 260 5.4.1 强实体中的关系 .................. 260 5.4.2 使用弱实体的关系 .............. 267 5.4.3 子型实体关系的表示 .......... 268 5.4.4 递归关系的表示 .................. 269 Heather Sweeney Designs 公司 的数据库设计 ............................ 272 5.5.1 弱实体 ................................. 273 5.5.2 规范化的验证...................... 273 5.5.3 指定列属性 ......................... 273 5.5.4 关系..................................... 275 5.5.5 实现参照完整性约束 .......... 277 Access 工作台: 第五部分―― Access 中的关系 ........................ 279 5.6.1 Access 中的 N:M 关系......... 279 5.6.2 Access 中的 1:1 关系 ........... 279 5.6.3 关闭数据库并退出 Access .... 284 小结 ........................................... 284 重要术语 ................................... 284 复习题 ....................................... 285 练习题 ..................................... 286 Access 工作台重要术语 ......... 287 Access 工作台练习题 ............. 287 San Juan Sailboat Charters 案例问题 ................................ 287 Washington State Patrol 案例 问题 ........................................ 289 Garden Glory 公司项目问题 .... 289 James River 珠宝行项目问题.... 289 Queen Anne Curiosity 商店 项目问题 ................................ 2896.46.5 6.66.76.8 6.9控制、安全和可靠的必要性 .... 295 并发控制 ................................... 295 6.3.1 使用原子事务的必要性....... 296 6.3.2 并发事务处理...................... 297 6.3.3 丢失更新问题...................... 298 6.3.4 资源锁定 ............................. 298 6.3.5 可串行化的事务 .................. 299 6.3.6 死锁..................................... 300 6.3.7 乐观锁定和悲观锁定 .......... 300 SQL 事务控制语言和声明锁定 特征 .......................................... 302 6.4.1 一致事务 ............................. 303 6.4.2 事务隔离级别...................... 304 游标类型 ................................... 305 数据库安全 ............................... 307 6.6.1 用户账户 ............................. 307 6.6.2 用户处理权限和责任 .......... 308 6.6.3 DBMS 级别的安全 .............. 311 6.6.4 应用程序级别的安全 .......... 312 数据库备份与恢复 ................... 313 6.7.1 通过重新处理来恢复 .......... 314 6.7.2 通过回滚和前滚来恢复....... 314 DBA 的其他职责 ...................... 317 Access 工作台: 第六部分―― Access 中的数据库管理 ........... 318 6.9.1 Access 中的数据库安全 ...... 3186.9.2 Access 2013 中的数据库 安全 ..................................... 318第Ⅲ部分数据库管理第 6 章 数据库管理 ............................ 293 6.1 Heather Sweeney Designs 数据库 ...................................... 294 XX小结 ......................................... 336 重要术语.................................. 337 复习题 ..................................... 338 练习题 ..................................... 339 Access 工作台重要术语 ......... 340 Access 工作台练习题 ............. 340 Marcia’s Dry Cleaning 案例 问题 ........................................ 341 6.17 Garden Glory 项目问题 .......... 342 6.18 James River 珠宝行项目问题 .... 343 6.19 Queen Anne Curiosity 商店 项目问题 ................................ 343 6.10 6.11 6.12 6.13 6.14 6.15 6.16 目录第 7 章 数据库处理应用程序 ............. 345 7.1 数据库处理的环境 ................... 346 7.1.1 查询、表单和报表 .............. 3477.1.2 客户机/服务器和传统的 应用程序处理...................... 3477.1.3 SQL/PSM:用户自定义函数、 存储过程和触发器 .............. 3487.2 Web 应用程序数据库处理 ....... 348 7.2.1 ODBC .................................. 350 7.2.2 使用 IIS 进行 Web 处理 ...... 355 7.2.3 HTML Web 页面入门 .......... 357 7.2.4 Web 页面 index.html ............ 358 7.2.5 创建 Web 页面 index.html .... 3587.2.6 使用 PHP 对 Web 数据库 进行处理 ............................. 360 用 PHP 更新表 .................... 3677.9 Access 工作台练习题 ............... 388 7.10 Marcia’s Dry Cleaning 案例 问题 ........................................ 388 7.11 Garden Glory 公司项目问题..... 391 7.12 James River Jewelry 珠宝行 项目问题 ................................ 392 7.13 Queen Anne Curiosity 商店 项目问题 ................................ 392 第 8 章 大数据、数据仓库和商业 智能系统 ................................ 393 8.1 商业智能系统 ........................... 394 8.2 可操作系统与 BI 系统的关系..... 395 8.3 报表系统和数据挖掘 应用程序 ................................... 395 8.3.1 报表系统 ............................. 396 8.3.2 数据挖掘应用程序 .............. 396 8.4 数据仓库和数据集市 ............... 397 8.4.1 数据仓库的组成 .................. 397 8.4.2 数据仓库和数据集市 .......... 398 8.4.3 多维数据库 ......................... 399 8.5 OLAP ......................................... 406 8.6 分布式数据库的处理 ............... 410 8.6.1 分布式数据库的类型 .......... 410 8.6.2 分布式数据库面临的挑战.... 411 8.7 对象-关系数据库 ...................... 412 8.8 大数据和 Not Only SQL 运动..... 413 8.8.1 列族数据库 ......................... 414 8.8.2 MapReduce .......................... 415 8.8.3 Hadoop ................................ 416 8.9 Access 工作台: 第八部分―― 使用 Access 的商业智能系统 .... 4178.9.1 8.9.2 8.9.3 8.9.4 8.9.5 8.9.6 为 OLAP 报表创建一个视图 查询 ..................................... 417 为 OLAP 报表创建 Excel 工作表 ................................. 420 创建基本的 OLAP 报表 ...... 421 构建 OLAP 报表 ................. 423 修改 OLAP 报表 ................. 426 关闭..................................... 4287.2.77.2.8 Web 数据库处理面临的 挑战 ..................................... 372 7.2.9 SQL 注入攻击 ..................... 3737.3数据库处理和 XML ................. 373 7.3.1 XML 的重要性 .................... 374 7.3.2 作为一种标记语言的 XML ... 374 7.3.3 XML 和数据库处理 ............ 374 7.3.4 XML Web Services............... 375 7.4 Access 工作台:第七部分―― 使用 Microsoft Access 进行 Web 数据库处理 ....................... 376 7.4.1 创建客户联络视图 .............. 3767.4.2 Wallingford Motors 的 Web 主页 ..................................... 377 7.4.3 7.4.4 7.4.5 7.4.6 7.4.7 选择数据库文件 .................. 379 创建 ODBC 数据源 ............. 379 创建 PHP 页面 .................... 380 运行 PHP 页面 .................... 382 关闭..................................... 3837.5 小结 ........................................... 383 7.6 重要术语 ................................... 384 7.7 复习题 ....................................... 385 7.8 练习题 ....................................... 386XXI 数据库原理(第 7 版):使用 Access 2013 演示与实践8.10 8.11 8.12 8.13 8.14 8.15小结 ......................................... 429 重要术语 ................................. 430 复习题 ..................................... 431 练习题 ..................................... 432 Access 工作台练习题 ............. 433 Marcia’s Dry Cleaning 案例问题 ................................. 4338.16 Garden Glory 公司项目问题 .... 434 8.17 James River Jewelry 珠宝行 项目问题 ................................. 435 8.18 Queen Anne Curiosity 商店 项目问题 ................................. 435XXII 第Ⅰ部分 数据库基础第Ⅰ部分介绍了关系数据库管理的基本概念和技术。第 1 章解释了数据库技术和使用 数据库的原因,以及数据库系统的组成。第 2 章介绍了关系模型,定义了重要的关系数据 库术语,还介绍了关系数据库设计的基本原理。第 3 章介绍了结构化查询语言(Structured Query Language,SQL),它是创建和处理关系数据库的国际标准。 学习第Ⅰ部分介绍的这些基本数据库概念后,第Ⅱ部分将重点学习数据库建模、设计 和实现。最后的第Ⅲ部分讨论数据库管理、Web 数据库应用程序、Big Data 和商业智能 系统。 第1章数据库入门本章学习目标: ● 了解本书的编写目的和适用范围 ● 明确列表存在的潜在问题 ● ● ● ● ● ● ● 理解使用数据库的原因 了解如何使用关系表来避免由于使用列表所带来的问题 掌握数据库系统的组成 学习数据库的基本元素 学习数据库管理系统(database management system,DBMS)的作用 理解数据库应用程序的功能 了解非关系型数据库数据库技术的知识变得越来越重要,而且它无处不在:它们是电子商务和其他基于 Web 应 用程序的重要组成部分,是企业操作和决策支持应用程序的核心。有成千上万的组织和数以百 万计的个人在使用数据库。据估计,目前世界上正在被使用的数据库超过一千万。 本书的目的是讲述关系数据库的基本概念、技术以及成为数据库开发人员所需的技能。我 们不会阐述关系数据库技术的所有重要部分,但会提供足够的背景知识,使你能创建自己的个 人数据库,或者作为团队的一员参与到更复杂更大型的数据库开发过程中。通过学习本书,你 还将学会如何通过自学发现问题以学到更多的知识。 第 1 章将研究使用关系数据库的原因。我们从描述使用列表可能出现的问题开始,通过一 系列示例说明如何利用相关的表集来避免这些问题。然后,本章将描述数据库系统的组成,介 绍数据库的元素、DBMS 的作用和数据库应用程序的功能。最后介绍非关系型数据库。1.1使用数据库的原因数据库用于帮助用户记录数据。你可能觉得这好像并不需要一种专门的技术和课程,因为 使用列表似乎就已足够。很多用户就是通过列表来记录数据的,有时有这样的列表就够了,但 第Ⅰ部分 数据库基础在其他情况下,简单的列表可能会导致数据不一致和其他问题的产生。 本节将介绍几个不同的列表,并指明其中存在的问题。我们可以将列表分为数据表来解决这 类问题。 这类表是数据库的关键组成部分。 本书主要关注这类表的设计以及操作表中数据的方法。1.1.1 关于列表的问题图 1-1 展示了学生数据的一个简单列表,命名为学生列表 1,存储在电子表格中。这是一个 非常简单的列表,对于这样的列表,电子表格完全可以胜任。即使列表很长,也可以按姓、名、 电子邮件地址的字母顺序进行排列,以便找到需要的记录。可以改变数据值,为每个新学生添 加数据或者删除数据。使用如图 1-1 所示的列表进行上述这些操作都没有问题,不需要创建数 据库,用电子表格的方式保存该列表就已足够。图 1-1 电子表格式的学生列表但假设我们通过添加如图 1-2 所示的教师数据来改变学生列表,仍然可以用上述方式对带 有教师的学生列表进行排序,以查找数据项,但是这样会出现修改问题。例如,假设要删除学 生 Chip Marino 的数据(如图 1-3 所示),如果删除第 7 行,则不仅删除了 Chip Marino 的数据,也删除 了教师 Tran 和他的电子邮件地址 Ken.Tran@ourcampus.edu。图 1-2 教师/学生列表删除行― ―丢失过多 的数据 改变行― ―不一致的 数据 插入行― ―数据遗漏图 1-3 教师/学生列表中的修改问题同样,更新列表中的值也可能会有意想不到的 结果 。例如,如果改动了第 8 行的 AdviserEmail,数据就会不一致。改动后,第 5 行显示了教师 Taing 的电子邮件地址,第 8 行却1. 为了方便读者找到和引用所讨论的列表,各章中列表名称的每个单词的首字母都采用大写形式。同样,与这些列表相 关的数据库表的名称也都大写。4 第 1 章 数据库入门显示该教师的另一个电子邮件地址,难道他们不是同一个教师么?通过该列表我们不能确定是 教师 Taing 有两个不同的电子邮件地址,还是有两个电子邮件地址不同的同名教师。执行这个 更新操作后,就会发现,列表容易产生困惑,带来不确定性。 最后, 如果要给没有选课学生的教师添加数据, 该如何做?例如 Greene 教师没有选课学生, 但是仍需要记录他/她的电子邮件地址,此时就必须在数据库字段中插入值不完全(称为空值)的 行,如图 1-3 所示。在这里,空值表示缺失的值,但在处理数据库时,使用“空值”可能表示 其他含义。第 2 章将详细讨论空值的问题。空值总是会带来问题,应尽量避免使用它。 在这两个例子中究竟发生了什么?我们有一个包含 3 列数据的简单列表,再添加两列就会 带来几个问题,这不仅仅是 5 列代替 3 列的表格问题。图 1-4 中的宿舍/学生列表有 5 列,但它 没有图 1-3 中教师/学生列表的问题。插入行――数据正确 修改行――没有不一致 的数据 删除行――没有丢失 数据图 1-4 宿舍/学生列表在图 1-4 所示的宿舍/学生列表中删除学生 Chip Marino 的数据,仅会丢失与该学生相关的 数据,没有意想不到的结果。同样,改变学生 Tzu Lai 的 Residence 值也不会带来任何不一致问 题。最后,添加学生 Garret Ingram 的数据也不会出现空值。 图 1-3(教师/学生列表)和图 1-4(宿舍/学生列表)有一个本质区别:即图 1-4 中的宿舍/学生列 表中的数据是关于一件事情:列表中的所有数据都和学生有关。而图 1-3 的教师/学生列表指示 两个事情:有些数据和学生有关,有些数据和教师有关。通常情况下,只要列表中的数据指示 两个或多个不同的事情,修改就会出现问题。 为了加深理解,检查图 1-5 中的教师/部门/学生列表。该列表含有三种不同的数据:学生、 教师和院系。从图中可以看出,插入、更新和删除数据所引发的问题更严重。例如,改变 AdviserLastName 的值, 可能只需要修改 AdviserEmail, 也可能需要修改 AdviserEmail、 Department 和 AdminLastName。可以想象,如果列表很长,例如有上千行,或者几个人同时处理它,这很 快就会变得非常混乱。如果把教师 Baker 改为 Taing,就必须 同 时 修 改 AdviserEmail , 如 果 改 为 Valdez, 就必须同时修改 AdviserEmail、 Department 和 AdminLastName删除行――Student、Adviser 和 Department 数据都会丢失 插入行――Student 和 Adviser 数据 都会遗漏图 1-5 教师/院系/学生列表5 第Ⅰ部分 数据库基础1.1.2 使用关系数据库表使用列表产生的问题早在 20 世纪 60 年代就被发现,并由此开发了一些不同的技术来解决 它们。随着时间的流逝,一种称为关系模型的方法成为首选方案。现在,几乎每个商用数据库 都是基于关系模型的。第 2 章将仔细介绍这一模型,在此仅通过介绍它如何解决列表的修改问 题来说明关系模型的基本思想。 中学时代的教师曾教导过我们说每个段落应只有一个主题,如果一个段落包含多个主题, 就需要将它分为两段或多段,使之都有唯一的主题,这种思想就是设计关系数据库的基础。关 系数据库包含一个表的集合。在大多数情况下,每个表中的数据有且仅有一个主题。如果一个 表有两个或多个主题,就需要将其分割为两个或多个表。 提示: 表和电子表格(也称为工作表)非常类似,因为两者都具有行、列和单元格。第 2 章将讨论 表不同于电子表格的细节。目前看到的主要区别是:表有列名而不是标识字母(如 Name 而不是 A),行不一定有编号。 学生/教师列表的关系设计 图 1-2 中的教师/学生列表有两个主题:学生和教师。如果将这 些数据放入关系数据库中,则把学生数据放入 STUDENT 表,教师数据放入 ADVISER 表。 提示: 本书的表名全部是大写字母(如 STUDENT、ADVISER),列名则是首字母大写(如 Phone、 Address), 而当列名由多个单词组成时, 每个单词的首字母大写(如 StudentName、 AdviserEmail)。 我们仍然想说明哪些学生有哪些教师,因此将 AdviserLastName 留在 ADVISER 表中。如 图 1-6 所示,AdviserLastName 的值链接了两个表中的行。STUDENT 数据通过 AdviserLastName 链接到 ADVISER 数据图 1-6 STUDENT 和 ADVISER 表下面考虑对这些表所做的可能的修改。如上一节所述,有三种基本的修改操作:插入、更 新和删除。为了评估一个设计,这三种操作都需要考虑。在图 1-7 中,我们可以在这些表中进 行插入、更新和删除操作,而不会出现修改问题。6 第 1 章 数据库入门改变数据――数据保持 一致 插入数据――不需要任何 STUDENT 数据 删除数据――不会丢失 任何 ADVISER 数据图 1-7 修改 ADVISER 和 STUDENT 表例如,只需要将教师 Yeats 的数据添加到 ADVISER 表中,就可以插入他的数据。虽没有 学生与教师 Yeats 有关联,但这不是问题,也许学生将来会选择 Greene 教师。更新数据值也不 会带来预料之外的结果,将教师 Taing 的电子邮件地址改为 Sue.Taing@ourcampus.edu,不会出 现不一致的数据,因为 Taing 教师的电子邮件地址仅在 ADVISER 表中存储一次。最后,删除 数据也不会产生预料之外的结果, 例如如果从 STUDENT 表中删除学生 Marino 的数据, 不会丢 失教师数据。 教师/院系/学生列表的关系设计 采取类似的策略可以为图 1-5 中的教师/院系/学生列表开 发一个关系数据库。这个列表有三个主题:学生、教师和院系。因此创建三个表,每个表都反 映一个主题,如图 1-8 所示。可以根据需要插入 DEPARTMENT 数据―― 不需要 ADVISER 或 STUDENT 数据可以根据需要修改 STUDENT 表中的教师 名――新值会链接到它 自己的数据上可以根据需要删除 STUDENT 数据――不会丢 失 ADVISER 或 DEPARTMENT 数据图 1-8 DEPARTMENT、ADVISER 和 STUDENT 表另外,在图 1-8 中可以使用 AdviserLastName 和 Department 来链接表。同样,这组表不存 在任何修改问题。可以插入新数据而不会出现空值,修改数据而不会造成数据不一致,删除数7 第Ⅰ部分 数据库基础据而不会出现预料之外的结果。特别注意的是,给 DEPARTMENT 添加新行时,可以根据需要 在 ADVISER 中添加行,对于 ADVISER 中的每个新行还可以在 STUDENT 中添加行。所有的 这些操作都是独立的,表不会出现不一致的情况。 同样,当修改 STUDENT 表中某行的 AdviserLastName 时,会自动选择该教师的名字、电 子邮件地址和院系信息。如果将 STUDENT 第一行中的 AdviserLastName 改为 Taing,则它将连 接到含有正确 AdviserFirstName、AdviserEmail 和 Department 值的 ADVISER 行。如果需要,可 以使用 ADVISER 中的 Department 值获取正确的 DEPARTMENT 数据。最后要注意,可以删除 学生 Marino 的数据而不会出现任何问题。 另外,图 1-8 中的设计消除了修改列表时出现的错误,但也带来了一个新问题,确切地说 如果删除了 ADVISER 中的第一行,会发生什么情况?学生 Andrews 和 Fischer 的 AdviserName 值无效,因为 Baker 在 ADVISER 表中不再存在。为了避免这一问题,可以设计这样的数据库: 当其他行依赖于某一行时,不允许删除该行,或者同时删除相关的行。这里先略过这个问题, 后面的章节会讨论它。 艺术课程招生的关系设计 为了巩固这些概念,我们来考虑图 1-9 中由艺术学校为公众提 供的艺术课程列表,该列表有修改问题。例如假设改变第一行中 CourseDate 的值,这也许意味 着课程的日期发生了变化,则其他行中的 CourseDate 值也需要更改;也可能意味着提供了一门 新的 Advanced Pastel(Adv Pastel)课程,这两种情况皆有可能。如 何输入 新 课 程的费用 改变这个日期的 结果是什么 删除该行的结果 是什么图 1-9 有修改问题的艺术课程列表与前面的示例一样,我们可以为每个主题创建独立的表来避免这些问题和模糊性。但在本 例中,主题很难确定。显然,其中一个主题是“客户” ,另一个是“艺术课程” ,但第三个主题 很难确定,客户已经为课程支付了一笔费用,而费用不是客户的属性,因为它取决于客户所选 定的课程,例如客户 Ariel Johnson 分别花费了 250 美元、350 美元来学习 Advanced Pastels(Adv Pastels)和 Intermediate Pastels(Int Pastels)。同样,费用也不是课程的属性,因为这取决于选定该 课程的客户。因此,该列表的第三个主题必须是关于特定课程招收的特定学生。图 1-10 显示了 针对这三个主题设计的三个表。这组表称为艺术课程表。 注意,这个 Art Course Database 设计为 CUSTOMER 表中的每一行指定了唯一的 ID 列 CustomerNumber,这是必须的,因为可能有些顾客的名字相同;还为 COURSE 指定了另一个 唯 一的 ID 列 CourseNumber , 这也 是必需 的, 因为有 些课 程的名 称相 同。 最后, 注 意 ENROLLMENT 表中的行显示了特定顾客为特定课程支付的费用, 并使用 ID 列 CustomerNumber 和 CourseNumber 作为到其他表的链接列。 零件和价格的关系设计 现在考虑一个更复杂的例子。 图 1-11 显示的电子表格保存房产商 Carbon River Construction 使用的项目设备列表,其中记录了该公司在不同建设项目中购买的零件。8 第 1 章 数据库入门可以改变 COURSE 表的 CourseDate, 而不会出问题可以根据需要插入新 COURSE 数据可以根据需要删除 ENROLLMENT 行,而不 会有不良后果图 1-10 艺术课程表图 1-11 电子表格式的项目设备列表这个列表的第一个问题是修改已有的数据。 假设要维护该列表, 而老板通知说客户 Elizabeth Barnaby 换了电话号码,则需要对这张电子表格进行多少修改?对于图 1-11 中的数据需要进行 10 次修改。现在假设电子表格有 5000 行,那么需要进行多少修改?回答可能是无数次,因为 不仅要考虑修改所花的时间, 还要考虑可能出现的错误: 可能会有一两行漏掉了该客户的姓名,9 第Ⅰ部分 数据库基础当然就无法更新这些行的电话号码了。 考虑该列表的第二个问题。在该业务中,某个供应商同意对其提供的零件给予某个折扣, 例如在图 1-11 中,供应商 NW Electric 同意提供 25%的折扣。在这张列表中,每次输入新的零 件价格时,必须同时输入该零件的供应商及正确的折扣。如果列表中有多个供应商,就可能输 入错误的折扣,从而出现一个供应商有多个折扣的情况。 现在考虑数据输入正确但不一致的情况。第一行的零件名称为 200 Amp panel,而第 15 行 的零件名为 Panel,200 Amp。这两个零件是相同的还是不同的呢?其实它们是相同的零件,但 名称不同。 第四个问题是关于局部数据。假设知道某供应商提供了 20%的折扣,但是 Carbon River 并 没有从该供应商处订购产品,该在哪里记录 20%的折扣呢? 与前面的示例一样,可以将项目设备列表分割成独立的表来解决以上问题。因为该列表比 较复杂,所以需要使用更多的表。分析项目设备列表会发现数据有 4 个主题:项目、零件、报 价和供应商。因此创建包含 4 个表的数据库,和前面一样使用 ID 值关联这 4 个表。图 1-12 显 示了这些表及其关系。这组表称为项目设备表。 在图 1-12 中,注意 QUOTE 表保存唯一的报价标识符(QuoteID)、数量、单价、总价(数量 ×单价)和作为链接值的 3 个 ID 列:用于 PROJECT 的 ProjectID、用于 ITEM 的 ItemNumber 和用于 SUPPLIER 的 SupplierID。图 1-12 项目设备表现在,如果 Elizabeth Barnaby 改变了电话号码,就只需要在 PROJECT 表中更改一次。同样 对于第二个问题,只需要在 SUPPLIER 表中记录一次供应商的折扣。1.1.3 关系表的处理现在有一个急需解决的问题:可以将列表分割成多块以消除处理过程中出现的问题,但如10 第 1 章 数据库入门果用户希望查看原始列表格式的数据,该怎么办?数据被分割到不同的表中,用户就在多个表 中跳转来搜索所需的信息。这种跳转会令人厌烦。 这是一个很重要的问题,在 20 世纪 70 年代、80 年代得到了解决。人们使用了几种方法来 合并、查询和处理表的集合。随着时间的流逝,其中一种方法称作结构化查询语言(Structure Query Language,SQL)成为数据定义和操作的主导技术。今天,SQL 已成为国际标准。使用 SQL,可以 通过基本表重建列表;可以根据特定数据条件进行查询;可以对表中的数据进行计算;可以插 入、更新和删除数据。 使用 SQL 处理表 第 3 章将学习如何编写 SQL 语句,这里先给出这种语言结构的思想。 下面的 SQL 语句会连接图 1-10 中的 3 张表,生成原始的艺术课程列表。现在不必理解这个语 句的语法, 只需要认识到它会产生图 1-13 所示的结果, 其中包含艺术课程列表中的所有数据(虽 然行序有细微的区别)。SELECT CUSTOMER.CustomerLastName, CUSTCOMER.CustomerFirstName,CUSTOMER.Phone, COURSE.CourseDate,ENROLLMENT.AmountPaid, COURSE.Course,COURSE.Fee FROM WHERE AND CUSTOMER,ENROLLMENT,COURSE CUSTOMER.CustomerNumber = ENROLLMENT.CustomerNumber COURSE.CourseNumber = ENROLLMENT.CourseN图 1-13 重建艺术课程列表的 SQL 查询结果从第 3 章我们将学习:选择行、给行排序和计算行中的数据值。图 1-14 显示了该 SQL 语 句的结果:SELECT CUSTOMER.CustomerLastName, CUSTOMER.CustomerFirstName, CUSTOMER.Phone, COURSE.Course, COURSE.CourseDate, COURSE.Fee, ENROLLMENT.AmountPaid, (COURSE.Fee-ENROLLMENT.AmountPaid) AS AmountDue FROM WHERE AND AND ORDER BY CUSTOMER, ENROLLMENT, CUSTOMER CUSTOMER.CustomerNumber = ENROLLMENT.CustomerNumber COURSE.CourseNumber = ENROLLMENT.CourseNumber (COURSE.Fee - ENROLLMENT.AmountPaid) & 0 CUSTOMER.CustomerLastN该语句先连接艺术课程表,计算课程费用(Fee)和 AmountPaid 之差,并将结果存入新列 AmountDue 中。然后,该语句选择出 AmountDue 大于 0 的行,并显示按 CustomerName 排序的11 第Ⅰ部分 数据库基础结果。比较图 1-13 的数据和图 1-14 的结果,以确保该结果正确。图 1-14 计算 AmountDue 的 SQL 查询结果1.2数据库系统的概念图 1-15 列出了数据库系统的 4 个组成部分: 用户、 数据库应用程序、 数据库管理系统(DBMS) 和数据库。数据库应用程序数据库管理系统 (DBMS)数据库用户图 1-15 数据库系统的组成在图 1-15 中,右数第一个是数据库,它是关联表和其他结构的集合。数据库管理系统 (database management system ,DBMS)是用于创建、处理和管理数据库的计算机程序。DBMS 接收以 SQL 编码的请求, 并将这些请求转化为数据库中的操作。 DBMS 是由软件供应商授权的 一个庞大且复杂的程序,普通公司几乎从不编写自己的 DBMS 程序。 数据库应用程序是作为用户和 DBMS 间媒介的一个或多个计算机程序。应用程序通过向 DBMS 发送 SQL 语句来读取或修改数据库数据, 也会以表单或报表的形式向用户显示数据。 它 可以由软件供应商提供,也可以由企业内部编写。从本文中获取的知识有助于编写数据库应用 程序。 用户是数据库系统的第四个组成部分,他们使用数据库应用程序记录事务,并使用表单来 读取、输入和查询数据,且生成报表。 下面将详细研究数据库、DBMS 和数据库应用程序。1.2.1 数据库在大多数情况下,数据库定义为关联记录的自描述集合。对于所有的关系数据库(当前几乎 所有的数据库都是关系数据库,也是本书主要考虑的数据库类型),该定义可以修改为:数据库 是关联表的自描述集合。12 第 1 章 数据库入门在这一定义中有两个关键的术语:自描述(self-describing)和关联表(related tables)。你可能 对关联表有初步的概念,比如 ADVISER 和 STUDENT 就是两个关联表,它们通过公共列 AdviserName 相关联。下一章将进一步讨论这种关系。 自描述意味着数据库本身含有对数据库结构的描述。因此,查看数据库的内部就可以决定 数据库的内容,而不用四处寻找。这类似于图书馆,通过图书馆内部的分类信息就可以找到图 书馆中的藏书。 关于数据库结构的数据称为元数据。 表名、 列名和列所属的表、 表和列的属性等都是元数据。 所有的 DBMS 产品都提供了一系列工具来显示数据库的结构。 例如, 图 1-16 中的 Microsoft Access 图表显示了 Art Course 数据库中的表(见图 1-10)之间的关系。其他工具可以描述表的结 构和其他组成部分。图 1-16 元数据示例:图 1-10 中艺术课程表的关系图图 1-17 显示了数据库的内容,其中含有用户数据和前面描述的元数据。数据库也含有索引 和其他改进数据库性能的结构,后面的章节将讨论这种结构。最后,一些数据库含有应用元数 据,它们用于描述应用程序元素,如表单和报表。例如,Microsoft Access 把应用元数据作为其 数据库的一部分。? 用户数据 ? 元数据 ? 索引或其他开销数据 ? 应用元数据图 1-17 数据库内容1.2.2 DBMSDBMS 的目的是创建、处理和管理数据库。DBMS 是一个庞大且复杂的产品,几乎都由软 件供应商授权提供,其中一个是 Microsoft Access,其他的商业 DBMS 产品包括: ● ● Microsoft 公司的 SQL Server Oracle 公司的 MySQL13 第Ⅰ部分 数据库基础● Oracle 公司的 Oracle Database ● IBM 公司的 DB2 尽管还有其他 DBMS 产品,但这 5 种 DBMS 软件所占的市场份额最大。 图 1-18 列出了 DBMS 的功能。DBMS 用于创建数据库、数据库中的表和其他支持结构。 例如,假设有一个包含 10 000 多行的 EMPLOYEE 表,该表有一列 DepartmentName 用于记录 员工的部门名称,而且假设经常需要通过 DepartmentName 访问员工数据。由于这是一个大型 数据库,因此搜索整个表,以查找(例如)会计部的员工会花费大量的时间。为了提高性能,可 以为 DepartmentName 创建索引(类似于书后的索引),来显示员工所属的部门。这样的索引就是 由 DBMS 创建和维护的支持结构的一个示例。 DBMS 的另两个功能是读取和修改数据库中的数据。为此,DBMS 接收 SQL 和其他请求, 并将这些请求转化为对数据库文件的操作。 DBMS 的另一个功能是维护所有数据库结构。 例如, 有时要改变表或其他支持结构的格式,开发人员使用 DBMS 来进行这些改变。 对于大多数 DBMS 产品来说,可以声明数据值的规则,并使用 DBMS 执行该规则。例如, 在图 1-10 的艺术课程数据库表中,如果用户在 ENROLLMENT 表的 CustomerID 中误输入了值 9,会发生什么情况?如果没有这样的客户,这个值会导致大量的错误。为了防止这一情况,可 以通知 DBMS:ENROLLMENT 表中的 CustomerID 值必须是 CUSTOMER 表中的 CustomerID 值,如果这样的值不存在,则拒绝插入或更新请求。这种由 DBMS 执行的规则称为参照完整性 约束(referential integrity constraints)。 图 1-18 中 DBMS 的最后 3 个功能涉及数据库的管理。DBMS 的并发控制保证一个用户的 工作不会干扰另一个用户,这一重要且复杂的功能参见第 6 章。DBMS 还含有一个安全系统, 用于保证只有授权用户能对数据库执行授权的活动,例如可以防止用户查看特定数据,用户的 操作会被限制为对特定数据进行特定的改变。 最后,DBMS 提供了备份数据库和在必要时通过备份恢复数据的工具。数据库是数据的集 中仓库,是相当有价值的企业资源,例如
的书籍数据库。数据库十分重要,所以 必须采取有效步骤,确保在错误、软硬件问题或自然灾害等事件中没有数据丢失。 应用程序 图 1-19 列出了数据库应用程序的功能。首先,应用程序能创建并处理表单。图 1-20 显示了为艺术课程应用程序输入和处理客户数据的典型表单。? 创建数据库 ? 创建表 ? 创建支持结构(如索引等) ? 读取数据库数据 ? 修改(插入、更新或删除)数据库数据 ? 维护数据库结构 ? 执行规则 ? 并发控制 ? 提供安全性 ? 执行备份和恢复? 创建并处理表单 ? 处理用户查询 ? 创建并处理报表 ? 执行应用程序逻辑 ? 控制应用程序图 1-18 DBMS 的功能图 1-19 数据库应用程序的功能14 第 1 章 数据库入门图 1-20 数据输入表单示例注意,该表单对用户隐藏了底层表的结构。比较图 1-10 中的表和数据与图 1-20 中的表单, 可以看到 CUSTOMER 表中的数据显示在表单的顶部,而 ENROLLMENT 表和 COURSE 表中 的数据组合起来显示在标记为 Course Enrollment Data 的表格部分。 和其他数据输入表单一样,该表单的目的是以对用户有效的格式显示数据,而不管底层表 的结构如何。 在表单的后面, 应用程序根据用户的动作来处理数据库。 应用程序生成 SQL 语句, 对表单下的 3 个表插入、更新或删除数据。 应用程序的第二个功能是处理用户查询。应用程序首先生成一个查询请求,并发送给 DBMS,DBMS 将结果格式化后返回给用户。图 1-21 演示了查询图 1-10 中的艺术课程数据库 的这一过程。 在图 1-21(a)中,应用程序获得了课程的名称或部分名称。在这里,用户输入了字符 pas。 当单击 OK 按钮时,应用程序构造了一个 SQL 查询语句来搜索数据库中含有该字符的课程。这 一 SQL 查询的结果显示在图 1-21(b) 中。在这个例子中,应用程序查询相关的课程并将 ENROLLMENT 和 CUSTOMER 数据连接到所限定的 COURSE 行, 结果只显示了课程名含有字 符 pas 的行。(a) 查询参数表单(b) 查询结果 图 1-21 查询示例15 第Ⅰ部分 数据库基础应用程序的第三个功能是创建和处理报表。该功能类似于第二个功能,因为应用程序首先 查询 DBMS 数据(再次使用 SQL), 然后将查询结果格式化为报表。 图 1-22 中的报表按课程顺序 显示了艺术课程数据库中所有的登记数据。注意该报表与图 1-20 中的表单一样,是根据用户需 要(而不是底层表结构)构建的。图 1-22 报表示例除了生成表单、查询和报表外,应用程序还可以根据程序特有的逻辑采取其他措施来更新 数据库。例如,假设用户使用订单输入应用程序订购 10 个指定的零件,再假设当应用程序(通 过 DBMS)查询数据库时,发现库存中只有 8 个零件,该怎么办?这取决于应用程序的逻辑,或 者不从库存中提取任何零件并告知用户;或者取出这 8 个零件,剩下的两个零件延期交货;或 者采取其他措施。无论什么情况,应用程序都会执行适当的逻辑。 图 1-19 列出的应用程序的最后一个功能是控制应用程序。这有两种方法。第一,把应用程 序编写成只将逻辑选项显示给用户, 例如应用程序可能会利用用户的选择生成一个菜单, 此时, 应用程序需要确保只提供可用的选择。第二,应用程序使用 DBMS 来控制数据活动。例如,应 用程序可能指导 DBMS 将一组数据改动作为一个单元来执行,而且,要么所有的改动都成功执 行,要么一个改动也不执行。这个控制主题参见第 6 章。1.2.3 个人数据库系统和企业级数据库系统数据库技术可以用于各种应用程序。一方面,研究人员可能使用数据库技术来跟踪在实验 室里进行的实验结果。这样的数据库可能仅包含少量的表,每个表最多含有几百行,研究人员 是该应用程序的唯一用户,这是个人数据库系统的典型用法。 另一方面, 是一些支持国际组织的大型数据库。 这类数据库有上百个表和上百万条数据行, 支持数千个并发用户。这些数据库是全天候工作从不间断,仅备份这样的数据库都很困难。这 些数据库是企业级数据库系统的典型应用。 图 1-23 显示了个人数据库应用程序的 4 个组成部分。 从图中可以看出, Microsoft Access(或16 第 1 章 数据库入门其他个人 DBMS 产品)充当了数据库应用程序和 DBMS 的角色。Microsoft 以这种方式设计 Access, 更便于构建个人数据库系统。 使用 Access 可以在 DBMS 功能和应用程序功能之间切换, 且无须知道两者的区别。数据库 应用程序数据库 管理系统 (DBMS) 数据库用户Microsoft Access 或者 其他个人 DBMS图 1-23 个人数据库系统Microsoft 通过这种方式设计 Access,隐藏了数据库处理的很多方面。例如在后台,虽然 Access 和所有关系 DBMS 产品一样使用 SQL,但必须仔细查看才能找到 SQL。图 1-24 显示了 Access 用于查询图 1-21 的 SQL 语句。检查该图后,你也许会想,很高兴 Microsoft 隐藏了这些 代码,因为它们太复杂、太难了。实际上,它们只是看起来较复杂而已,我们会在第 3 章详细 讨论。这样排列的 SQL 语句更易 于阅读图 1-24 Microsoft Access 查询生成的 SQL 语句图 1-25 在 Access 2013 中显示了 Access 的查询结果(与图 1-13 的结果相同)。Access 2013 是一个通用的个人 DBMS,可以从 Office 2013 套件中获得。本书在每一章的“Access 工作台” 一节中介绍 Access 2013。阅读了“Access 工作台”的所有章节后,就能牢固地掌握如何通过 Access 2013 创建和使用数据库了。 隐藏数据库技术(以及使用大量的向导来完成数据库设计任务)带来的问题是不知道自己做 了哪些操作。一旦需要执行 Access 团队没有预料到的功能,就会迷失方向。因此,即使是普通 的数据库开发人员也需要了解后台的操作。 此外,这类产品只对个人数据库应用程序有用。当需要开发更大的数据库系统时,必须学 习所有隐藏的技术。例如,图 1-26 显示的企业数据库系统含有 3 个不同的应用程序,每个应用 程序都有很多用户。数据库本身也存放在许多不同的磁盘上,甚至存放在不同的专用计算机(称 为数据库服务器)上。17 第Ⅰ部分 数据库基础数据库名 Art-Course-Database 表对象 CUSTOMER 显示在 All Access Objects 下面查询对象 Art Course List 存储了查询本身表格形式的查询结果图 1-25 Microsoft Access2013数据库 应用程序 A Java 代码数据库 应用程序 B C#代码数据库 管理系统 (DBMS) 数据库 SQL Server(Microsoft 公司) Oracle 数据库(Oracle 公司) MySQL(Oracle 公司) 其他数据库 应用程序 C HTML 和 ASP.NET图 1-26 企业级数据库系统注意在图 1-26 中, 应用程序用 3 种不同的语言编写: Java、 C#以及 HTML 和 ASP.NET 的混合。 这些应用程序要求企业级的 DBMS 产品来管理数据库。没有向导或简单的设计工具可用于开发这 样的系统,开发人员必须使用标准工具(例如集成开发环境(Integrated Development Environments, IDE))来编写程序代码。而要编写这样的代码,就必须掌握 SQL 及其他数据访问标准。 尽管在初学阶段有必要隐藏复杂的技术细节,但商业需求很快就会使你感到知识的不足, 需要学习更深的技术。要成为这种数据库应用程序开发团队中的一员,必须掌握本书的所有内 容,而且以后可能还需要学习更多的知识。本章最后介绍三个企业级的 DBMS 产品。1. Microsoft SQL Server 2014图 1-27 是用于生成如图 1-13 所示的查询结果的 SQL 查询,以及在 Microsoft SQL Server 2014 DBMS 中运行该查询所得的结果。其实,该查询在 Microsoft SQL Server 2014 Management Studio 中运行,这是 Microsoft SQL Server 2014 的用户客户端界面。 后面将使用可免费下载的 Microsoft SQL Server 2014 Express 版。这个版本是一个很好的学18 第 1 章 数据库入门习工具,也可以用于小型数据库。更多信息可参见附录 A。 注意在图 1-27 中,所使用的 SQL 语句与前面相同,但现在可以看到这些语句是如何输入 到 Microsoft SQL Server 2014 Management Studio 的文本编辑器窗口中的, 以及如何使用 Execute 按钮对 Art-Course-Database 表执行 SQL 语句。还可以看到,查询结果与图 1-13 所示相同,但 以另一种顺序存储, 显示在独立的 Results 窗口中。 这说明了 SQL 的重要性――它在所有 DBMS 产品中都相同,因此独立于供应商和产品(但不同 DBMS 产品的 SQL 语法有一些区别)。单击此按钮,执行 SQL 查询 数据库对象 Art-CourseDatabase 显示在 Object Explorer 中表对象 CUSTOMER 显示 在 Art-Course-Database 对象下面SQL 查询 查询结果以表格形式显示图 1-27 Microsoft SQL Server 20142. Oracle Database Express Edition 11g Release 2图 1-28 是用于生成如图 1-13 所示的查询结果的 SQL 查询, 以

我要回帖

更多关于 access query 的文章

 

随机推荐