译 者 序
MySQL数据库是目前最流行的开源关系型数据库产品,由于具有性能高、成本低、可靠性强等特性,它已越来越受到企业和个人开发者的喜爱,不仅已经被广泛地使用在互联网上的中小型网站中,而且目前已经有了适用于云计算环境的MySQL产品,这也从另一个方面反映了其发展之快、受欢迎程度之深以及影响范围之广。
由于DBA的水平不同,工作经验及思维方式也不同,导致在创建和维护、运营数据库时,其做法及所产生的效果和所耗的时间等也大不相同。那么,有没有一个工具能够让DBA方便、快捷地完成上述任务,既能够创建出中规中矩的数据库,完成所在机构的业务要求,又能够让DBA充分展示个人水平,创建出完全贴合本机构需要的数据库呢?回答是肯定的!MySQL Workbench正是这样一个工具。
依本人的理解,MySQL Workbench就是一个创建数据库的车间,这里既有工作空间,又有各种工具,你可以白手起家,从数据建模开始,一步步地创建自己的数据库,也可以对现有的数据库进行反向工程,得到数据库模型,再创建新的适合自己需要的数据库,还可以对数据库进行导入、导出,更可以实现对其他版本、其他平台的迁移。
太完美了,对吗?但很遗憾,你不会用!
对于用户来说,再好的工具,不会用,也就等于是没有。我们日常工作中常常会遇到这样的情况:许多大型、综合性的应用系统或工具软件,其功能动辄成百上千,看似无所不能,但往往是许多用户连这些功能的存在都不知道,更不要说去使用这些功能。因此,让大家会用也是一项非常重要的工作。本书正是致力于此。
本书是一本非常值得推荐的书籍。书中的内容安排和叙述方式独具匠心,针对性很强,具有很强的实用性。用作者自己的话说,就是:“通过展示如何使用这些特性来介绍如何使用该产品”。全书共分5大部分,12章。第Ⅰ部分介绍了MySQL Workbench的安装和与数据库的连接;第Ⅱ部分介绍了如何进行数据建模,建立表、视图、例程等,以及进行逆向工程;第Ⅲ部分介绍了如何进行SQL研发;第Ⅳ部分介绍了如何管理MySQL Server实例、用户和组,以及数据库的导入、导出和迁移;第Ⅴ部分是附录和词汇表,供读者随时查阅。本书的一大特点是,作者不仅介绍MySQL Workbench的功能特性,还介绍了相关的基础知识,比如数据库的范式等概念,而且在介绍概念之时,用浅显易懂的语言进行讲述,让即使没有相关基础的读者也能一读便懂,这一点非常难得。
很荣幸能够通过我的劳动,将这本好书奉献给广大读者。在这里要感谢清华大学出版社的编辑们,他们为本书的翻译投入了巨大的热情并付出了很多心血,没有他们的帮助和鼓励,本书不可能顺利付梓。
还要感谢甲骨文(中国)公司的许向东博士,她在百忙之中审阅了译稿的初稿,并提出很多修改意见。
本书全部章节由张骏温翻译,参与本次翻译活动的还有娄启林、白宇宇、郭俊良、戎建中、吴天爽和郭书华,在此也一并谢过!
由于译者水平有限,翻译工作中可能会有不准确的内容,如果读者在阅读过程中发现有失误和遗漏之处,请多多海涵,并欢迎批评指正。敬请广大读者提供反馈意见,读者可以将意见发到zjw@bjtu.edu.cn,我会仔细阅读读者发来的每一封邮件,这是一个很好的自我提高的过程。
译 者
作 者 简 介
Michael McLaughlin拥有Oracle ACE身份,是BYU的Idaho商务与通信学院的计算机信息技术系的教授。他教授有关IT管理、数据库和系统分析与设计方面的课程。他是Oracle Database 11g PL/SQL Programming、Oracle Database 10g Express Edition PHP Web Programming和Oracle Database 11g & MySQL 5.6 Developer Handbook等书的作者,也是Oracle Database 11g PL/SQL Programming Workbook、Oracle Database 10g PL/SQL Programming、Expert Oracle PL/SQL和Oracle Database AJAX & PHP Web Application Development等书的合著者。
Michael在Oracle Corporation工作了8年以上,最近成为 E-business Suite Release Engineering的应用程序高级升级经理。
技术编辑简介
Scott Mikolaitis是Oracle Corporation的应用程序架构师,已在Oracle工作了15年以上。他从事Oracle Fusion Applications的Fusion Middleware技术的原型及标准的研发工作。Scott还致力于用Java开发Web服务,用Jabber开发人与系统的交互模式。在业余时间里,他喜欢摆弄家庭装饰和燃气遥控汽车。
致 谢
感谢Wendy Rinaldi批准了本项目,感谢Paul Carlstroem对本项目的监管,感谢Ryan Willard和Amanda Russell对本书写作进度的督促。正是他们不倦的工作才使得本书得以完成。
特别感谢本书的技术编辑Scott Mikolaitis,感谢MySQL Product Management的Dave Stokes对本项目的支持以及MySQL Workbench Development团队的Alfredo Kojima对产品特性的支持。
感谢Michael Stokes、Jordan Smith、Rex Barzee和Kent Jackson审阅了本书的部分手稿。另外,感谢CIT的系主任Art Ericson对本项目的支持。
前 言
MySQL Workbench是一个奇妙的工具,能够支持DBA、开发人员和数据架构师虚拟地建模、生成和管理数据库。但遗憾的是,并不是该产品的所有特性都是那么直观。本书通过展示如何使用这些特性来介绍如何使用MySQL Workbench。
本书读者对象
开发人员、数据架构师和DBA应该阅读本书,以便学习如何使用MySQL Workbench的特性。本书应该可以帮助他们加快学习本产品的速度。
开发人员可以快速地创建数据模型以便部署新的应用。数据架构师可以使用MySQL Workbench来对数据模型进行逆向或前向工程。DBA可以将MySQL 5.0、5.1、5.5和5.6迁移到MySQL兼容的SQL脚本文件中。他们也可以将Postgres 9.1、Sybase 15.7和Microsoft SQL Server 2000、2005、2008和2012迁移到MySQL Server实例或SQL脚本文件中。
本书涵盖的内容
本书首先介绍了如何安装和配置MySQL Workbench产品以及如何创建和维护到MySQL数据库的连接。随后,本书介绍了数据建模的概念;如何创建和编辑表、关系和例程;如何对现有的MySQL数据库进行逆向工程。
本书也涵盖了如何编辑和管理SQL脚本。书中涵盖了如何管理MySQL Server实例、用户和组,以及如何导入和导出MySQL Server实例、数据库和表。书中还涵盖了迁移工具,可使你迁移Postgres、Sybase、Microsoft SQL Server和其他MySQL Server实例。
如何使用本书
有关如何使用本书,有三种选择:从头到尾地阅读;阅读某一章,学习如何使用本产品的某项特性;阅读某一节学一些技巧。
书中有完整的截图,引导读者遍历本产品的所有主要特性。伴随着这些截图,还有详细的说明,帮助你遍历这些特性。
本书的内容组织
本书的组织形式可支持读者从头到尾地阅读、阅读某章或阅读某节以便作为一种参考。
第Ⅰ部分:配置
第1章涵盖了MySQL Workbench的安装与配置。
第2章涵盖了如何设置、配置和管理数据库连接。
第Ⅱ部分:数据建模
第3章涵盖了如何对数据进行建模,重点在于好的设计原则。
第4章涵盖了如何在Data Modeling组件中创建表、视图和关系。
第5章涵盖了如何创建和部署例程,例程可能是存储函数或过程。
第6章涵盖了如何对已有的InnoDB数据库进行逆向工程,以便得到数据模型。由于关系是由外键约束决定的,因此InnoDB是必须的。
第Ⅲ部分:SQL的研发
第7章涵盖了如何编辑数据库中的数据,其中包含了一个网格状的界面,允许插入、更新和删除数据。
第8章涵盖了如何在MySQL Workbench内部管理和使用SQL脚本文件。
第Ⅳ部分:服务器管理
第9章涵盖了如何管理MySQL Server实例。
第10章涵盖了如何管理MySQL Server实例中的用户和组。
第11章涵盖了如何导入和导出MySQL数据库实例;数据库;表、视图和例程。
第12章涵盖了如何将MySQL 5.0、5.1、5.5和5.6数据库、Postgres 9.1、Sybase 15.7和Microsoft SQL Server 2000、2005、2008和2012迁移到MySQL Server实例上或相匹配的MySQL的SQL脚本文件中。
第Ⅴ部分:附录和词汇表
附录部分提供了每章最后的“本章内容考查”部分的答案,解释了如何用Python脚本来扩展MySQL Workbench,还解释了如何设置Microsoft SQL Server。另外,还包含了一个数据建模术语的词汇表。
本书的示例代码
可从McGraw-Hill的Oracle Press网站:www.OraclePressBooks.com下载VideoStore.zip文件。这个zip文件包含了一个名为video_store.sql的文件。你应该在MySQL中创建了storedb数据库之后,再以非超级用户的账户来运行该文件。若使用其他数据库,则需要对video_store.sql脚本进行编辑。