数据库设计概述

构建一个数据库应用是一个复杂的任务,包括设计数据库模式,设计访问和更新数据的程序,以及设计控制数据访问的安全模式。这里的数据库设计是指数据库模式的设计。
设计一个完整的数据库应用环境,并满足被建模企业的需求,需要关注广泛的问题。

设计阶段

设计数据库前,数据库设计者必须与应用的用户进行交互以理解应用的需求,把它们以用户能理解的高级别形式表示出来,然后再将需求转换为较低级别的设计。

    1. 刻画数据库用户的数据需求。数据库设计的最初阶段需要完整地刻画未来数据库用户的数据需求。为完成这个任务,数据库设计者需要同应用领域的专家和用户进行深入的沟通。这一阶段的产品是用户需求规格说明书
    1. 将需求转化为数据库的概念模式。接下来,数据库设计者选择数据模型,并采用所选数据模型的概念将这些需求转化为数据库的概念模式。在此概念设计阶段(Conceptual-Design Phase)所产生的模式提供一个对企业的详细综述。通常使用实体-联系模型进行概念设计,它提供了对模式的图形化描述
      设计者检查此模式以确保所有数据需求都满足,并且互相不冲突。该阶段还可以检查设计以去除冗余的特征。概念设计阶段关注的是描述数据及其联系,而不是定义物理存储细节。
    1. 指明企业的功能需求,以完善概念模式。在**功能需求规格说明(常用用例图描述)**中,用户描述将在数据上进行的各类操作(或事务)。操作的例子包括修改或更新数据,搜索并取回特定数据,以及删除数据。在概念设计的这一阶段,设计者可以检查所设计的模式,以确保其满足功能需求。
    1. 将抽象数据模型转换为数据库实现。抽象数据模型转换为数据库由两个阶段组成:逻辑设计阶段(Conceptual-Design Phase)物理设计阶段(Conceptual-Design Phase)
      (1) 在逻辑设计阶段中,设计者将高层概念模式映射到将使用的数据库系统的实现数据模型上。实现数据模型通常是关系数据模型,该阶段通常将以实体-联系模型定义的概念模式映射到关系模式。(将实体-联系模型转换为关系模型)
      (2) 在物理设计阶段,设计者将指明数据库的物理特征,这些特征包括数据库表的定义、完整性约束、文件组织形式和索引结构的选择等。
      注意,在应用建立后,物理模式的更改相对比较简单。但是,由于可能影响到应用程序代码中散步的大量的查询和更新操作,因此改变逻辑模式的任务执行起来相对更加困难。因此,在建立后续的数据库应用之前,慎重实施数据库设计阶段是非常重要的。(设计的重要性,避免少走弯路。感触颇深!)

设计选择

数据库设计过程的一个主要部分是决定如何在设计中表示各种类型的事物,比如人、地方、产品等。在设计一个数据库模式时,必须确保避免两个主要的缺陷。

    1. 冗余。一个不好的设计可能会重复信息。冗余的最大问题是当对一条信息进行更新但没有将这条信息的所有拷贝都更新时,这条信息的拷贝会变得不一致。理想情况下,信息应该只出现在一个地方。注意,实际开发中维持信息只出现在一个地方很难(既有设计原因,也有成本原因)
    1. 不完整。一个不好的设计可能会使得需求的某些方面难于甚至无法建模。由于设计缺陷,可能会导致需求的某些方面难以实现或无法实现。虽然可以尝试绕开问题,但是这只会使功能更加难以维护。
      仅仅避免不好的设计是不够的。有时,可能存在大量好的设计,我们必须从中选择一个。所以,数据库设计是一个很有挑战性的问题。事实上,数据库设计需要科学和“好的味道”的结合。

设计思想

在进行数据库设计时,常需具备打通上下流的方法论意识。具体步骤如下:

  1. 自上而下理解需求并设计
  2. 自下而上理解设计并编码

参考

数据库系统概念(第六版) A. Silberschatz H. F. Korth S. Sudarshan著 杨冬青 等译
https://www.db-book.com/

你可能感兴趣的:(数据库系统概念)