SQL Server 2008数据库设计与实现(关系数据库实现的通关宝典)
基本信息
- 作者: (美)Louis Davidson Kevin Kline
- 译者: 程桦 张绪业
- 丛书名: 图灵程序设计丛书 数据库
- 出版社:人民邮电出版社
- ISBN:9787115215543
- 上架时间:2009-10-30
- 出版日期:2009 年11月
- 开本:16开
- 页码:560
- 版次:1-1
- 所属分类:
计算机 > 数据库 > SQL Server
编辑推荐
资深数据库专家的心血力作
SQL Server设计思想的独到解析
关系数据库实现的通关宝典
推荐阅读
内容简介回到顶部↑
本书深入浅出地介绍了目前世界上最受欢迎的数据库管理系统之一——sql server。全书共分三个部分:第一部分阐释了数据库的基本概念,讲解了数据库建模语言;第二部分展示了从概念建模到在 sql server 2008上真正实现数据库的过程;第三部分深入探讨了 sql server若干方面的技术细节,如数据保护、索引、并发访问等。通过将理论融入数据库实践,清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计,深入揭示了 sql server 2008的技术细节。.
本书浓缩了作者作为 sql server数据库架构师多年来丰富的实践经验,适合各类数据库开发和管理人员学习参考。...
本书浓缩了作者作为 sql server数据库架构师多年来丰富的实践经验,适合各类数据库开发和管理人员学习参考。...
作译者回到顶部↑
目录回到顶部↑
第1章 数据库概念简介. 1
1.1 数据库设计阶段 2
1.1.1 概念阶段 3
1.1.2 逻辑阶段 5
1.1.3 实现阶段 5
1.1.4 物理阶段 6
1.2 关系数据结构 6
1.2.1 数据库和模式 6
1.2.2 表、行和列 7
1.2.3 信息原则 10
1.2.4 域 12
1.2.5 元数据 13
1.2.6 键 13
1.2.7 未显式赋值的项(null) 18
1.3 实体之间的关系 20
1.3.1 二元关系 21
1.3.2 非二元关系 24
1.4 数据访问语言(sql) 24
1.5 理解依赖性 25
1.5.1 函数依赖性 26
1.1 数据库设计阶段 2
1.1.1 概念阶段 3
1.1.2 逻辑阶段 5
1.1.3 实现阶段 5
1.1.4 物理阶段 6
1.2 关系数据结构 6
1.2.1 数据库和模式 6
1.2.2 表、行和列 7
1.2.3 信息原则 10
1.2.4 域 12
1.2.5 元数据 13
1.2.6 键 13
1.2.7 未显式赋值的项(null) 18
1.3 实体之间的关系 20
1.3.1 二元关系 21
1.3.2 非二元关系 24
1.4 数据访问语言(sql) 24
1.5 理解依赖性 25
1.5.1 函数依赖性 26
译者序回到顶部↑
如果将数据库称为现代数字生活的基础,那么这样的说法一点也不夸张——大型企业应用、网站,所有这些东西的背后,都是数据库在支撑。并且,最终说来,产生价值的并不是绚丽的界面和现代化的输入方式,而是存放在数据库中的数据。不幸的是,虽然关系型数据库历经了约30年的发展,有成熟的理论和大量的实践基础,但是,大多数设计、开发人员在设计数据库结构时仍然是“跟着感觉走”,根据业务的需要和编程的方便,把字段这张表放几个那张表放几个完事。对这样设计出来的数据库,只需多问几个为什么——业务模型是如何体现的?数据完整性如何保证?性能是如何权衡的?——恐怕设计者就该崩溃了。.
这也难怪,设计、开发人员在学校中学习数据库时,理论书籍离实际开发较远——试问有几个人能够以可实践的方式把规范化的几条原则阐述清楚?在工作时,使用的数据库资料和书籍又往往是“手册型”,大多仅仅讲解特定数据库提供的功能。
正如作者所说——“我的书目标很简单,那就是填补这个空白,架起学院教科书与通常针对SQL Server所写的,纯粹面向实践的书之间的桥梁”。翻译的过程中,译者感到此言不虚:作者从数据库的基本概念到数据库建模,从如何运用规范化原则到如何做成实际的数据库表,从如何保护数据库完整性到如何提高数据库的性能,从数据库的安全机制到并发事务控制,从数据库设计开发的常用模式到应用程序的数据访问策略,既有理论又紧扣实践。阅读本书的过程,就是把一些以前模糊地知道,但又觉得很难运用的理论实实在在地运用到实践中的过程。
虽然本书是针对SQL Server这个特定数据库平台来阐述理论和实践的,然而,本书所体现的思想和方法,完全可以运用到其他关系数据库平台上。..
翻译的时间很紧,如果没有家人的支持和理解,很难想象如何完成这项工作。
感谢人民邮电出版社图灵公司很好地推动了这本书的翻译工作。另外,图灵公司的论坛上丰富的资料和活跃的讨论也使我们眼界大开,受益良多。
翻译工作并非阐述自己的思想,翻译的第一要务是忠实地传达原著者的思想。虽然无法自由地表达自己的想法,然而,翻译的快乐就在于:使另一个人的好想法能让更多的人了解。当然,由于时间紧张,译者水平有限,错误粗糙之处相信不在少数,敬请广大读者批评指正。
感谢我的妻子魏萍,你容忍我一吃完饭就坐到计算机前。谢谢女儿程灵馨,在爸爸不能陪你玩时,5岁的你居然也表示理解。谢谢作者Louis Davidson,你耐心地回答了我的问题。
程桦
感谢我的未婚妻张艳,是你的鼓励和体贴让我在寒冷的冬日伏案不辍。还要感谢我的家人,你们殷殷的期盼让我产生了对知识的不渝追求。...
张绪业
2009年5月
这也难怪,设计、开发人员在学校中学习数据库时,理论书籍离实际开发较远——试问有几个人能够以可实践的方式把规范化的几条原则阐述清楚?在工作时,使用的数据库资料和书籍又往往是“手册型”,大多仅仅讲解特定数据库提供的功能。
正如作者所说——“我的书目标很简单,那就是填补这个空白,架起学院教科书与通常针对SQL Server所写的,纯粹面向实践的书之间的桥梁”。翻译的过程中,译者感到此言不虚:作者从数据库的基本概念到数据库建模,从如何运用规范化原则到如何做成实际的数据库表,从如何保护数据库完整性到如何提高数据库的性能,从数据库的安全机制到并发事务控制,从数据库设计开发的常用模式到应用程序的数据访问策略,既有理论又紧扣实践。阅读本书的过程,就是把一些以前模糊地知道,但又觉得很难运用的理论实实在在地运用到实践中的过程。
虽然本书是针对SQL Server这个特定数据库平台来阐述理论和实践的,然而,本书所体现的思想和方法,完全可以运用到其他关系数据库平台上。..
翻译的时间很紧,如果没有家人的支持和理解,很难想象如何完成这项工作。
感谢人民邮电出版社图灵公司很好地推动了这本书的翻译工作。另外,图灵公司的论坛上丰富的资料和活跃的讨论也使我们眼界大开,受益良多。
翻译工作并非阐述自己的思想,翻译的第一要务是忠实地传达原著者的思想。虽然无法自由地表达自己的想法,然而,翻译的快乐就在于:使另一个人的好想法能让更多的人了解。当然,由于时间紧张,译者水平有限,错误粗糙之处相信不在少数,敬请广大读者批评指正。
感谢我的妻子魏萍,你容忍我一吃完饭就坐到计算机前。谢谢女儿程灵馨,在爸爸不能陪你玩时,5岁的你居然也表示理解。谢谢作者Louis Davidson,你耐心地回答了我的问题。
程桦
感谢我的未婚妻张艳,是你的鼓励和体贴让我在寒冷的冬日伏案不辍。还要感谢我的家人,你们殷殷的期盼让我产生了对知识的不渝追求。...
张绪业
2009年5月
前言回到顶部↑
我经常扪心自问,“为什么要做这件事?为什么还要写新版本?这值得吗?如果我抛开书去打任天堂游戏机,我是不是能帮超级玛丽快点把公主救出来?”在微软MVP 2008年峰会上,这些问题都由一位MVP帮我回答了。他感谢我写了这本书,说他曾经试着读点这方面的大学教材,但那些书都太难了,读不太懂。.
“喔,是的,”我想,“那是我最开始要写这本书的原因。”当我最早开始设计数据库时,我从几位伟大的导师那里学到了不少东西,但是,当我想进一步深入研究时,我开始寻找数据库设计方面的材料,但没找着多少。我找到的最好的一本书是Chris Date的An Introduction to Database Systems(Addison Wesley,2003),然后我读了自己能读懂的部分。然而,我很快就有点晕头转向,没法做到一旦理解了概念之后,就能很好地将关于设计的理论转换到真正的、同时较为简单的设计过程中去。在我所使用的Chris和其他人的教材中,很明显,创建关系模型这件事包含了太多理论,甚至是数学知识。
如果你想要成为一名理论家,那Chris的书就是必读的,当然,除此之外还有很多可以参考的书(最好去看看http://www.dbdebunk.com/books.html,你会找到更多的书)。问题在于,这些书大多数都包含了太多的理论,超出了一般实践工作者所需了解的(或者愿意花时间去读的)内容,并且它们没有真正地深入到实际数据库系统的实现中去。我的书的目标很简单,那就是填补这个空白,在大学教材与通常针对SQL Server所写的、纯粹面向实践的书之间架起一座桥梁。我的目的不是顶替这些书,完全不是,在我的书架上有很多这样的书。本书更像是一本面向技术的书,而不是讲解SQL Server功能的使用手册。我将介绍关系引擎的大多数典型功能,教给你使用它们的技术。然而,我不能说这是你书架上需要的唯一一本书。
如果你有本书以前的版本,你可能会问为什么还需要这个新版本,我了解你的感受。我花了大量时间找出应该买这个新版本的理由,而这个理由并不那么明显——那就是,我现在涵盖了2008的所有功能。很明显,这只是部分原因,最重要的是,我一直在努力加入更多新内容让你的工作更轻松。我加入了一章(第7章)介绍开发模式,每一章中也都加入了大量新材料,从而能帮你改进数据库设计。
诗人和剧作家奥斯卡王尔德曾经说过:“只有年轻人才会无所不知。”现在回头看时有点后悔,自己在写第一本书Professional SQL Server 2000 Database Design之前,以为自己什么都知道。正是那种无知和放纵不羁的热情,才让我有勇气写下第一本书。最后,我确实完成了第一本书,它之所以还不错,主要归功于技术编辑给予的批评。并且,如果我没有最初那种驱使我写完书的热情的话,我也不可能写这本书的第四版。无论如何,如果你花几周的时间逐章逐节地比较了这些书的每个版本的话,你会发现这是个内容逐步丰富的过程,而且作者也在逐步成熟。
过程的逐步丰富和作者的逐渐成熟都有其原因。一个原因是过去两个版本以来我所碰到的编辑:首先是Tony Davis,现在是Jonathan Gennick。他们两人对我的文风都多有指摘,并且他们把本书的结构调整得很棒。另一个原因可以简单地归结为经验,因为从我开始写第一版以来已经过了8年。但是,书中所用的材料之所以有进步,最大的原因还是它们经过了检验。一方面我在对别人贡献着自己的好评论,另一方面我也收到了大量关于如何改进的反馈(其中一些评论可不那么友善)。我非常用心地倾听,从书发布那天开始就记一系列笔记。对于我能用得上的任何反馈,我都会感到很高兴。可以用电子邮件联系我(louis@drsql.org),如果你愿意也可以在我的网站(drsql.org)留下匿名反馈。你可以在网站上找到一个附录,里面含有我希望自己在写这本书时就了解了的材料。
数据库设计的目的
数据库设计的目的是什么?你到底为什么要关心这事?主要的原因是设计良好的数据库用起来很简单,因为所有东西都在其应处于的逻辑位置上。这非常像一个收拾得很好的橱柜,如果你需要红辣椒粉,直接到调味品搁架的红辣椒粉那格就能取到,这就比到处乱找要强得多。但是,许多系统组织得一团糟。即使每件东西都有一个分好的地方,如果找起来很困难,那件东西也就没啥价值了。想象如果一本电话簿完全没有排序会如何?或者,编排字典的时候把词任意放在文字中能放下的地方又会如何?数据库如果组织良好的话,即使要写一两个联结,你也可以靠本能就知道去哪里获取需要的数据。我的意思是,说到底,这难道不是件很有趣的事吗?..
你也可能吃惊地发现,数据库设计是件相当简单的任务,不像听起来那么困难。与随着项目进行而拼凑数据存储相比,要做好这件事需要在项目一开始多花些时间,但是,在项目的整个生命周期中,这样做能获得相应回报。要想正确地进行数据库设计,我们面对的最具挑战性的问题是:与不做设计相比,正确地设计数据库会花更多的时间(在项目计划会议上,关于时间的争论经常发生)。因为数据库设计没有什么可见的东西来让客户感到赏心悦目,因此这一阶段经常会被压缩,目的就是让事情看起来进行得较快。对于普通客户而言,即使是最没有挑战性、最不让人感兴趣的用户界面也比最漂亮的数据模型要吸引人得多。虽然一般说来,数据才是投资创建系统的最终原因,但是,用户界面编程往往占据了中心地位。并不是说你的同事没有注意到一个糟糕的数据模型与一个漂亮的数据模型之间的区别,他们确实注意到了,但是,当程序员需要编码时,往往会顾不上考虑如何能正确地存储数据。我希望自己知道这个难题的答案,因为要是有这个答案,我的书会卖出一百万本。本书将努力提供一些技术和过程,帮助你进行数据库设计,力求对新手清晰易懂,对老练的专家也有所助益。
这个设计和架构数据存储的过程与数据库安装和管理的角色并不相同。例如,作为数据架构师的角色,我很少去创建用户、执行备份,或者去设置复制与集群。我很少谈及这些任务,它们被认为是管理工作,由DBA角色担当。既是开发人员又是DBA的人并不罕见(实际上,如果你在小公司工作,你会发现自己担当了多个角色,以至于不堪重负),但是,如果你能将自己的思维与偏重实现的角色相分离,从而使你能更多地思考数据有多难用,那么一般说来,你设计出的东西会好很多。对许多情况而言,数据库设计没有看起来那样困难。
注解为安全起见,我要澄清一件事:如果你做过任何编程工作的话,毫无疑问,你会反对本书中的某些观点和意见。我完全同意本书不是什么Katmai 的圣路易斯 福音书。我的意见和观点来自于超过16年对数据库的学习、在数据库上的工作,并且由来自于许多不同的人、书、大学课堂和研讨会的知识所补充。我在“致谢”一节已经感谢了其中的许多人,但是,我忘掉的人名也数以百计,我脑中铭刻的某些知识精华就来自于他们。本书所展示的设计方法是所有这些思想的集合。我希望本书能被看作是个有用的学习工具。通过阅读本书和其他人的著作,再实践你自己的想法,你将会总结出自己的方法论,它会适合你自己,并使你成为成功的数据库设计人员。
本书的结构
本书由如下各章组成。
第1章:数据库概念简介。该章提供了对关键术语和概念的简要概览。
第2章:数据建模语言。该章的作用是介绍数据架构师的主要工具——模型。该章详细介绍了一种建模语言——IDEF1X,因为它是本书中用于展示数据库设计的建模语言。还介绍了其他几种常见的建模语言,因为某些读者或者出于偏爱、或者由于公司的要求会使用这些类型的模型。
第3章:概念阶段数据建模。在概念阶段数据建模中,我们的目标是讨论这样的过程:引入顾客的需求集合,将表、列、关系和业务规则放入数据模型格式中相应的地方。
第4章:规范化过程。数据库设计过程的下一步是规范化。规范化的目标是将表、列、关系和业务规则的集合格式化为每个值只在一个地方存储、每张表只代表一个单一实体的形式。在最初几次进行规范化时,这个过程会感觉不太自然,因为你不用琢磨如何使用数据,却必须琢磨数据本身以及结构会如何影响数据的质量。然而,一旦你掌握了规范化,那么,不以规范化的方式存储数据就会让人觉得不舒服。
第5章:实现基础的表结构。在数据库设计过程中,这是第一个要启动SQL Server,开始写脚本来构建数据库对象的时间点。该章讨论了构造表(包括为列选择数据类型)及关系,其中提到了实现后的结构可能与我们在规范化过程中得到的模型不一致的问题。
第6章:保护数据的完整性。除了要将数据安排在表和列中之外,也需要实现其他业务规则。在SQL Server中,保证数据完整性条件得以满足的第一条防线由CHECK约束与触发器构成,因为用户无法轻易绕开由约束和触发器进行的验证。这一章还讨论了其他几种保护数据的方法,它们可以用存储过程和客户端代码来实现。
第7章:模式和查询技术。除了设计表时的各种基本技巧之外,我们还利用几种技巧来构成常见的数据/查询接口,从而方便未来的查询和使用。该章讨论了几种常见的、有用的模式,同时也观察了某些人需要使用的一些模式——有些查询需求的接口实现对你来说非常困难,而这些模式能使它们变得更简单些。
“喔,是的,”我想,“那是我最开始要写这本书的原因。”当我最早开始设计数据库时,我从几位伟大的导师那里学到了不少东西,但是,当我想进一步深入研究时,我开始寻找数据库设计方面的材料,但没找着多少。我找到的最好的一本书是Chris Date的An Introduction to Database Systems(Addison Wesley,2003),然后我读了自己能读懂的部分。然而,我很快就有点晕头转向,没法做到一旦理解了概念之后,就能很好地将关于设计的理论转换到真正的、同时较为简单的设计过程中去。在我所使用的Chris和其他人的教材中,很明显,创建关系模型这件事包含了太多理论,甚至是数学知识。
如果你想要成为一名理论家,那Chris的书就是必读的,当然,除此之外还有很多可以参考的书(最好去看看http://www.dbdebunk.com/books.html,你会找到更多的书)。问题在于,这些书大多数都包含了太多的理论,超出了一般实践工作者所需了解的(或者愿意花时间去读的)内容,并且它们没有真正地深入到实际数据库系统的实现中去。我的书的目标很简单,那就是填补这个空白,在大学教材与通常针对SQL Server所写的、纯粹面向实践的书之间架起一座桥梁。我的目的不是顶替这些书,完全不是,在我的书架上有很多这样的书。本书更像是一本面向技术的书,而不是讲解SQL Server功能的使用手册。我将介绍关系引擎的大多数典型功能,教给你使用它们的技术。然而,我不能说这是你书架上需要的唯一一本书。
如果你有本书以前的版本,你可能会问为什么还需要这个新版本,我了解你的感受。我花了大量时间找出应该买这个新版本的理由,而这个理由并不那么明显——那就是,我现在涵盖了2008的所有功能。很明显,这只是部分原因,最重要的是,我一直在努力加入更多新内容让你的工作更轻松。我加入了一章(第7章)介绍开发模式,每一章中也都加入了大量新材料,从而能帮你改进数据库设计。
诗人和剧作家奥斯卡王尔德曾经说过:“只有年轻人才会无所不知。”现在回头看时有点后悔,自己在写第一本书Professional SQL Server 2000 Database Design之前,以为自己什么都知道。正是那种无知和放纵不羁的热情,才让我有勇气写下第一本书。最后,我确实完成了第一本书,它之所以还不错,主要归功于技术编辑给予的批评。并且,如果我没有最初那种驱使我写完书的热情的话,我也不可能写这本书的第四版。无论如何,如果你花几周的时间逐章逐节地比较了这些书的每个版本的话,你会发现这是个内容逐步丰富的过程,而且作者也在逐步成熟。
过程的逐步丰富和作者的逐渐成熟都有其原因。一个原因是过去两个版本以来我所碰到的编辑:首先是Tony Davis,现在是Jonathan Gennick。他们两人对我的文风都多有指摘,并且他们把本书的结构调整得很棒。另一个原因可以简单地归结为经验,因为从我开始写第一版以来已经过了8年。但是,书中所用的材料之所以有进步,最大的原因还是它们经过了检验。一方面我在对别人贡献着自己的好评论,另一方面我也收到了大量关于如何改进的反馈(其中一些评论可不那么友善)。我非常用心地倾听,从书发布那天开始就记一系列笔记。对于我能用得上的任何反馈,我都会感到很高兴。可以用电子邮件联系我(louis@drsql.org),如果你愿意也可以在我的网站(drsql.org)留下匿名反馈。你可以在网站上找到一个附录,里面含有我希望自己在写这本书时就了解了的材料。
数据库设计的目的
数据库设计的目的是什么?你到底为什么要关心这事?主要的原因是设计良好的数据库用起来很简单,因为所有东西都在其应处于的逻辑位置上。这非常像一个收拾得很好的橱柜,如果你需要红辣椒粉,直接到调味品搁架的红辣椒粉那格就能取到,这就比到处乱找要强得多。但是,许多系统组织得一团糟。即使每件东西都有一个分好的地方,如果找起来很困难,那件东西也就没啥价值了。想象如果一本电话簿完全没有排序会如何?或者,编排字典的时候把词任意放在文字中能放下的地方又会如何?数据库如果组织良好的话,即使要写一两个联结,你也可以靠本能就知道去哪里获取需要的数据。我的意思是,说到底,这难道不是件很有趣的事吗?..
你也可能吃惊地发现,数据库设计是件相当简单的任务,不像听起来那么困难。与随着项目进行而拼凑数据存储相比,要做好这件事需要在项目一开始多花些时间,但是,在项目的整个生命周期中,这样做能获得相应回报。要想正确地进行数据库设计,我们面对的最具挑战性的问题是:与不做设计相比,正确地设计数据库会花更多的时间(在项目计划会议上,关于时间的争论经常发生)。因为数据库设计没有什么可见的东西来让客户感到赏心悦目,因此这一阶段经常会被压缩,目的就是让事情看起来进行得较快。对于普通客户而言,即使是最没有挑战性、最不让人感兴趣的用户界面也比最漂亮的数据模型要吸引人得多。虽然一般说来,数据才是投资创建系统的最终原因,但是,用户界面编程往往占据了中心地位。并不是说你的同事没有注意到一个糟糕的数据模型与一个漂亮的数据模型之间的区别,他们确实注意到了,但是,当程序员需要编码时,往往会顾不上考虑如何能正确地存储数据。我希望自己知道这个难题的答案,因为要是有这个答案,我的书会卖出一百万本。本书将努力提供一些技术和过程,帮助你进行数据库设计,力求对新手清晰易懂,对老练的专家也有所助益。
这个设计和架构数据存储的过程与数据库安装和管理的角色并不相同。例如,作为数据架构师的角色,我很少去创建用户、执行备份,或者去设置复制与集群。我很少谈及这些任务,它们被认为是管理工作,由DBA角色担当。既是开发人员又是DBA的人并不罕见(实际上,如果你在小公司工作,你会发现自己担当了多个角色,以至于不堪重负),但是,如果你能将自己的思维与偏重实现的角色相分离,从而使你能更多地思考数据有多难用,那么一般说来,你设计出的东西会好很多。对许多情况而言,数据库设计没有看起来那样困难。
注解为安全起见,我要澄清一件事:如果你做过任何编程工作的话,毫无疑问,你会反对本书中的某些观点和意见。我完全同意本书不是什么Katmai 的圣路易斯 福音书。我的意见和观点来自于超过16年对数据库的学习、在数据库上的工作,并且由来自于许多不同的人、书、大学课堂和研讨会的知识所补充。我在“致谢”一节已经感谢了其中的许多人,但是,我忘掉的人名也数以百计,我脑中铭刻的某些知识精华就来自于他们。本书所展示的设计方法是所有这些思想的集合。我希望本书能被看作是个有用的学习工具。通过阅读本书和其他人的著作,再实践你自己的想法,你将会总结出自己的方法论,它会适合你自己,并使你成为成功的数据库设计人员。
本书的结构
本书由如下各章组成。
第1章:数据库概念简介。该章提供了对关键术语和概念的简要概览。
第2章:数据建模语言。该章的作用是介绍数据架构师的主要工具——模型。该章详细介绍了一种建模语言——IDEF1X,因为它是本书中用于展示数据库设计的建模语言。还介绍了其他几种常见的建模语言,因为某些读者或者出于偏爱、或者由于公司的要求会使用这些类型的模型。
第3章:概念阶段数据建模。在概念阶段数据建模中,我们的目标是讨论这样的过程:引入顾客的需求集合,将表、列、关系和业务规则放入数据模型格式中相应的地方。
第4章:规范化过程。数据库设计过程的下一步是规范化。规范化的目标是将表、列、关系和业务规则的集合格式化为每个值只在一个地方存储、每张表只代表一个单一实体的形式。在最初几次进行规范化时,这个过程会感觉不太自然,因为你不用琢磨如何使用数据,却必须琢磨数据本身以及结构会如何影响数据的质量。然而,一旦你掌握了规范化,那么,不以规范化的方式存储数据就会让人觉得不舒服。
第5章:实现基础的表结构。在数据库设计过程中,这是第一个要启动SQL Server,开始写脚本来构建数据库对象的时间点。该章讨论了构造表(包括为列选择数据类型)及关系,其中提到了实现后的结构可能与我们在规范化过程中得到的模型不一致的问题。
第6章:保护数据的完整性。除了要将数据安排在表和列中之外,也需要实现其他业务规则。在SQL Server中,保证数据完整性条件得以满足的第一条防线由CHECK约束与触发器构成,因为用户无法轻易绕开由约束和触发器进行的验证。这一章还讨论了其他几种保护数据的方法,它们可以用存储过程和客户端代码来实现。
第7章:模式和查询技术。除了设计表时的各种基本技巧之外,我们还利用几种技巧来构成常见的数据/查询接口,从而方便未来的查询和使用。该章讨论了几种常见的、有用的模式,同时也观察了某些人需要使用的一些模式——有些查询需求的接口实现对你来说非常困难,而这些模式能使它们变得更简单些。
序言回到顶部↑
数据库设计是Louis和我都热衷的事情。今年秋季,我将幸运地和我的朋友Louis Davidson登上同一个舞台。我们将在DevLink会议上演讲,地点是Louis的家乡Nashville,然后,在西雅图的PASS上我们也将同台演讲。在这两次演讲中,我们都将针对数据库设计这个题目开展讨论和辩论,并探讨对以数据为中心的应用来说数据库设计有多关键。.
数据库设计是门科学也是门艺术。规范化应该说是门科学,而确定实体的范围则是一门艺术,需要具有与各种数据库打交道的经验才能学到手。优雅的解决方案都有一种简单的美。Louis不止是位作者和数据库设计人员,也是一位大师级技师。在本书中,你会发现字里行间都隐藏着作者的呼吁——改善你的技能,精心雕刻出能够经受时间考验的数据库,创造一个能让开发人员充分施展拳脚的、虚拟的数据世界。..
数据库设计是每个以数据为中心的应用的基石。一个优雅的数据库设计使得数据一目了然、容易查询,并且使用有效的、基于集的查询将开发人员武装起来,使他们获得成功。但是,如果数据库设计就很糟糕,则无论多少代码也无法补偿,也无法为数据库加上缺失的功能。对任何以数据为中心的应用来说,没有什么角色比数据建模人员这个角色更为重要。用户界面换来换去,但是,即使经历了好几代应用编程语言,数据仍然存在着。数据库架构上犯下的错误迟早会被未来的程序员诅咒,即使他现在还未出生,即使他用的是现在还没发明的语言和工具。在我的好朋友Louis的指导下,多花一点时间来润色你的数据库设计,绝对是件值得的事。
因此,欢迎你阅读本书,这是Louis针对软件世界最重大的工作所写的战地指南的第三版。能够为本书作序我感到无比愉快。...
Paul Nielsen
SQL Server MVP
数据库设计是门科学也是门艺术。规范化应该说是门科学,而确定实体的范围则是一门艺术,需要具有与各种数据库打交道的经验才能学到手。优雅的解决方案都有一种简单的美。Louis不止是位作者和数据库设计人员,也是一位大师级技师。在本书中,你会发现字里行间都隐藏着作者的呼吁——改善你的技能,精心雕刻出能够经受时间考验的数据库,创造一个能让开发人员充分施展拳脚的、虚拟的数据世界。..
数据库设计是每个以数据为中心的应用的基石。一个优雅的数据库设计使得数据一目了然、容易查询,并且使用有效的、基于集的查询将开发人员武装起来,使他们获得成功。但是,如果数据库设计就很糟糕,则无论多少代码也无法补偿,也无法为数据库加上缺失的功能。对任何以数据为中心的应用来说,没有什么角色比数据建模人员这个角色更为重要。用户界面换来换去,但是,即使经历了好几代应用编程语言,数据仍然存在着。数据库架构上犯下的错误迟早会被未来的程序员诅咒,即使他现在还未出生,即使他用的是现在还没发明的语言和工具。在我的好朋友Louis的指导下,多花一点时间来润色你的数据库设计,绝对是件值得的事。
因此,欢迎你阅读本书,这是Louis针对软件世界最重大的工作所写的战地指南的第三版。能够为本书作序我感到无比愉快。...
Paul Nielsen
SQL Server MVP
媒体评论回到顶部↑
“跟本书的2005版一样,我认为Louis的这本书写得非常好,信息量极其丰富而且实践性强。阅读过程中,你会觉得是在跟作者讨论问题。我喜欢这本书,还因为它有自己的观点,而非从在线图书中照搬过来……”
—— Amazon读者评论...
—— Amazon读者评论...
评论交流
共有7人开贴评论 7人参与评论 3人参与打分 查看
评价等级:







发表于:2010-6-3 13:58:00
书中一半以上内容其实与某家SQL产品,或者MSSQL特定产品无关,在数据库建模基础知识方面,有着较为清晰的阐述,有作者自己的经验和理论结合,看后甚为激动,有些不明了的,明了,有些模糊的变得清晰了点。
从书说针对的读者群来说,跟适合有过实际数据库设计,已经从事过多个数据库应用程序开发的战友们,这样才能跟深入体会作者表达的意愿,已经文字背后的思想。当然如果你是初学者,也能获得一些意外的收获,但是没有自己实践后经验与作者经验比较,还是很难产生共鸣感的。
极力推荐那些有着尝试自己构建整个应用程序的数据库建模的战友们,把这本书通读两遍,一定为您未来的工作打下深厚的基础,呵呵。
从书说针对的读者群来说,跟适合有过实际数据库设计,已经从事过多个数据库应用程序开发的战友们,这样才能跟深入体会作者表达的意愿,已经文字背后的思想。当然如果你是初学者,也能获得一些意外的收获,但是没有自己实践后经验与作者经验比较,还是很难产生共鸣感的。
极力推荐那些有着尝试自己构建整个应用程序的数据库建模的战友们,把这本书通读两遍,一定为您未来的工作打下深厚的基础,呵呵。
| 我要写评论 |
| 查看所有评论交流(共7条) |








点击看大图









加载中...

