现在,已经安装了SQL Server,并了解了作为SQL Server开发人员或管理人员要使用的主要工具,差不多可以开始建立ApressFinacial数据库解决方案了。然而,由于尚不清楚该数据库要包含些什么,因此还是不能着手进行创建。迄今为止,掌握的所有信息是:要建立一个数据库,用于为个人或公司的金融工具保存一些金融业务。由于SQL Server能够轻而易举地从一名用户扩展到数千名用户,故可以根据公司可能使用的金融工具对数据库进行调整。接下来需要收集更多与解决方案需求有关的信息以及什么信息需要存储到数据库中。一旦完成了信息收集,就可以在SQL Server 2005中创建数据库了。
设计数据库解决方案不是一个简单的任务,完成它需要进行大量的工作。本章将引领读者进入数据库设计的辽阔领域。了解了这些信息后,将进一步深入进行设计:调整数据,使检索尽可能地高效,这称为数据规范化(normalizing);并确保数据复制最少,或者更理想的是完全没有数据复制存在。此外,还必须知道日常工作中将怎样使用系统和系统中的数据。最后,需要明白将要建造什么类型的系统——例如,是要接收即时数据更新的系统,还是仅用于分析已定义数据的系统。一旦完成了这些设计,建立数据库解决方案的过程将更为顺利。良好的设计必须确保收集到了创建正确的表格所需要的所有的、没有冗余的信息。
尽管与设计有关的方法和过程可能无法满足所有公司及其方法的要求,本章还是给出相关过程的概述,同时也将显示如何创建信息并确保设计是经过周密思考的。本章包含如下主题:
q 数据库是什么?数据库由什么构成?它存储在何处?
q 如何定义系统的类型,是关系的还是分析的?
q 如何收集当前系统的数据并找出新系统的信息。
q 如何通过SSMS、向导或查询编辑器窗口创建数据库,如何在查询编辑器窗口设置数据库选项。
q 如何查看数据库的细节。
q 如何用SSMS和查询编辑器窗口移除数据库。
注解 在本章的练习中,将不会使用任何明确的、正式的设计技术,毕竟本书并非是专门讲述数据库设计的图书。然而,到达数据库最终设计的过程(物理的和逻辑的)将是相同的。
3.1 数据库的定义
数据库(database)是对象的容器,它不仅可以存储数据,而且能够使数据存储和检索以安全而可靠的方式进行。SQL Server 2005数据库能够包含如下对象(尽管当数据库刚创建时,这些信息中的一部分尚未创建):
q 表定义。
q 表中的列,组成数据行。
q 程序(存储过程或程序集),用于访问或操作数据。
q 索引,用于加速数据检索。
q 视图,查看真实数据的一种特殊的方式。
q 函数,可以应用到数据行的重复性任务。
上述列表中包含了不少专门术语,因此,下面将花些时间来讲述它们的定义:
q 表:表用于存储数据库中的数据。尽管可以使数据库只包含系统表而没有用户表,但数据库至少应该有一个有用的表。系统表是一种特殊的表,SQL Server用系统表来帮助其进行与数据库有关的工作。表包含位于行和列之中的信息,这很像在Excel中那样,但其能力远比Excel中的单元格强大。临时表是另一种类型的数据库表,可以有几种不同的形式。
q 列:列提供每一个单独的信息项的定义,由列定义构成表定义。列很像Excel中的列,由存放数据的单元格组成。与Excel中的列不同的是,在Excel中,列的每个单元格可以存放不同类型的数据,而对于SQL Server表中的列,可以存放的数据取决于准备让它存放的数据类型以及数量。每个表至少要有一个列,虽然该列不必包含任何信息。
q 行:行由单元格组成,每个单元格来自为表定义的每一个列。表可以有任意数目的行,行的数目只受限于磁盘空间,或者说受限于在数据库创建定义中指定的最大磁盘空间,或服务器上的磁盘空间。每一行描述了一条单独的信息,如用户的银行账户详情或电子商务站点的产品信息。行也称为记录。
q 存储过程:当需要一个程序来操作数据或进行与数据有关的工作,或者需要重复地执行相同的数据密集型任务时,把代码存储到存储过程中常常是较理想的选择。存储过程包含一条或多条T-SQL语句,这些语句已经编译并随时可以在需要时执行。存储过程永久存储在数据库中,随时可供使用。
q T-SQL语句:SQL Server在进行数据方面的工作时,可以使用的程序语句。
q 程序集:程序集是SQL Server 2005中新增内容。它与存储过程类似,可用于操作数据或进行与数据有关的工作,不同的是,使用程序集,更多地是为了程序逻辑(正如在.NET程序中见到的那样)。程序集不仅可以是存储过程的替代物,还能有许多不同的外观,例如,能够使用程序集创建数据类型。
q 索引:索引可以看成是预定义的信息列,它告知数据库数据是如何被物理排序和存储的,SQL Server使用索引(通过把T-SQL查询所提供的信息与列中的数据相匹配)来快速查找数据行。索引由一个或多个(在其上定义该索引的表的)列组成,但索引不能跨多个表来定义。SQL Server中的索引非常类似于书的索引,使用索引,能够比一页页地翻阅更快地找到资料。
q 视图:可以把视图看作是虚拟表。视图能够包含组合自数个表的信息,它能给数据提供更为用户友好的界面。视图还能极大提高应用的安全性,当然,它也确实削减了使用存储过程和直接访问表的功能。也可以为视图创建索引,从而加快视图中数据处理的速度。
q 函数:函数与存储过程相似,只是在处理多行数据时,函数一次只取一行数据或者一次只生成一行数据。例如,若要创建账目,就使用存储过程产生输出;若要一次一个地细查每一笔交易,以计算出每天的利润,则使用函数。
在所有数据库中都有一组系统表,SQL Server使用这些系统表来维护数据库。系统表中存储了所有列的信息、所有用户的信息以及许多其他信息(即元数据)。不同于以往版本的SQL Server,在SQL Server 2005中,系统表的安全性有了改进和增强,系统表不再能直接访问,而只能通过视图访问。由于系统表中的数据不能修改,并且系统表提供的信息只在使用高级功能时才有用,因此,没有必要在这里研究系统表。





