编辑推荐
不管你采用的是何种关系数据库系统,作者会帮助你设计一个健全且性能稳定的数据库。刚开始设计数据库?补救糟糕的设计?现有数据库需要完善?从本书开始,一一解决这些问题!
作者简介
作者:Michael J. Hernandez(迈克尔·J·埃尔南德斯) 译者:盛杨燕
盛杨燕,2014年获电子科技大学硕士学位。现任成都数联文化传播有限公司总经理,目前主要从事IT相关领域图书的翻译工作,已出版译著有《大数据时代》、《大数据云图》、《如何创造思维》、《伟大创意的诞生》等。
目录
第1部分关系数据库设计
第1章关系数据库
本章内容
数据库的类型
早期数据库模型
层次数据库模型
网状数据库模型
关系数据库模型
检索数据
关系数据库的优势
关系数据库管理系统
后关系模型
未来将会如何
最后一点
小结
思考题
第2章设计目标
本章内容
为什么要关注数据库设计
理论的重要性
学习优秀设计方法学的益处
优秀设计的目标
优秀设计的好处
数据库设计方法
传统设计方法
本书中所呈现的设计方法
规范化
小结
思考题
第3章术语
本章内容
术语为何重要
关于值的术语
数据
信息
空值(NULL)
NULL的值
NULL所带来的问题
关于结构的术语
表
字段
记录
视图
键
索引
关于关系的术语
关系
关系类型
一对一关系
一对多关系
多对多关系
参与的类型
参与度
关于完整性的术语
字段说明
数据完整性
小结
思考题
第2部分设计过程
第4章概念性概述
本章内容
完成设计过程的重要性
明确宗旨和任务目标
分析现有数据库
创建数据结构
确定和建立表关系
确定和定义业务规则
确定和定义视图
审核数据完整性
小结
思考题
第5章大幕开启
本章内容
开展访谈
参与者指南
采访者指南
案例分析:迈克自行车行
明确宗旨
优良的宗旨
制订宗旨
案例分析:为迈克自行车行制订宗旨
明确任务目标
优秀的任务目标
制订任务目标
案例分析:为迈克自行车行制订任务目标
小结
思考题
……
第6章分析现有数据库
第7章建立表结构
第8章键
第9章字段说明
第10章表关系
第11章业务规则
第12章视图
第13章评审数据完整性
第3部分其他数据库设计事项
第14章设计不当——禁忌事项
第15童打破规则
结束语
第4部分附录
附录A思考题答案
附录B数据库设计过程中的示意图
附录C设计指南
序言
献给我的妻子,感谢她始终如一地信任我。
献给一路帮助过我的人——我的老师、导师、朋友和同事。
献给所有曾经尝试过设计关系数据库但失败了的人。
关于作者
Michael J. Hernandez是一位独立的关系数据库咨询专家,专攻关系数据库设计。他有20多年的科技行业从业经验,为各种各样的客户开发过数据库应用程序。他为众多杂志专栏、白皮书、书籍和期刊撰稿,合著有畅 销书SQL Queries for Mere Mortals®(Addison-Wesley,2007)。Mike(Michael的昵称)是全美政府、军队、私营部门以及企业中最受欢迎、最有名的技术培训师。他曾在很多美国国内和国际会议上发言,他的演讲和主持一直大受欢迎。
除了技术背景之外,Mike的技能和兴趣广泛,从艺术到形而上学,涉猎众多。不过,Mike最爱的还是吉他,他已经弹了40多年吉他,担任专业吉他手也有15个年头。Mike厨艺了得,热爱教学(教授写作、公共演讲、音乐),擅长一语双关的文字游戏,甚至还能用塔罗牌算命。
Mike说他永远不会真正地退休,只会在厌倦了手头上的事情之后,转而去做其他能引起他兴趣的事情。
序言
致第三版
十年了,我和Mike见面的机会比过去更少了。有人可能不知道,我们同一天生日(虽然他比我年长了不少,起码大整整一岁)。我们每年至少会见上一面,庆祝我们又多活了一年。有趣的是,微软(Microsoft)差不多也是每十年就“更新”一次技术。如今,回头看我十年前所写的序言,一切都没多大变化——我依然埋头研究微软的一项新技术,不过这一次研究的是WinRT和Windows 8,而不是.NET。不过,有一点从未改变:人们对精心设计并良好执行的数据库设计的需求从未改变。Mike在第一版中所述内容基本上依然适用,目前的新版本进一步完善了一些细节,而优良数据库设计的原则十年来始终如一。我不得不承认,我有点嫉妒Mike写了一本生命力如此持久的好书。一本书能畅 销这么多年,至少证明它是一本好书。Mike在本书中详细阐述了数据库设计过程,不管你是第一次阅读本书,还是第二次,抑或第三次,都肯定能在其中找到一条考虑周全的有益道路,指引你在变幻莫测的数据库设计中找到方向。现在,让我们跳过引言部分,进入正题吧!
——肯盖茨(Ken Getz),2012年11月14日
第二版序言
我和Mike Hernandez相见的次数不如从前多了。自我为本书的第一版作序以来,我们的职业生涯都发生了巨大的改变。就算不说别的,我们走动得少了,自然碰头的次数也就少了。如果你愿意迁就我,我也许会补充说,自此书的第一版问世以来,整个世界也发生了巨大变化。就最平凡无奇的方面来说,自我全心全意地投入到微软.NET的开发中,我的整个开发生涯都被改变了。不过,有一件事始终未变,即对数据、对精心设计的数据的不断渴求。把复杂的应用整合在一起,但背后的数据却设计拙劣,由此带来的损害,不比Mike撰写本书第一版时的程度低。不管你是刚涉足数据库开发,还是已经经验丰富;不管你曾经读过Mike的书籍,还是第一次读到;不管你是乐于让别人设计你的数据,还是喜欢自己动手做——本书都是你的不二之选。Mike不但能简单明了,而且能趣味横生地阐释概念,这一能力一直令我深感惊异。
——肯盖茨(Ken Getz),2002年10月10日
第一版序言
你可能好奇,为什么还要再出一本关于数据库设计的书呢?Mike Hernandez第一次和我讨论这本书的时候,我也这么想。但事实就是,世上确实需要一本这样的书,也许通过迅速阅览本书的内容,在翻到本序言之前,你已经发现这一点。你肯定能找到许多解释数据库设计科学背后的原理和概念的书籍,但可能不会找到很多从Mike的独特视角出发的书籍(如果真能找到的话)。他立志拿出一本基于坚实的数学研究原理之上的书,但目标是实际应用,而不是讨论理论上的可能性。不管你现在具体使用的是哪种数据库,本书中的概念都有意义,适用于你的数据库设计项目。
当我翻到第6章的开篇,看到如下建议时,我就知道这本书正是我想要的:
不要将现有的数据库框架作为新的数据库框架的基础。
如果多年前,我刚刚踏上数据库开发者之路时,有人如此忠告我,我定能省下大笔的时间!这就是我所看中的:Mike有多年为客户设计数据库的经验;他花费了大量时间思考、阅读、研究创造数据库应用的正确方式。在本书中,他毫无保留地将一切呈献给了大家。
这本书充满真知灼见,并用简单易懂的例子加以阐释。这并非是指本书中没有涉及适当的数据库设计的核心信息——书中自然是有这些信息的,但是这些内容是面向真正的程序开发人员的,而不是理论家。
我花了不少时间和Mike讨论数据库设计。不管是喝咖啡时、开会时还是写课件时,Mike对数据库设计的热忱始终未减。就像操作系统设计师追求极致完美的算法一样,Mike一直在探寻解决数据库设计的好方法,以及如何能恰当地解释给别人——就如你在本书中会看到的一样。多年来,我所掌握的数据库设计知识中,有很多是从Mike处学得,而且我确信此书定能教给我更多。本书简洁翔实地展示了开发专业数据库所需掌握的信息,我也确信你在读过这本书之后,会有同感。
——肯盖茨(Ken Getz),MCW技术公司(KenG@mcwtech.com)
前言
生命,一如所有最古老的暗喻所认为的,是一段旅程。
——Jonathan Raban
For Love and Money
路线也许会变更,方向也许需要调整,但是旅途会继续……
——Micheal J. Hernandez
《数据库设计凡人入门》(第二版)
显然,从本书的第二版问世9年以来,科技领域,尤其是数据库管理方面的变化之巨,翻天覆地都不足以形容。如今,掌上设备的存储和处理能力,相当于过去几个房间大的大型机。今天,掌上设备无处不在,许多人视之为理所当然——尤其是年轻一代。(我的小侄子可能永远无法理解,我第一次为自己的IBM计算机买了一块40MB的扩展卡时的激动心情。不过,这又是另一回事了。)如今,数据库管理系统能够处理数TB的数据,现在人们也很重视存储、管理和利用云端的数据。
那么,现在是否还需要你手上拿的这本书?当然!无论数据库管理变得多么复杂,始终需要关于数据库设计基础的书籍。要理解事物运行的工作方式和原理,就必须掌握基础知识。许多其他的专业领域亦是如此,无论是技术类学科,如建筑设计、工程学,还是艺术类学科,如音乐、烹饪,无一例外。
近些年,我的人生踏上了新的、全然不同的道路,而我非常享受所做的一切。最近,我写东西比较多,因此觉得是时候出本书的第三版了。我会分享在此过程中学到的一些新知识。也许,我还会进一步厘清我对这个主题的一些看法。现在我已经完成了这部作品,迫不及待地想知道这趟旅程接下来会带我到哪里。
读者请注意:参阅本书中引用的其他内容,请登录Informit.com/titles/ 0321884493。
致谢
不管你听说过哪些写作心得,写作其实需要的是协作。我很感激一直乐于提供帮助的编辑、同事、朋友和家人一路上给我的支持。他们给我带来勇气,让我能专注于手头的工作,所以我想对他们致以最诚挚的谢意。
首先,我要感谢我的好编辑琼默里(Joan Murray)给我重写一版的机会。我们花了好几年的时间讨论此事,是她的毅力、耐心、善良和领导力帮助我下定决心开始这项工作,并圆满完成。我还要感谢出版编辑卡罗琳塞奈(Caroline Senay)熟练地指导审校,还有校对编辑奥德丽多伊尔(Audrey Doyle)对本书内容精确、详尽的审校。同时,我要特别感谢约翰富勒(John Fuller)以及他的制作人员——你们做得一如既往地出色!我一直和Addison-Wesley团队保持着良好的关系,我几乎不能想象我怎么可能会愿意为其他出版社写作技术书籍。
其次,我想感谢杰出的技术审校团队:特雷西桑顿(Tracy Thornton)、托尼威金斯(Tony Wiggins)还有西奥多理查森(Theodor Richardson)。他们毫无保留地奉献出了他们的时间、精力和专业知识,给我提出了众多的宝贵意见和建议。毫无疑问,本书受益于他们的付出。我想再一次感谢你们每一个人的付出,让第三版的水平超出了我的预期。
非常感谢肯盖茨(Ken Getz)再一次为本书作序,肯是一位备受尊敬的专家,同时也是我的同事、好友。真高兴能在本书开篇加上他的想法和评论。
我还要感谢读者朋友们把他们关于本书的想法和评论反馈给我。大家给予的赞扬和支持让我受宠若惊,我要特别感谢读者提出的建设性批评意见,让我得以在新一版中完善相关内容。我还要感谢所有的学术机构、政府组织和商业组织,感谢你们采用我的作品,当作数据库初学者的“标准读物”。它们对本书的肯定,让我备感荣幸。
最后,我想感谢我的妻子,感谢她在我创作此书的过程中给予我的无尽的耐心。她的帮助和支持何其珍贵,我欠她的太多。我可以清楚地告诉大家我有多爱她,但是她讨厌任何公开示爱的行为。因此,我只能为她献上桂冠,紧紧地握住她的手。
引言
平凡的厨子做不好普通的菜。
——Countess Morphy
过去,数据库设计的工作由信息技术(IT)部门人员和专业的数据库开发者履行。他们通常具备数学、计算机科学或者系统设计背景,往往有使用大型机数据库的经验。其中很多人编程经验丰富,已经编写过大量由数千行代码的数据库应用程序。(他们因其工作的性质和重要性,通常都会工作过度。)
那时,设计数据库系统的人员必须有过硬的学历背景,因为他们开发的大部分系统都将在全公司范围内运用。由于编程语言和他们所采用的数据库应用程序异常复杂,即便只是为公司内部的一个部门或者一个小公司开发数据库,数据库设计师仍然需要进行全面的正规训练。然而,随着技术进步,教育背景要求也在变化。
自20世纪80年代以来,数据库软件取得了长足发展
文摘
我们为什么要学数据库——代序
我从小就很喜欢读书,但不明白书有好坏之分,恰好父亲淘 了两大箱子文化宫处理的旧书,于是我就背着父亲一本一本从箱子里面偷书出来看,看完了之后再胡乱塞回去。刚开始偷书看的时候也就三四岁,应该也看过很多“少儿不宜”的书,我记得小学一年级前就开始看梁羽生的《弹指惊雷》,也不记得那个时候看懂了多少。看完之后的书塞回箱子顶部,也从来没有整理过,所以到后来伸手进去摸(箱子搬不出来),顶上都是些看过的书,要找到一本还没有看过的书,是越来越不容易。
后来离开家出去读书,不管是在中国科学技术大学还是在瑞士弗里堡大学,我都有让同学艳羡的“藏书”。那时候一箱一箱搬运到弗里堡大学的中文书,应该还在造福来自中国的学弟学妹。和父亲越来越乱的大书箱一样,因为没有条件,所以喜欢不喜欢的书,课外课内的书,看过没看过的书,都杂乱地堆在一起。只是因为是自己选过、买过、品过的东西,总是能够很快找到所需要的书,若是换了另外一个人找我借一本教材,恐怕是很难从“垃圾山”一般的书堆中自己找到想要的教材。
2013年,我第一次有了一个自己独立的办公室。办公室面积不大,但是在我的坚持下,配备了一个很大的书柜。书柜有4层书架,可以放一百二三十本书,这些书放在书架上,直接就可以取阅,来办公室的客人也能够看到书的名字。书架两侧还各有一扇木头的拉门,里面是柜子和架子,挤挤各自可以放两百来本书,但是从外面看不到,取阅也不太方便。我选了三类书放在明面的书架上,一是自己特别喜欢,也特别能表达自己兴趣的书;二是短期内可能就会阅读的书,一般都是新近购买的书籍;三是经常使用的工具书。其他用得相对较少的书,或者刚刚看过的一些书,就只能退让一步,躲到拉门后面了。
对于一个爱书的人,怎么样排列自己的书,成了一个幸福的问题。书排列得好,既方便一下子找到想要的书,也方便购买新书后能够一下子插入到合适的位置,不至于书越多越乱。可以用来排列图书的办法很多,例如按照出版社的名字、按照作者的名字、按照图书的题目等,甚至可以按照图书书脊的颜色、图书的重量、页码、定价、字数等。我有一次到一个朋友家,看到他家卧室里面一个很小的书柜,也就五十本书的规模吧,竟然是按照颜色排列的。我好奇地问他为什么如此,他说是小女儿排的,而且非要如此,一旦有些变动,就又哭又闹的。
图书的重量、字数等,其实是很好的标识,因为重量或者字数完全一样的书很少,基本上可以唯 一确定一本书。但是用这个来排列图书并不合适,一是要随时确定图书的重量和字数并不容易,尤其是后者,难道我新买一本书都要数一数字数吗?二是每次找书的时候,一般都是和书的内容有关,例如想找一本图论方面的研究生教材,查阅一个定理的文献出处,而不会想找一本二十一万一千零四十九个字的书。一般而言,连续的几次找书,可能出于类似的目的(找离散数学的相关教材和专著用于备课),或者相近的兴趣(这两月专攻沧月的小说及相似的玄幻作品),而不太可能一段时间内主要都找白色封皮的书或者按照从重到轻的顺序读书。
所以我想了又想,还是按照图书内容的分类来进行排列,包括小说、散文、诗歌、传记、历史、社会学、经济学、哲学、科普、科学专著、教材、工具书……同一类的图书,再按照作者姓名的字母序进行排列。后者倒是很好办,因为作者的名字是明确的,不会有误差。前者却不是图书固有的特征,而是经过某种非标准化的手段处理得到的,因为有很多个人的因素在里面——一本书可能属于很多不同的类别,既可以看成科学专著,也可以看成教材,取决于我自己的判断。不过不管怎样,这种符合使用习惯的分类,让我的书架变得非常清晰整齐,查书换书也非常方便。
因为把图书分多少类,怎么进行分类,都有个人的因素在里面,所以也会带来一些不便。我中学的时候有一个很好的朋友,曾经给我介绍过很多作者,既包括当时刚刚崛起的黄易的连载,也包括那个时候还不太出名的昆德拉和村上春树。现在快二十年过去了,我很想知道我们俩买书和看书的习惯还一样吗?遗憾的是,当你的书多到一定程度后,如果你没有办法直接记得哪些书你买过,要想计算有多少比例的书是重复的,就是件麻烦的事情——因为两个人对图书的分类和排列的方式不同,找起来特别费劲。这个时候,如果有一个人是按照页码进行排列,那就方便了,因为页码一翻就知道,而且一本书在甲手上是二百四十九页,到了乙手上不可能变成二百五十页。
自从开始打点自己的书柜,我租住的房子都变得更加干净了,也终于明白为什么需要采用中国图书分类号才能够管理一个图书馆。我真正梦想中的书柜,是按照图书的喜爱程度排序的。如果大家都这样排序,当我新遇到一个女孩子的时候,我就可以问她最喜欢的十本书,然后在我“心中的书柜”中查查这十本书的顺序。如果排名都比较靠前,那就可以继续交往了。这种方法可以避免我每次见到一个女孩子,总是忍不住询问“你是做什么方向的?”,“有没有简历可以给我简单看看?”等等尴尬的问题。
所以说,都按照中图分类号排列,是一种美;都按照自己心中喜欢的程度排列,也是一种美。两种美不知道哪个更美的时候,就不妨兼而得之。
电子版地址:
https://weidian.com/item.html?itemID=2211016127
微信:K517855150
最新评论