本书主要从初学者的角度介绍关系数据库模型。因此,本书的书名是《数据库设计入门经典》。数据库是数据的存储库。换而言之,数据库中可以存储大量信息。关系数据库是使用称为“表”的结构的特殊数据库类型。表与表之间用“关系”连接在一起。您可以用表之间的关系构建表,这些表不仅可用来组织数据,还可以用来在以后从数据库中检索信息。 关系数据库模型设计的过程是用来创建关系数据库模型的方法。该过程本质上是数学方法,但是非常简单,称为规范化。使用规范化的过程是若干独特的步骤,称为“范式”。范式包括:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF),第四范式(4NF),第五范式(5NF)和域键范式(DKNF)。这是一个相当长的列表。本书推出了规范化和范式的技术版本,以及规范化的一个外行版本。纯粹主义者可能觉得这种方法不太地道。规范化的问题几乎可以适用于每种可能的场合。结果就导致规范化常被误解,而且经常被忽略。因此往往设计出的关系数据库相当糟糕。简化版本用来构建一个沟通的桥梁,还能提供学习规范化的精确定义的方法,使学习变得更加容易。 传统上,关系数据库模型设计(尤其是规范化主题)对于商业环境来说过于精确。有一种解释规范化的容易方法,本书包含了这方面的最初思想。 本书值得一读。因为了解这些关于关系数据库模型设计和规范化技术的思想,将有助于探索数据库的工作原理。本书的目标是帮助您更好地使用您所拥有的精彩资源——您个人的或公司的数据库。 0.1 本书读者对象 本书适用于任何用到数据库技术的人员,从初学者到专家都适用。包括数据库管理员、开发人员、数据建模师、系统或网络管理员、技术经理、市场经理、广告商、预报员、城市规划者等任何人。本书的意图是向实际使用数据库(比如使用数据仓库)进行市场预测或其他用途的人进行解释。如果您想弄明白Microsoft Access数据库中的一些有趣的图(可能是程序员为您构建的),那么本书可以为您做到这一点。如果您想知道您的公司的SQL Server数据库或Oracle数据库中到底包含哪些内容,那么本书是极好的选择——您不用了解太多的技术语言就可以弄明白。 注意: 要查找更多的信息,最容易且最快的方法就是上网。到等搜索引擎上搜索术语“第一范式”、“1st normal form”或“1NF”。注意搜索到的有些信息可能目前不存在,或者无法链接。可以通过在多个参考上进行交叉检验来验证所查找的消息。如果使用Yahoo搜不到想要的结果,可以试试。或者,还可以到或上搜索其他关系数据库建模主题。 0.2 本书主要内容 本书的目标是为了提供设计与构建关系数据库模型的容易理解的、按步骤设计的简单解释。本书提供了大量示例,甚至包括跨多个章节的案例分析,深入探讨和分析了所有详细内容。所有高深技术也都包含在其内——因为本书从头至尾都有足够的示例和简单解释,足以使您着迷。 与本书作者以前所著的书一样,本书用简易的方式解释了非常复杂的内容。本书正文中使用了大量示例和按步骤的解释。 注意: 本书的内容可以直接使用。作者假定使用该信息不会在任何环境中以任何形式出现任何坏情况。 0.3 本书组织结构 本书分为4个部分。每部分中的几章包含相关内容。本书首先介绍了关系数据库背后的基础知识。然后介绍构建关系数据库模型的理论知识。第III部分贯穿4章来说明一个案例分析,随着案例分析的深入逐步引入了一些新概念。第IV部分,解释了前几章中与关系数据库建模理论没有直接关系的一些新概念。最后一部分描述了一些高级主题。 按部步就班地阅读本书非常关键。第I部分分析了历史方面,描述了为什么关系数据库是必需的。第II部分涉及了所有关系数据库建模的理论基础。您需要知道为什么设计关系数据库模型(从第I部分)之后,才可以完全理解第II部分中的理论。理解了所有历史和理论后,才可以开始学习第III部分中的案例分析。案例分析应用了第I部分和第II部分中介绍的所有内容,尤其是第III部分中的内容。第IV部分扩展到数据库结构与硬件资源,介绍了前几章所没有介绍的不常用的一些细节。 提示: 本书后面还附有一个术语表,这样就不需要为了查找定义而到书中翻上半天了。 第I部分:关系数据库建模初步——第I部分分析了关系数据库建模的历史,描述了使用关系数据库模型的实际需要。也包括如何处理人,从人、已有系统、有问题的情况与业务规则中提取信息的细节。 ● 第1章:数据库建模的过去与现在——本章介绍了数据库建模背后的基本概念,包括数据库建模的发展、各种数据库类型以及如何构建数据库的第一步。 ● 第2章:工作场所中的数据库建模——本章描述了如何开始设计和构建数据库模型。重点在于业务规则与目标、人以及如何从人们那里获取信息,以及对于笨拙艰难的现有数据库情况的处理。 ● 第3章:数据库建模构件块——本章通过讨论和解释组成关系数据库模型的所有不同的组成部分,介绍了关系数据库模型的构件块。这些组成部分包括表、表之间的关系、表中的字段等。 第II部分:设计关系数据库模型——第II部分正式讨论关系数据库模型的理论与细节。包括:规范化、范式及其应用、非规范化、数据仓库数据库建模以及数据库模型性能。 ● 第4章:规范化——本章分析了规范化过程的详细内容。规范化是创建与改进关系数据库的一些步骤序列(范式)。 ● 第5章:用SQL读写数据——本章介绍了如何从应用的角度使用关系数据库。关系数据库模型中含有表。表中的记录用结构化查询语言(Structured Query Language,SQL)访问。 ● 第6章:高级关系数据库建模——本章介绍了非规范化、对象数据库模型以及数据仓库。 ● 第7章:数据仓库数据库建模——本章讨论了数据仓库数据库建模。 ● 第8章:构建快速执行的数据库模型——本章讨论了当应用于各种不同的数据库模型类型时,影响数据库性能调整的各种因素。 第III部分:关系数据库模型中的案例分析——该案例分析应用了第I部分和第II部分介绍的各种正式理论——尤其是第II部分的理论。该案例分析跨越4章出现,随着案例分析的进展还介绍了一些新的概念。该案例分析是一个扎实的、循序渐进的学习过程,一致地使用了一个联机拍卖行的关系数据库模型,其中介绍了一些新概念,如数据库模型的分析与设计等。分析与设计是非正式的、定义宽松的过程,不是关系数据库建模理论中的一部分。 ● 第9章:通过分析进行规划与准备——本章从一个公司的运作能力(公司谋生所做的事)来分析了案例分析的关系数据库(联机拍卖行)。分析是描述关系数据库的需求的过程——发现数据库中所需的信息(所有基本表的内容)。 ● 第10章:在设计阶段创建与细化表——本章用案例分析描述了关系数据库的设计。其中分析描述了需要什么,设计描述了如何做。分析描述了就公司运作而言的基本表,设计通过向分析出的信息应用规范化与范式,从而定义表之间的关系。 ● 第11章:用细化设计填充细节——本章继续联机拍卖行案例分析的设计——细化表中的字段。字段设计细化包括:字段内容、字段格式以及字段上的索引。 ● 第12章:业务规则与字段设定——本章是联机拍卖行关系数据库模型设计的最后一章。业务规则应用于围绕存储过程的设计,以及特定的字段格式与非常详细的字段格式与限定。 第IV部分:高级主题——高级数据库结构(如物化视图),以及关于硬件资源使用的简要信息(如RAID阵列)。 附录——附录A包含每章末尾的练习题答案。附录B包含了本书中大部分关系数据库模型的实体关系图(Entity Relationship Diagram,ERD)。 0.4 使用本书所需条件 本书不要求在一些特定软件工具上使用——无论是数据库开发商特有的,还是前端应用程序工具。本书的主题是关系数据库建模,意味着本书的内容不是数据库开发商特有的。而本书的意图是提供非数据库开发商特有的内容。因此,无论您是使用Microsoft Access数据库、dBase数据库、Oracle数据库、MySQL数据库、Ingres数据库或任何关系数据库——都没有关系。本书中的所有代码都是有意用非数据库特有的、独立于开发商的伪代码编写的,最可能符合美国国家标准化组织(American National Standards Institute,ANSI)的标准。 您可以试着用您喜欢的数据库创建结构,但是脚本可能不适合于任何特定数据库。例如,如果使用Microsoft Access,就不必写脚本来创建表。Microsoft Access使用图形用户界面(Graphical User Interface,GUI)用户,可以在表和字段中进行单击、拖动、放下和输入操作。而其他数据库则必须编写脚本创建表。 本书的主要目的是用按步骤设计的过程来讲解关系数据库建模。而不是给出可用于任何数据库的示例脚本。没有任何通用的脚本——即使ANSI SQL标准也是如此,因为没有哪个关系数据库开发商完全符合ANSI。 本书详述了如何构建关系数据库模型——用ERD图。阅读和使用本书只需要用眼睛看、集中精力阅读以及用手指翻书页即可。 任何关系数据库都可以用来创建本书中的关系数据库模型。如果您选择的数据库引擎没有GUI表创建工具,则可能需要作些脚本改编。 0.5 勘误表 尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。请给fwkbook@tup.tsinghua.edu.cn发电子邮件,我们就会检查您的信息,如果是正确的,就把它发送到该书的勘误表页面上,或在本书的后续版本中采用。 要在网站上找到勘误表,可以登录,通过Advanced Search工具或书名列表查找本书,然后在本书的信息页面上,单击Book Errata链接。 0.6 E-Mail支持 如果您希望直接就本书的问题向对本书知之甚多的专家咨询,那么,就向support@wrox. Com发电子邮件,在电子邮件的“主题”(Subject)栏中,加上本书的名称和ISBN的最后4位号码。典型的电子邮件应该包括下列内容: ● 在“主题”栏加上书的名称、ISBN的最后4位数字和问题所在的页码。 ● 在邮件的正文中加上您的姓名、联系信息和问题。 我们不会发给您垃圾邮件。我们只需要详细的情况以节省您的宝贵时间和我们的时间。当您发送电子邮件时,它会直接链接到以下支持链: ● 客户支持—— 您的消息会传送到我们的客户支持人员,他们是阅读信息的第一人。他们有常见问题的文件,会迅速回答一般性的问题。他们回答关于本书和网站的一般性问题。 ● 编辑支持—— 更深的问题会转发到负责本书的技术编辑处。他(或)她具有编程或特殊产品的经验,能够回答某个主题的详细技术问题。 ● 作者支持—— 最后,在编辑都不能回答问题的情况下(这种情况很少出现),这些问题将转发到作者。我们试图保护作者不要从写作中分心,但是,我们也很愿意将特殊的问题转发给他们。所有的Wrox作者帮助支持他们的书籍。他们向客户和编辑回复电子邮件,所有的读者都会从中受益。 Wrox支持过程只能提供直接与已出版的图书相关的问题。对于超出此范围的问题可以通过/论坛的团体列表来提供支持。 0.7 P2P邮件列表是为作者和同行的讨论而设立的。我们在邮件列表、论坛和新闻组中提供“程序员到程序员的支持”(programmer to programmer support),还包括一对一的电子邮件支持系统。如果把问题发送给P2P,就可以相信,您的问题不仅仅是由支持专家解答,而且还要提供给我们邮件列表中的许多Wrox作者和其他业界专家。在上,可以从许多不同的列表中获得帮助,不仅在阅读本书时获得帮助,还可以在开发应用程序时获得帮助。在网站的.NET类别中,最适合本书的是beginning_vb和vb_dotnet列表。 要订阅一个邮件列表,可以遵循下面的步骤: (1) 进入。 (2) 从左侧的菜单栏中选择合适的列表。 (3) 单击想加入的邮件列表。 (4) 按照指示订阅和填写电子邮件地址和密码。 (5) 回复接收到的确认电子邮件。 (6) 使用订阅管理器加入更多的列表,设置自己的邮件设置。 0.8 为什么这个系统提供最好的支持 您可加入该邮件列表中,也可以每周分类接收它们。如果您没有时间或设备接收该邮件列表,可以搜索我们的在线文档。垃圾邮件和广告邮件会被删除,您自己的电子邮件地址会被独特的Lyris系统保护起来。任何加入或退出列表的查询,或者与列表相关的一般问题,都应发送到listsupport@。