思维导图:
第7章 - 数据库设计


7.1 数据库设计概述
核心概念:
- 数据库应用系统:涵盖基于数据库的多种系统,如管理信息系统、办公自动化系统、地理信息系统、电子政务和电子商务系统等。
- 数据库设计的两个层面:
- 广义:设计整个数据库应用系统。
- 狭义:设计数据库本身,包括各级模式和建立数据库,重点在于狭义层面。
数据库设计的定义:
- 涉及为特定应用环境构造优化的数据库逻辑模式和物理结构。
- 目的是建立能够有效管理数据的数据库及其应用系统,满足不同用户的需求。
需求分类:
- 信息管理要求:确定应存储和管理哪些数据对象。
- 数据操作要求:涉及对数据对象的查询、添加、删除、修改、统计等操作。
设计目标:
- 为用户和应用系统提供信息基础设施和高效运行环境。
- 高效环境涉及数据存取效率、存储空间利用率、系统运行管理效率。
关键点强调:
- 狭义的数据库设计是本书的重点。
- 实际系统开发中,数据库设计与应用系统设计密切相关、并行进行。
- 设计优秀的数据库结构对于应用系统来说至关重要。
7.1.1 数据库设计的特点



1. 数据库建设的基本规律
- “三分技术,七分管理,十二分基础数据”:强调技术、管理、基础数据的重要性。
- 技术与管理:技术重要,但管理更为关键。包括项目管理和业务管理。
- 业务管理对数据库结构影响:数据库结构是企业业务数据和部门间数据联系的描述和抽象。
- 管理模式改革的重要性:企业数据库建设是管理模式改革和提升的过程。
2. 基础数据的重要性
- 数据收集和整理:初期工作繁琐但至关重要。
- 数据的不断更新:将新数据加入数据库,历史数据加入数据仓库以提高分析和业务管理能力。
3. 结构(数据)设计与行为(处理)设计的结合
- 设计过程中的结合:在整个设计过程中紧密结合数据库结构设计和数据处理设计。
- 与应用系统设计的结合:数据库设计应与应用系统设计紧密结合。
- 传统软件工程的局限:传统方法如结构化设计通常忽略数据语义的分析和抽象,对数据库应用系统设计不适用。
- 数据模型研究:早期重点在数据模型和数据库建模方法的研究,但忽视了行为设计对结构设计的影响。
我的理解:
-
三分技术,七分管理,十二分基础数据:这是一种强调比例和重要性的说法。技术在数据库设计中占有一席之地,但管理的作用更为重要,它包括项目管理和业务管理。基础数据的收集、整理和更新则是整个数据库建设过程中最为关键的部分。这种说法强调,虽然技术是基础,但没有良好的管理和高质量的数据,技术也无法发挥其应有的作用。
-
技术与管理的关系:技术是实现数据库应用系统的基础,但更重要的是如何管理这个技术过程,包括管理数据库项目的开发和企业的业务管理。良好的管理能够确保数据库结构的合理性和有效性。
-
业务管理对数据库结构的影响:数据库的结构设计应该是对企业业务数据和部门间数据联系的准确反映。这意味着,业务管理的复杂性和深度直接影响了数据库设计的质量。
-
基础数据的重要性:在数据库建设中,基础数据的收集、整理和更新是一个持续且繁琐的过程。这些数据是数据库运行和发展的基石,对于后续的数据分析、业务改进和提升企业竞争力至关重要。
-
结构和行为设计的结合:数据库设计不仅仅是关于数据如何存储(结构设计),也包括数据如何被处理和使用(行为设计)。这种设计的结合能确保数据库不只是数据的存储库,而是一个能有效支持应用系统的动态环境。
-
与应用系统设计的整合:数据库设计不应该孤立进行,而应该与应用系统设计密切结合。这样可以确保数据库能够有效地支持应用系统的需求和业务流程。
这些概念强调了数据库设计不仅仅是一个技术活动,还是一个涉及深层次管理和数据处理的复杂过程,需要综合考虑技术、管理和数据的多个方面。
7.1.2 数据库设计方法
数据库设计的复杂性
- 跨学科技术:大型数据库设计涉及计算机基础、软件工程、程序设计、数据库基础知识、数据库设计技术及应用领域知识。
- 专业人员要求:设计人员需要具备上述多方面的知识和技术。
早期数据库设计的挑战
- 手工与经验结合:初期设计主要依赖个人经验和手工方法,质量与设计者的经验水平紧密相关。
- 设计质量问题:缺乏科学理论和工程方法支持,设计质量难以保证,常需后期修改或重设计。
现代数据库设计方法
- 发展多种设计方法:包括新奥尔良方法、基于E-R模型的方法、3NF设计方法、面向对象的数据库设计方法、统一建模语言(UML)方法等。
- 数据库设计工具:为了提高设计效率和质量,开发了各种数据库设计工具,现已广泛用于大型数据库设计。
设计工具的重要性
- 实用化和产品化:数据库设计工具已经变得实用化和产品化,辅助设计人员完成多项任务。
- 普遍应用:这些工具软件已经成为大型数据库设计的常用工具。
我的理解:
-
多学科的综合性技术:大型数据库设计不仅仅是计算机科学的一部分,它融合了多个学科的知识和技术。这包括计算机基础知识、软件工程原理、程序设计方法、数据库基础和设计技术,以及特定应用领域的知识。这种跨学科特性意味着数据库设计师需要具备广泛的知识和技能。
-
设计人员的专业要求:数据库设计师不仅需要掌握技术知识,还需要理解应用领域的特定需求。这样才能设计出既符合技术标准又能满足特定领域需求的数据库和应用系统。
-
早期设计方法的局限性:最初的数据库设计依赖于设计者的个人经验和手工方法,这导致设计质量不稳定,且难以保证。由于缺乏科学的理论和工程方法,设计的数据库系统往往需要后期的修改甚至重设计。
-
现代数据库设计方法的发展:为了克服早期方法的局限,开发了多种新的数据库设计方法。这些方法基于更严谨的理论,如E-R模型、第三范式(3NF)、面向对象设计方法和统一建模语言(UML)。这些方法提供了更科学、更系统的设计流程。
-
数据库设计工具的应用:随着技术的进步,开发了各种数据库设计工具来辅助设计过程。这些工具可以帮助设计师完成许多复杂的任务,提高设计效率和质量,现在已经成为大型数据库设计的标准工具。
总结来说,这一节的概念强调了数据库设计是一项复杂的、需要跨学科知识的工作,并且随着时间的推移,设计方法和工具已经从依赖个人经验和手工方法转变为依赖科学理论和工程方法。这些变化旨在提高设计的质量和效率,减少后期维护的需求。
7.1.3 数据库设计的基本步骤
概述
- 六个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护。
- 设计与应用系统开发全过程:数据库设计应考虑整个应用系统的开发过程。
详细步骤
-
需求分析:
- 目的:理解和分析用户需求(数据和处理)。
- 重要性:需求分析的质量决定整个数据库系统的质量。
-
概念结构设计:
- 过程:综合、归纳和抽象用户需求,形成与具体数据库管理系统无关的概念模型。
-
逻辑结构设计:
- 功能:将概念结构转换为特定数据库管理系统支持的数据模型,并进行优化。
-
物理结构设计:
- 目标:为逻辑数据模型选择最合适的物理结构(存储结构和存取方法)。
-
数据库实施:
- 活动:使用数据库管理系统的语言和宿主语言建立数据库,编写和调试应用程序,组织数据入库,进行试运行。
-
数据库运行和维护:
- 过程:数据库系统投入运行后,进行持续的评估、调整和修改。
重要参与者
- 涉及人员:系统分析员、数据库设计师、应用开发人员、数据库管理员和用户代表。
- 角色重要性:这些人员的参与和贡献对数据库设计的质量至关重要。
设计工具的选择
- 对于复杂的数据库应用系统,应考虑使用数据库设计工具来提高设计质量并减少工作量。
设计阶段的互动
- 结合数据库和数据处理设计:在整个设计过程中,数据结构的设计和数据处理的设计应紧密结合,确保两方面的需求和实现互相补充。
7.1.4 数据库设计过程中的各级模式
概述
- 关系数据库设计:涉及不同阶段,每个阶段形成数据库的特定模式。
- 各级模式:需求分析、概念结构设计、逻辑结构设计、物理结构设计。
各阶段和对应模式
-
需求分析阶段:
- 目的:综合用户的应用需求。
- 结果:形成需求分析结果,直接影响后续设计阶段和结果。
-
概念结构设计阶段:
- 产出:机器和数据库管理系统无关的概念模式(如E-R图)。
- 重要性:为逻辑结构提供基础。
-
逻辑结构设计阶段:
- 过程:将E-R图转换为具体数据库产品支持的数据模型(如关系模型)。
- 结果:形成数据库的逻辑模式,并建立视图形成数据的外模式。
-
物理结构设计阶段:
- 功能:根据数据库管理系统特点和处理需求进行物理存储安排,建立索引。
- 产出:形成数据库的内模式。
设计内容、方法和工具
- 以图7.2的设计过程为主线,讨论每个阶段的设计内容、方法和工具。
- 需求分析是整个设计过程的基础,其准确性至关重要。
图7.4数据库各级模式示意
- 描述了从需求分析到物理结构设计的各个阶段和相应产出的模式。
总结:
重点
-
各级模式的理解与区分:
- 需求分析阶段:关注用户的应用需求,形成需求分析结果。
- 概念结构设计阶段:创建与机器和数据库管理系统无关的概念模式,如E-R图。
- 逻辑结构设计阶段:将概念模式转换为具体数据库产品支持的数据模型(如关系模型),并形成逻辑模式和数据外模式。
- 物理结构设计阶段:侧重于物理存储安排和索引建立,形成内模式。
-
模式转换的过程:
- 从概念模式到逻辑模式,再到内模式的转换过程。
难点
-
概念模式的抽象和设计:
- 概念模式设计需要抽象思维,将用户需求转化为独立于具体技术的模型(E-R图),这需要深入理解用户需求和数据关系。
-
逻辑模式与物理模式的区别与联系:
- 理解逻辑模式(数据结构设计)和物理模式(数据存储和索引策略)的不同目的和设计方法。
易错点
-
混淆概念模式和逻辑模式:
- 概念模式关注于数据的概念结构,而逻辑模式关注于数据模型的具体实现,这两者经常被误解或混淆。
-
忽视需求分析的重要性:
- 有时设计者可能过于专注于技术细节而忽视了对用户需求的深入理解,导致设计不满足实际需求。
-
物理模式设计的误解:
- 物理模式设计不仅仅是数据的存储问题,还包括数据的存取效率和优化,这一点常被忽视。