数据库设计 Step by Step (2)——数据库生命周期

📅 2026/7/5 3:41:58
数据库设计 Step by Step (2)——数据库生命周期
系列的第二讲我们将站在高处俯瞰一下数据库的生命周期了解数据库设计的整体流程数据库生命周期大家对软件生命周期较为熟悉数据库也有其生命周期如下图所示。图1数据库生命周期数据库的生命周期主要分为四个阶段需求分析、逻辑设计、物理设计、实现维护。这个系列的博文将主要关注数据库生命周期中的前两个阶段需求分析、逻辑设计。如图中红色框出的部分。数据库的物理设计包括索引的选择与优化、数据分区等内容。这些内容也非常丰富而且可以自成体系园子里也有很多好文章故在本系列中不作主要关注。本文最后将给出一些链接供大家参考。数据库生命周期的四个阶段又能细分为多个小步骤我们配合图1来看看每一小步包含的内容。阶段1 需求分析数据库设计与软件设计一样首先需要进行需求分析。我们需要与数据的创造者和使用者进行访谈。对访谈获得的信息进行整理、分析并撰写正式的需求文档。需求文档中需包含需要处理的数据数据的自然关系数据库实现的硬件环境、软件平台等图2阶段1 需求分析阶段2 逻辑设计使用ER或UML建模技术创建概念数据模型图展示所有数据以及数据间关系。最终概念数据模型必须被转化为范式化的表。数据库逻辑设计主要步骤包括a) 概念数据建模在需求分析完成后使用ER图或UML图对数据进行建模。使用ER图或UML图描述需求中的语义即得到了数据概念模型Conceptual Data Model例如三元关系ternary relationships、超类supertypes、子类subtypes等。eg: 零售商视角产品/客户数据库的ER模型简图注ER图的含义以及详细标记方法将在该系列的下一篇博文中进行讨论图3阶段2(a) 概念数据建模b) 多视图集成当在大型项目设计或多人参与设计的情况下会产生数据和关系的多个视图。这些视图必须进行化简与集成消除模型中的冗余与不一致最终形成一个全局的模型。多视图集成可以使用ER建模语义中的同义词(synonyms)、聚合(aggregation)、泛化(generalization)等方法。多视图集成在整合多个应用的场景中也非常重要。eg: 集成零售商ER图与客户ER图零售商ER图如图3所示。客户视角产品/客户数据库的ER模型简图如下图4以客户为关注点绘制的ER图注现在市面上有许多辅助建模工具可以绘制ER图。使用Sybase的PowerDesigner绘制与图4相同语义的ER图如下其标记法与图4中略有不同这将在今后的博文中加以说明。这里需要指出的是辅助软件的使用不是设计的核心大家不要被这些工具迷惑。所以后文中我们将主要使用手绘。只要掌握了ER图的语义使用这些软件都不会是件难事。集成零售商ER图与客户ER图图5阶段2(b) 多视图集成c) 转化概念数据模型为SQL表根据映射规则把ER图中的实体与关系转化为SQL表结构。在这一过程中我们将识别冗余的表并去除这些表。eg: 把图5中的customer, product, salesperson实体转化为SQL表图6阶段2(c)转化概念数据模型为SQL表d) 范式化范式化是数据库逻辑设计中的重要一步。范式化的目标是尽可能去除模型中的冗余信息从而消除关系模型更新、插入、删除异常anomalies。讲到范式化就会引出函数依赖Functional Dependency这一概念。函数依赖(FDs)源自于概念数据模型图反映了需求分析中的数据关系语义。不同实体之间的函数依赖表示各个实体唯一键之间的依赖。实体内部也有函数依赖反映了实体中键属性与非键属性之间的依赖。在保证数据完整性约束的前提下基于函数依赖对候选表进行范式化分解、降低数据冗余。eg: 对图6中的Salesperson表进行范式化消除更新异常update anomalies图7阶段2(d)范式化阶段3 物理设计数据库物理设计包括选择索引数据分区与分组等。逻辑设计方法学通过减少需要分析的数据依赖简化了大型关系数据库的设计这也减轻了数据库物理设计阶段的压力。1. 概念数据建模和多视图集成准确地反映了现实需求场景2. 范式化在模型转化为SQL表的过程中保留了数据完整性数据库物理设计的目标是尽可能优化性能。物理设计阶段全局表结构可能需要进行重构来满足性能上的需求这被称为反范式化。反范式化的步骤包括1. 辨别关键性流程如频繁运行、大容量、高优先级的处理操作2. 通过增加冗余来提高关键性流程的性能3. 评估所造成的代价对查询、修改、存储的影响和可能损失的数据一致性阶段4 数据库的实现维护当设计完成之后使用数据库管理系统DBMS中的数据定义语言DDL来创建数据结构。数据库创建完成后应用程序或用户可以使用数据操作语言DML来使用查询、修改等该数据库。一旦数据库开始运行就需要对其性能进行监视。当数据库性能无法满足要求或用户提出新的功能需求时就需要对该数据库进行再设计与修改。这形成了一个循环监视 – 再设计 – 修改 – 监视…。在进行数据库设计之前我们先回顾一下关系数据库的相关基本概念。这里只做一个提纲挈领的简介大家可以根据相应的线索进行扩展。表、行、列关系数据库可以想象成表的集合每个表包含行与列。可以想象成一个Excel workbook包含多个worksheet。