数据库设计:从视图到数据完整性及不良设计的规避
在数据库设计中,视图和数据完整性是非常重要的概念,同时了解不良的设计方式也能帮助我们避免犯错。下面将详细介绍这些内容。
视图的概念与类型
视图是一种虚拟表,它并不实际存储数据。视图之所以有用,主要有以下几个原因:
- 提供了一种处理多个表数据的方式。
- 有助于强制数据完整性。
- 能帮助保护数据的安全性和机密性。
视图主要有三种类型:数据视图、聚合视图和验证视图。每种视图都可以基于一个或多个表、其他视图,或者两者的组合。每次访问视图时,关系型数据库管理系统(RDBMS)会使用视图基表中的最新数据来重建和重新填充视图。
视图的设计与操作
在确定和定义数据库的视图时,需要与用户和管理层合作,明确组织的视图需求。定义视图时,可以创建视图图来记录视图,并从基表中选择字段分配给视图。
- 计算字段的使用 :计算字段可用于提供相关信息,增强视图显示数据的方式。在聚合视图中,计算字段尤为重要,每个计算字段都使用一个表达式来得出其显示的值。
- 过滤器的应用 :可以对视图应用过滤器,使其检索和显示特定的记录集。只有当记录满足对视图中一个或多个字段施加的条件时,视图才会显示该记录。每个条件都以表达式的形式呈现,用于测试特定字段的值。
视图规格表
视图规格表用于记录视图的特征,如名称和类型。它包含了构成视图规格表的各项内容,可用于记录视图的特性。
视图相关问题解答
以下是一些关于视图的常见问题及解答:
|问题|解答|
| ---- | ---- |
|为什么可以将视图称为虚拟表?|因为视图不包含或存储数据,只是基于基表数据的一种呈现方式。|
|视图有哪两个重要价值?|提供处理多表数据的方式,有助于强制数据完整性。|
|在设计数据库逻辑结构时可以定义哪些类型的视图?|数据视图、聚合视图和验证视图。|
|RDBMS 每次访问数据视图(或任何类型的视图)时会做什么?|使用视图基表中的最新数据来重建和重新填充视图。|
|可以对视图数据进行的修改类型由什么决定?|视图的结构和相关规则。|
|定义多表数据视图必须满足的唯一要求是什么?|表之间必须存在关系,以使视图的信息有效且有意义。|
|为什么数据视图不包含自己的主键?|数据视图是基于基表的,主键通常由基表提供。|
|聚合视图的目的是什么?|对数据进行聚合操作,如求和、计数等。|
|可以应用于一组数据的最常见聚合函数有哪些?|如 SUM(求和)、COUNT(计数)、AVG(平均值)等。|
|什么是分组字段?|用于对数据进行分组的字段。|
|是否可以修改聚合视图中的数据?|通常不可以。|
|验证表和验证视图有什么区别?|验证视图可以整合多个表的数据,而验证表相对较为单一。|
|确定视图需求时应考虑哪两个要点?|组织的信息需求和用户的使用习惯。|
|何时应该使用计算字段?|需要提供相关信息或增强视图显示数据方式时。|
|如何定义一个只显示科幻书籍的视图?|可以通过对视图应用过滤器,设置条件为书籍类型为科幻。|
|为什么必须为数据库中的每个视图完成视图规格表?|为了记录视图的特征,便于后续管理和维护。|
数据完整性的审查
在数据库设计过程完成后,进行最终的数据完整性审查是很有必要的。即使在设计过程中已经关注了数据完整性的各个细节,但仍有可能存在疏漏。数据完整性的裂缝可能导致数据不一致或信息不准确,因此进行最终审查可以确保数据库设计的稳固性。
数据完整性审查的具体内容
审查数据完整性可以采用模块化方法,依次审查数据完整性的各个组件:
- 表级别 :确保表中没有重复字段、计算字段、多值字段、多部分字段和重复记录。每个记录都由主键值标识,且每个主键都符合主键的要素。
graph LR
A[表级别审查] --> B[无重复字段]
A --> C[无计算字段]
A --> D[无多值字段]
A --> E[无多部分字段]
A --> F[无重复记录]
A --> G[记录由主键标识]
A --> H[主键符合要素]
- 字段级别 :确保每个字段符合理想字段的要素,并为每个字段定义了一组字段规格。
- 关系级别 :检查每个表关系,确保正确建立了关系,定义了适当的删除规则,正确识别了每个表的参与类型和参与程度。
- 业务规则级别 :确保每个业务规则施加了有意义的约束,确定了规则的适当类别,正确定义和建立了每个规则,修改了适当的字段规格元素或表关系特征,建立了适当的验证表,并为每个规则完成了业务规则规格表。
- 视图级别 :审查所有视图结构,确保每个视图包含提供所需信息的基表,为每个视图分配了适当的字段,每个计算字段提供相关信息或增强了视图呈现数据的方式,每个过滤器返回了适当的记录集,每个视图都有视图图,且每个视图图都附有视图规格表。
数据库文档的组装
在数据库设计过程中,会生成许多列表、规格表和图表,用于记录数据库设计的各个方面。应将这些文档组装到一个中央存储库中,最好是装订成册。设计存储库应包括以下文档集:
- 最终表列表
- 字段规格表
- 计算字段列表
- 表结构图表
- 关系图表
- 业务规则规格表
- 视图图表
- 视图规格表
此外,还可以将设计过程中收集的笔记和分析阶段收集的样本分别放在文档的附录中。这些文档对于数据库设计至关重要,原因如下:
- 提供数据库结构的完整记录,可通过参考文档回答几乎所有关于数据库的问题。
- 提供数据库实现过程中创建数据库的完整规格和说明,类似于建筑师的蓝图。
- 在实施过程中需要修改数据库结构时,可使用设计文档确定任何修改的影响和后果。
不良数据库设计的类型
了解不良的数据库设计方式可以帮助我们避免犯错。常见的不良设计方式有以下几种:
- 平面文件设计 :这种设计将所有数据都放在一个大表中,存在诸多问题,如数据冗余、不一致,缺乏数据完整性。还存在多部分字段、计算字段、不必要的重复字段、没有真正的主键,且表代表多个主题等问题。
- 电子表格设计 :虽然电子表格在进行复杂数学计算和统计分析时是一个好工具,但不适合作为关系型数据库。电子表格存在重复字段、多部分字段、多值字段,使用困难等问题。当使用电子表格作为数据库时,可将其从电子表格中移除,经过完整的数据库设计过程,并在合适的 RDBMS 中实现,以提高数据库的质量、速度和通用性。
- 基于数据库软件的设计 :应避免仅仅根据数据库软件来设计数据库,而应根据实际需求和良好的设计原则进行设计。
总之,在数据库设计中,我们要充分利用视图来提高数据处理的效率和安全性,确保数据完整性,并避免不良的设计方式,以创建出高质量的数据库。
数据库设计:从视图到数据完整性及不良设计的规避
平面文件设计的详细问题分析
平面文件设计存在一系列严重问题,下面详细分析:
|问题类型|具体表现|
| ---- | ---- |
|多部分字段|如“SALES REP NAME”包含销售代表的名和姓,“CUSTOMER NAME”包含客户的名和姓,“CUSTOMER ADDRESS”包含客户的街道地址、城市、州和邮政编码。|
|计算字段|“ORDER AMOUNT”字段的值很可能是手动计算的,特别是当客户订购超过三件商品时。“ITEM # EXTENSION”字段也可能是手动计算的,其值是相关“QUANTITY #”字段值与“PRICE #”字段值的乘积。|
|不必要的重复字段|与特定商品相关的每个字段都是重复的,例如“ITEM 1”、“ITEM 2”和“ITEM 3”字段。|
|无真正的主键|表中没有一个字段或一组字段可以唯一标识一条记录。“ORDER NUMBER”字段在该表中不是主键,如果客户订购超过三件商品,需要使用相同的订单号再输入一条记录。|
|表代表多个主题|该表代表了三个主题:客户、订单和商品(根据不同观点,还可能代表销售代表)。|
graph LR
A[平面文件设计问题] --> B[多部分字段]
A --> C[计算字段]
A --> D[不必要重复字段]
A --> E[无真正主键]
A --> F[表代表多主题]
电子表格设计的问题及应对
电子表格设计也存在不少问题,以用于跟踪小型零售连锁店店长的电子表格为例:
- 重复字段 :电子表格中的每个字段都是重复字段,实际上每个实例中基本有三个字段:“STORE NUMBER”、“MANAGER NAME”和“ASSISTANT MANAGER NAME”。
- 多部分字段 :每个字段包含两个值,第一个字段存储商店编号和电话号码,第二个字段存储店长的名和姓,第三个字段存储助理店长的名和姓。
- 多值字段 :“ASSISTANT MANAGER”字段是多值字段,因为一个商店可能有多个助理店长。
- 使用困难 :在关系型数据库管理系统(RDBMS)程序中可以轻松执行的数据相关任务,在电子表格中执行起来既繁琐又耗时。
当使用电子表格作为数据库时,可按以下步骤改进:
1. 将数据从电子表格中移除。
2. 经过完整的数据库设计过程,包括确定视图需求、定义表结构、建立关系、制定业务规则等。
3. 在合适的 RDBMS 中实现数据库。
摆脱电子表格视图思维定式
在开始使用真正的数据库和 RDBMS 时,必须摆脱电子表格视图思维定式。例如,典型的电子表格报告布局在数据库中无法直接实现。电子表格按报告中的样子存储数据,而数据库将数据存储在表的不同字段中。虽然数据库报告的呈现方式与电子表格不同,但同样清晰。
不良设计的总结与规避策略
不良的数据库设计,如平面文件设计和电子表格设计,会导致数据冗余、不一致、缺乏完整性以及使用困难等问题。为了规避这些问题,应遵循以下策略:
1. 避免将所有数据放在一个大表中,合理拆分表,确保每个表只代表一个主题。
2. 不使用电子表格作为数据库,而是使用专业的 RDBMS 进行数据存储和管理。
3. 在设计数据库时,根据实际需求和良好的设计原则进行,而不是仅仅依赖数据库软件。
数据库设计的整体回顾与展望
数据库设计是一个复杂而重要的过程,从视图的定义和操作,到数据完整性的审查和维护,再到避免不良设计,每个环节都至关重要。通过合理使用视图,可以提高数据处理的效率和安全性;通过严格审查数据完整性,可以确保数据的一致性和准确性;通过避免不良设计,可以创建出高质量、易于维护的数据库。
在未来的数据库设计中,我们应不断学习和掌握新的技术和方法,以适应不断变化的业务需求和数据环境。同时,要注重数据库的性能优化和安全性保障,确保数据库能够稳定、高效地运行。
总之,一个成功的数据库设计需要综合考虑多个方面的因素,只有这样才能为组织提供可靠的数据支持,促进业务的发展。
超级会员免费看

5万+

被折叠的 条评论
为什么被折叠?



