创建数据库的第一步是制订计划,该计划可在实现数据库时用作指南;也可以在数据库实现完成后,用作数据库的功能说明。数据库设计的复杂性和细节由数据库应用程序的复杂性和大小及用户数确定。
数据库应用程序的性质和复杂性以及对其进行计划的过程可以变化很大。数据库可以相对简单,如为单人使用设计的数据库;它也可以很大、很复杂,如为处理数百万顾客的所有银行事务而设计的数据库。对于前一种情况,数据库设计可能只需要在一些草稿纸上写几个备注即可。对于后一种情况,设计可能是数百页的正式文档,其中包含有关数据库的各种可能细节。
在计划数据库时,不管其大小和复杂性如何,都要经过下列基本步骤:
收集信息。
标识对象。
建立对象模型。
标识每个对象的信息类型。
标识对象之间的关系。
收集信息
在创建数据库之前,必须对期望数据库执行的工作有一个透彻的理解。如果数据库用于替换基于纸张或手工执行的信息系统,则现有的系统能为您提供所需的大多数信息。与系统中所涉及的每个人进行交流,以找出他们所做的工作以及他们需要从数据库中获得的内容是很重要的。了解他们希望新系统完成的工作,以及找出现有系统的问题、限制和瓶颈也很重要。收集客户结算、库存列表、管理报表以及属于现有系统的任何其它文档的复本,因为这些对于设计数据库和界面非常有用。
标识对象
在收集信息的过程中,必须标识将由数据库管理的主要对象或实体。对象可以是一个有形的实体(如一个人或一个产品),也可以是一个无形的项目(如某项业务事务、公司中的某个部门或某个付薪周期)。通常会有几个主要对象,标识了这些对象之后,相关的项目就会变得清晰。数据库中每个不同的项目都应有一个对应的表。
Microsoft® SQL Server™ 2000 附带的 pubs 示例数据库中的主要对象是书籍。在该公司的业务内,与书籍相关的对象有:撰写该书的作者、生产该书的出版商、销售该书的书店和书店所执行的销售事务。这些对象中每一个都是数据库中的一个表。
建立对象模型
标识了系统中的对象后,使用该系统的一种直观表示方式对这些对象进行记录是很重要的。在数据库实现期间,可以使用数据库模型作为参考。
鉴于此目的,数据库开发人员使用各种工具进行数据库设计,在技术复杂性方面,这些工具可以是简单的铅笔和草稿纸,也可以是字处理或电子表格程序,甚至可以是专门为数据库建模工作设计的软件程序。不管决定要使用哪一种工具,总保持使用最新的工具是很重要的。
SQL Server 企业管理器包括可视化设计工具(如数据库设计器),可用于设计和创建数据库中的对象。
标识每个对象的信息类型
将数据库中的主要对象标识为候选表后,下一步是标识必须为各对象存储的信息类型。这些信息是对象的表中的列。数据库表中的列包含几个常见的信息类型:
原始数据列
这些列存储有形信息(如名称),由数据库外部的源确定。
分类列
这些列对数据进行分类或分组,并存储有限选择范围的数据(如真/假、已婚/单身、副总裁/主管/组长等等)。
标识符列
这些列提供对存储在表中的每个项目进行标识的机制。这些列的名称中有一个 id 或 number(例如,employee_id、invoice_number 和 publisher_id)。标识符列是用户和内部数据库处理访问表中的一行数据时所用的主要组件。有时,可以在表中使用对象的有形 ID(如社会保险号),但在大多数情况下,定义表时可以为行创建可靠的人工 ID。
关系或引用列
这些列建立一个表中的信息和另一个表中相关信息的链接。例如,跟踪销售事务的表通常与 customers 表有链接,以便可以将完整的客户信息与销售事务关联。
标识对象间的关系
关系数据库的一种优势是联系或关联数据库中各种项目的有关信息的能力。可以单独地存储独立的信息类型,但数据库引擎可以在必要时组合数据。在设计过程中,标识对象间的关系需要查看各种表,确定它们逻辑相关的方式,以及添加关系列以建立一个表与另一个表间的链接。
例如,pubs 数据库的设计者已经在数据库中为书名和出版商创建了表。Titles 表包含每种书的信息:一个名为 title_id 的标识符列;书名的原始数据列、书价、出版日期和一些有关书的销售信息列。该表包含名为 type 的分类列,利用该列可按照书中的内容类型对书进行分组。另外,每本书都有一个出版商,但出版商信息是在另一个表中,因此,titles 表有一个 pub_id 列以存储出版商的 ID。当为某一种书添加一行数据时,出版商 ID 与书的其它信息一起存储。