带你读《数据库与数据处理:Access 2010 实现 第2版》之三:关系数据库设计

简介: 本书共分为14章,包括数据库理论和数据库应用两大部分。其中,第1~6章为理论部分,主要介绍与数据处理和数据库应用密切相关的核心概念、基本原理和方法,内容包括:数据处理与数据库概述、实体-联系数据模型、关系数据库基础、SQL、关系数据库设计、数据库保护;第7~14章为应用部分,以Access 2010为具体的DBMS,详细介绍其主要功能和使用方法,内容包括:认识Access 2010、数据库的创建与管理、表与表操作、查询、窗体、报表、宏、模块与VBA编程。各章安排有例题讲解、重要提示和本章内容小结以及适量的习题。

点击查看第一章
点击查看第二章

第3章

关系数据库设计

3.1 关系数据库设计过程

数据库设计是开发一个好的数据库应用系统的基础,它的基本任务是根据用户的需求,以及数据库的支撑环境(包括DBMS、操作系统和硬件),设计出数据模式(包括外模式、模式和内模式)以及典型的应用程序。
在数据库的设计过程中,不同的人员会参与到数据库设计的不同阶段。比如,用户和数据库管理员主要参与需求分析和数据库的运行维护;应用开发人员在系统实施阶段参与进来,负责编制程序和准备软硬件环境;而系统分析人员、数据库设计人员可能需要自始至终地参与数据库设计。需要注意的是,在数据库设计过程中必须充分调动用户的积极性。另外,应用环境的改变、新技术的出现等都会导致应用需求的变化,因此设计人员在设计数据库时必须充分考虑系统的可扩充性,使设计灵活、易于修改。
数据库设计是软件工程的一部分,主要包括6个阶段:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、数据库物理设计阶段、数据库实施阶段、数据库运行和维护阶段
作为一种主流的数据库,关系数据库设计的目标是生成一组关系模式,使得既可以方便地获取信息,又不必存储不必要的冗余信息。关系数据库的设计过程同样也包括上述6个阶段,如图3-1所示,其核心是概念数据建模,将概念模型转为关系模型并进行规范化处理。具体来说就是将E-R图转换为关系模式,以及对关系模式进行规范化。比如,构造出来的关系模式是否适合所针对的具体问题,应该构造几个关系模式,每个关系模式由哪些属性构成等,这些都是关系数据库设计过程中要解决的核心问题。

3.2 需求分析

需求分析是整个设计阶段最困难、最耗时的阶段,它是在数据库建立的必要性和可行性分析研究的基础上进行的。通常的工作包括详细调查现实世界要处理的对象,如组织、部门、企业等,调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等。在该阶段需要准确了解、分析用户的需求,形成需求分析说明书。用户需求主要包括以下三方面:

image.png

1)信息需求,用户要从数据库获得的信息内容。
2)处理需求,即完成什么处理功能及处理方式。
3)安全性和完整性要求,在定义信息需求和处理需求的同时,必须要确定安全性要求、完整性约束条件等。
需求分析的3个主要步骤是:需求信息的收集、分析整理和评审。评审是将需求分析结果再次提交给用户,获得用户的认可,以避免重大疏漏和错误。
在了解用户需求后,要进一步描述和分析用户的需求,通常采用结构化分析(Structured Analysis,SA)方法自顶向下、逐层分解。SA方法的基本思想是“分解”和“抽象”。分解是指将大问题分解为若干个小问题,将系统的复杂性降低到可以掌握的程度,然后再逐一解决这些小问题。抽象是指分解可以分层进行,即先考虑问题最本质的属性,暂时略去细节,以后再逐层添加细节,直至涉及最具体的内容。
SA的描述方法有分层的数据流图、数据字典、描述加工逻辑的结构化语言、判定表及判定树等。一般使用判定表或判定树来描述处理逻辑,使用数据字典来描述数据。
数据流图(Data Flow Diagram,DFD)是常用的结构化分析工具之一,也是描述系统工作流程的一种图形表示法,主要用来描述系统的数据流向和对数据的处理功能。数据流图包括以下几个主要元素:
1)带箭头的直线,表示数据流,是数据在系统内传播的路径。
2)矩形框,表示数据来源或输出。
3)圆形或椭圆,表示对数据的加工处理。
4)非闭合矩形、单线或双线,表示需要存储的数据。
画分层数据流图的方法是“先全局后局部,先整体后细节,先抽象后具体”。通常将这种分层的DFD分为顶层、中间层、底层。具体步骤如下:
1)先确定系统范围,画出顶层的DFD。
2)逐层分解顶层DFD,获得若干中间层DFD。
3)画出底层的DFD。
图3-2给出了一个教务管理系统中排课子系统的顶层数据流图的例子。

image.png

数据字典是对系统中数据的详细描述,是对数据流图的进一步补充,是下一步概要设计的必要输入。它用于对数据库数据描述的集中管理,并为DBA提供有关的报告。数据字典的内容主要有:数据项、数据结构、数据流、数据存储、加工处理过程。其中,数据项是最基本也是最重要的内容,所谓数据项就是不可再分的数据单位,如学号、课程号、成绩等。对数据项的描述主要包括:数据项名、含义说明、别名、类型、长度、取值范围、取值含义等。

3.3 概念结构设计

概念结构设计是整个数据库设计的关键阶段。通过对用户需求的综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。常用E-R模型来描述概念模型。
在概念结构设计阶段,设计人员仅从用户角度看待数据及其处理要求和约束,并产生一个反映用户观点的概念模式。概念结构设计主要分为3个步骤:数据抽象,设计出局部概念模式;将局部概念模式合并成全局概念模式;最后进行评审,以确认该阶段的任务是否完成,有无疏漏和错误。
设计概念结构通常有以下4类方法:
1)自顶向下:首先定义全局概念结构的框架,然后逐步细化。
2)自底向上:首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。
3)逐步扩张:首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至形成总体概念结构。
4)混合策略:将自顶向下和自底向上相结合,使用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略设计的各局部概念结构。
通常采用自顶向下需求分析、自底向上设计概念结构。概念结构设计的特点如下:
1)能真实、充分地反映现实世界中实体间的联系。
2)概念模式是各种基本数据模型的共同基础,易于向关系、网状、层次等各种数据模型转换。
3)设计复杂程度得到降低,便于数据的组织管理,也易于修改。
4)概念模式不受特定DBMS的限制,也独立于存储安排,因而比逻辑设计得到的模式更为稳定。
5)概念模式不含具体的DBMS所附加的技术细节,更容易为用户所理解,因而能准确地反映用户的信息需求。

3.4 逻辑结构设计

逻辑结构设计阶段的主要工作是将概念模型转换为数据库的一种逻辑模式,即某种特定DBMS所支持的逻辑数据模式。如果采用基于E-R模型的数据库设计方法,该阶段的任务就是将概念结构设计阶段得到的E-R图,转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。
通常,E-R模型向关系模型转换是数据库逻辑结构设计的主要步骤。数据库逻辑结构设计的关键是如何构造合适的数据模式。因此,关系数据库逻辑设计的主要任务就是按照规则,将概念设计阶段设计好的独立于具体的DBMS的概念模型,转换为RDBMS产品所支持的一组关系模式,并利用关系数据库理论对这组关系模式进行规范化设计和优化处理,从而得到满足所有数据要求的关系模型。
图3-3给出了逻辑结构设计的主要步骤:首先将概念结构转换为一般数据模型;然后将一般数据模型转换为特定DBMS支持下的数据模型;最后对数据模型进行优化。所谓数据模型的优化,就是对得到的初步数据模型进行适当的修改,调整数据模型的结构,以进一步提高数据库应用系统的性能。目前的DBMS产品多是关系型的,对于关系数据库逻辑结构设计的主要步骤就是将E-R图转换为关系模式,然后利用规范化理论对这组关系模式进行修正和优化,相关内容将在第4章和第5章中介绍。

image.png

优化数据模型的方法是,首先确定数据依赖,按照需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的数据依赖,以及不同关系模式属性之间的数据依赖;接着消除冗余的联系;之后确定每个关系模式所属的范式;最后按照需求分析阶段得到的数据处理要求,分析关系模式是否适合系统的应用环境,如果不适合,还需要对关系模式做进一步分解。

3.5 数据库物理设计

数据库物理设计阶段是为逻辑数据模型选取一个最适合应用环境的物理结构。所谓数据库的物理结构,主要是指数据库的存储结构和存取方法。
数据库的物理设计完全依赖于给定的硬件环境和DBMS产品。具体地讲,该阶段就是根据特定的DBMS所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,为具体的应用要求选定最合适的物理存储结构(如文件类型、数据的存放次序和索引结构等)、存取路径和存取方法等。
数据库物理设计具体包括:确定数据库的存储记录结构;确定数据存储安排、存取方法的设计;完整性和安全性的设计;应用程序的设计等。其中,应用程序设计通常指进行结构化程序的开发,产生一个可实现的算法集。
对于关系数据库来说,系统会自动地将用户设计好的数据库全局模式转换为相应的内模式,用户只需要考虑是否建立索引、使用什么方式的索引等问题,有的DBMS会提供一些物理优化的选择,如内存缓冲区的大小及个数、建立不同的磁盘分区等。

3.6 数据库实施

数据库实施也称为数据库实现。该阶段的主要任务是产生一个具体的数据库和应用程序,并将原始数据导入数据库中。
对数据库的物理设计初步评价后,就开始建立数据库。数据库实施包括:运用DBMS提供的数据库语言(如SQL)及宿主语言,根据逻辑设计和物理设计的结果在计算机系统上建立实际的数据库、装载数据、编制与调试应用程序并进行数据库试运行等。
具体地讲,使用数据定义语言(DDL)来严格描述数据库结构,在创建数据库结构之后,开始向数据库中装载数据,装载过程包括:筛选数据、数据格式的转换、将转换好的数据输入计算机中、对数据进行校验以检查输入的数据是否有误等。编制与调试应用程序与组织数据入库同步进行。调试应用程序时由于数据入库可能尚未完成,通常使用模拟数据。应用程序调试完成并且已有一小部分数据入库后,就可以开始数据库的试运行。数据库的试运行也称为联合调试,主要包括功能测试和性能测试。

3.7 数据库运行和维护

试运行合格后即可投入正式运行。数据库系统正式运行,标志着数据库设计与应用开发工作的基本结束以及维护阶段的开始,在数据库系统运行过程中需要不断地对其进行评价、调整与修改。
对数据库的维护工作主要由DBA完成。运行和维护阶段的主要任务包括:
1)维护数据库的安全性与完整性:检查系统安全性是否受到侵犯,及时调整授权和密码。根据用户要求,不断修正数据的完整性约束条件。
2)实施数据库的转储与恢复,以便发生故障后能及时恢复。
3)监测并改善数据库运行性能:对数据库的存储空间状况、响应时间等系统运行过程中的性能参数的值进行分析评价,结合用户反馈确定改进措施。
4)根据用户要求对数据库进行重新组织或重构。一般情况下,DBMS提供用于数据重组的实用程序,进行重新安排存储结构、垃圾回收等工作。重构主要指对数据库的模式和内模式进行部分修改。

3.8 小结

数据库设计是数据库开发的一个重要内容,其难点和核心主要是需求分析阶段、概念设计阶段、逻辑设计阶段和物理设计阶段。在数据库的设计过程中逐步形成数据库的各级模式。
需求分析阶段综合各个用户的应用需求(现实世界的需求),采用数据流图和数据字典等描述工具,形成需求分析说明书。
概念设计阶段形成独立于机器特点、独立于各个DBMS产品的概念模式(信息世界模型),通常使用E-R图来描述,并最终形成概念设计说明书。需求分析和概念设计这两个阶段独立于任何具体的DBMS。
逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后根据用户处理的要求和安全性的考虑,在基本表的基础上再建立必要的视图,形成数据的外模式,该阶段产生说明关系数据库中的表、视图、属性和约束的数据库逻辑设计说明书。
物理设计阶段根据DBMS的特点和处理需要,进行物理存储安排,建立索引,形成数据库内模式,该阶段产生用于说明数据库存储结构和存取方法的数据库物理设计说明书。逻辑设计和物理设计这两个阶段与所选用的具体DBMS密切相关。
习题
1.简述数据库设计的六个阶段的作用和产物。

2.数据库逻辑设计的主要目的和任务是什么?

3.数据字典的主要内容和作用是什么?

4.数据库系统投入运行后,还需要做哪些工作?

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
3月前
|
存储 数据处理 Apache
超越传统数据库:揭秘Flink状态机制,让你的数据处理效率飞升!
【8月更文挑战第26天】Apache Flink 在流处理领域以其高效实时的数据处理能力脱颖而出,其核心特色之一便是状态管理机制。不同于传统数据库依靠持久化存储及 ACID 事务确保数据一致性和可靠性,Flink 利用内存中的状态管理和分布式数据流模型实现了低延迟处理。Flink 的状态分为键控状态与非键控状态,前者依据数据键值进行状态维护,适用于键值对数据处理;后者与算子实例关联,用于所有输入数据共享的状态场景。通过 checkpointing 机制,Flink 在保障状态一致性的同时,提供了更适合流处理场景的轻量级解决方案。
58 0
|
3月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
3月前
|
SQL 关系型数据库 数据库
数据库空间之谜:彻底解决RDS for SQL Server的空间难题
【8月更文挑战第16天】在管理阿里云RDS for SQL Server时,合理排查与解决空间问题是确保数据库性能稳定的关键。常见问题包括数据文件增长、日志文件膨胀及索引碎片累积。利用SQL Server的动态管理视图(DMV)可有效监测文件使用情况、日志空间及索引碎片化程度。例如,使用`sp_spaceused`检查文件使用量,`sys.dm_db_log_space_usage`监控日志空间,`sys.dm_db_index_physical_stats`识别索引碎片。同时,合理的备份策略和文件组设置也有助于优化空间使用,确保数据库高效运行。
81 2
|
3月前
|
关系型数据库 数据库 数据安全/隐私保护
"告别繁琐!Python大神揭秘:如何一键定制阿里云RDS备份策略,让数据安全与效率并肩飞,轻松玩转云端数据库!"
【8月更文挑战第14天】在云计算时代,数据库安全至关重要。阿里云RDS提供自动备份,但标准策略难以适应所有场景。传统手动备份灵活性差、管理成本高且恢复效率低。本文对比手动备份,介绍使用Python自定义阿里云RDS备份策略的方法,实现动态调整备份频率、集中管理和智能决策,提升备份效率与数据安全性。示例代码演示如何创建自动备份任务。通过自动化与智能化备份管理,支持企业数字化转型。
94 2
|
3月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
82 0
|
4月前
|
SQL 关系型数据库 MySQL
云服务器 ECS产品使用问题之出现“1044 - Access denied for user ‘root‘@‘%‘ to database ‘数据库名称‘”这样的错误,该怎么办
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
3月前
|
SQL JSON 关系型数据库
"SQL老司机大揭秘:如何在数据库中玩转数组、映射与JSON,解锁数据处理的无限可能,一场数据与技术的激情碰撞!"
【8月更文挑战第21天】SQL作为数据库语言,其能力不断进化,尤其是在处理复杂数据类型如数组、映射及JSON方面。例如,PostgreSQL自8.2版起支持数组类型,并提供`unnest()`和`array_agg()`等函数用于数组的操作。对于映射类型,虽然SQL标准未直接支持,但通过JSON数据类型间接实现了键值对的存储与查询。如在PostgreSQL中创建含JSONB类型的表,并使用`->>`提取特定字段或`@>`进行复杂条件筛选。掌握这些技巧对于高效管理现代数据至关重要,并预示着SQL在未来数据处理领域将持续扮演核心角色。
57 0
|
4月前
|
消息中间件 关系型数据库 数据库
实时计算 Flink版操作报错合集之在使用RDS数据库作为源端,遇到只能同步21个任务,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
消息中间件 关系型数据库 Serverless
函数计算产品使用问题之如何通过vpc来连接rds数据库
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
关系型数据库 数据库 RDS
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
利用DTS将自建mysql5.7版本数据库迁移至对应rds报错
149 0