`

数据库设计与优化

阅读更多

数据库应用系统设计中的一个核心问题,就是如何设计一个能够满足用户当前与可预见的末来的各项应用要求、性能良好的数据库。
 数据库设计是从用户的数据需求、处理要求及建立数据库的环境条件(软、硬件特性,其他限制)出发,把给定的应用环境(现实世界)存在的数据加以合理地组织起来逐步抽象成已经选定的某个数据库管理系统能够定义和描述的具体的数据结构的过程

 
数据库设计的成果是数据库模式和应用程序,而应用程序是以数据为基础的。因此,数据库设计中最基本的是数据库模式的设计。但是,设计一个完善的数据库系统往往是一个不断反复的过程,数据库模式必须反映数据处理的要求,保证常用的或大多数的数据处理,使用方便,性能满意,且应根据应用需求适当地修改,调整数据结构,优化数据模型,以便进一步提高数据库应用系统的性能。


1
 规范数据模式
 数据模式是关系数据库的重要组成部分,构造合适的数据模式是实现关系数据库优化设计的一个重要方面。由于关系模型有较为严格的数学工具做支撑,故一般多以关系模型做讨论的环境,从而形成了关系数据库设计理论。由于这种合适的数据模式应该符合一定的规范化要求,因而又可称为关系数据库的规范化理论。

1.1 规范化理论
 所谓关系规范化就是按统一标准对关系进行优化,以提高关系的质量,为构造一个高效的数据库应用系统打下基础。例如有一个反映轮船信息的数据库,由以下8个属性组成:船号、船名、马力、部件号、部件名、型号、重量及用量。将这8个属性构造成一个合适的关系模式,从而构造一个关系数据库,其构造方法很多。最简单的是,将8个属性组成如下关系:
  轮船(船号、船名、马力、部件号、部件名、型号、重量及用量)但是,在对这个关系操作时会有3个问题:
  (1)冗余度大 一艘轮船有N个部件,就有N次重复船号、船名、马力的数据;
  (2)插入异常 一种部件,如果在某一阶段没有轮船用到,其对应的信息就无法插入,使数据库在功能上产生了不正常的现象,同时也给用户带来极大的不便;
  (3)删除异常 一种部件,若只有一艘轮船用到,则删除他的信息,有关他选用的部件信息同时也删除了,从而丢失了应用的数据。

 


  从上面的分析可知,轮船关系不是一个“好”的数据库模式。一个“好”的模式应当避免发生插入异规范化理论认为,关系中的各属性是相互关联的,他们互相依赖、互相制约,构成一个结构严谨的整体。因此,在关系设计中,必须从语义中摸清这些关联,特别是依赖关系,只能把那些相互关联密切的属性拼凑在一起。构造一个“好”的数据库模式,必须使他的关系模式的属性之间满足某种内在的语义条件,而这种联系又可对关系的不同要求分为若干等级,这就是关系规范化。以函数依赖为基础的关系模式的规范化等级主要有5种,即第1范式(1NF),第2范式(2NF),第3范式(3NF),BC范式(BCNF)和第4范式(4NF),满足这些范式条件的关系模式可在不同程度上避免冗余、插入和更新异常问题。

1.2 规范化理论的应用
  为了消除关系模式在操作上的异常问题,优化数据模式,可进行规范化处理。具体做法是:确定数据依赖,把每个关系模式的各个属性按数据分析阶段所得到的语义写出其数据依赖,同时,考察不同的关系模式属性之间是否还存在某种数据依赖,得到一组数据依赖及诸关系的全部数据依赖。按照数据依赖的理论,逐一分析这组关系模式,确定他们属于第几范式,进行模式分解。
  例如,对上述轮船关系进行分解,提高范式等级,可构成一个轮船信息的数据库,他的数据模式由4个关系组成:轮船(船号、船名、马力);使用(船号、部件号、用量);部件(部件号、部件名、型号);型重(型号、重量)。
  这4个关系属于3NF,至此,是一个比较“好”的数据库了。


2
 改善数据库性能
  关系数据库的性能的好坏,主要体现在查询的速度上,他是数据库应用中的一个关键问题,是必须在数据库的设计中加以认真考虑的问题,特别是对那些响应时间要求较苛刻的应用,应予以特别注意。可从以下几个方面提高查询速度,改善数据库性能,从而达到数据库设计的优化目的。

2.1 减少连接操作
  连接操作对数据库的查询速度有着重要的影响,参与联接的关系越多,查询越慢。因此,对一些常用的、性能要求较高的数据库查询,最好是一元查询,这与规范化的要求相矛盾。有时为了保证性能,把规范化的关系再合并起来,称之为逆规范化。当然,这样会引起更新异常,破坏数据库完整性,必须采取相应的措施来保证数据库的完整性,从而也会增加系统的开销。因此,决定做逆规范化时,一定要权衡利弊,仔细分析应用的数据存取需求和实际的系统性能。

2.2 减小关系大小及数据量
  被查询关系的大小对查询速度影响很大。为了提高查询速度,可以采用水平分割或垂直分割等方法把一个关系分成几个关系,使每个关系的数据量减少。例如,对于有关学生的关系,既可以把全校集中在一个关系中,也可用水平分割的方法,分系建立关系,从而减少了每个关系的元组数。前者对全校范围内的查询较方便,后者则可以显著提高对系的查询速度;也可采用垂直分割的方法,把常用数据和不常用的数据分开,以提高常用数据的查询速度。例如:人事档案中,属性很多,有些需经常查询,有些则很少查询。如果放在一起,则关系数据量很大,影响查询速度。分开可提高常用数据的查询速度。垂直分割提高了一些操作的速度,但也可能使某些操作不得不执行连接操作,从而降低了效率。因此,决定是否进行垂直分割取决于是否垂直分割后数据库上的所有操作的总效率得到了提高。同时,垂直分割还要确保无损连接和保持函数依赖。

3 节省存储空间
  尽管随着硬件技术的发展,提供给用户使用的存储空间越来越大,但毕竟是有限的,而数据库,尤其是一型的数据库,需要占用的存储空间比较大。因此,节省存储空间仍是数据库设计中要考虑的问题。为此,在数据库优化设计中,可采取以下措施:

3.1 缩小每个属性占用的空间
  一般用编码表示属性,用缩写名代替全称,可以节省存储空间,但用户看起来就不那么直观了,须根据实际条件斟酌决定。

3.2 采用假属性
  在有些关系中,某些数据会多次出现,采用假属性可以减少重复数据占用的存储空间。例如:在职工关系中,职工的经济状况这一属性,通常由职工号决定。一个大型企业的职工人数较多。如每一个职工逐一填写经济状况,就要占用较多的空间,而其经济状况有相同的和相似的情况,也即,经济状况这一属性不同值比较少,而在关系中可能有较多的重复。为此,可把经济状况分为几种类型,用类型代替原来的经济状况(这类经济状况的类型就是假属性),另外建立一个较小的关系来描述每种经济状况的具体内容。这样,可大大减小数据占用存储空间的用量。
4 结 语  
数据库设计不同于数学问题,他是一项综合性工作,受到各种各样因素的制约,有些要求往往是彼此矛盾的。因此,设计结果常常是有得有失。因此,设计者必须根据实际情况,综合应用上述技术,在基本合理的总体设计的基础上,做一些优化调整,力求最大限度地满足用户各种各样的要求,实现数据库的优化设计。

1.3 模式分解的2条原则  关系规范化是可以解决关系操作的问题,但进行模式分解时由于受到数据间的相互约束,因此分解不可能是随意的。在规范化化的关系分解过程中,不仅要着眼于提高关系的范式等级,而且应遵守以下2条原则:

  (1)无损分解原则 无损分解就是在关系分解过程中,既不丢失数据也不增加数据,同时还能保持原有的函数依赖。一个关系分解为多个关系,原来的数据就存储到多个关系中,起码要求分解后不能丢失原来的信息。

  (2)相互独立原则 所谓独立是指分解后的新关系之间相互独立,对一个关系内容的修改不应该影响到另一关系。

  此外还应注意到,关系分解必须从实际出发,并不是范式等级越高,分解得越细就越好。若把关系分解得过于琐碎,虽然对于消除数据冗余和更新异常等有好处,但在进行检索操作时往往又需要进行链接,从而使检索效率大大降低。另外,在数据操作中经常是检索操作多于更新操作,其结果很可能是分解带来的好处与检索的效率降低相比,得不偿失。正因为如此,一般规范化只需达到3NF就可以了。
<!---->

 

 

分享到:
评论

相关推荐

    数据库设计与优化.pdf

    数据库设计与优化是软件开发过程中的重要环节,它直接影响到系统的性能、稳定性和可扩展性。本文档主要探讨了在软件生命周期的不同阶段如何考虑数据库性能优化,并重点讲述了分析和设计阶段的一些关键点。 1. **...

    ORACLE数据库设计与优化

    《ORACLE数据库设计与优化》 Oracle数据库是全球广泛使用的大型关系型数据库系统之一,它在数据存储、处理和管理方面具有强大的功能。本主题主要探讨Oracle数据库的设计原则和优化策略,以提升系统的性能和效率。 ...

    让Oracle跑得更快2基于海量数据的数据库设计与优化

    让Oracle跑得更快2基于海量数据的数据库设计与优化

    让Oracle跑得更快基于海量数据的数据库设计与优化.谭怀远.第2版

    《让Oracle跑得更快:基于海量数据的数据库设计与优化》是谭怀远先生的著作,专注于探讨如何在处理大规模数据时提升Oracle数据库的性能。这本书的第二版深入讲解了Oracle数据库在面对海量数据时的设计策略和优化技巧...

    数据库设计与优化.docx

    数据库设计与优化是计算机科学中的核心议题,尤其在如今信息化社会中,数据库系统已经成为各行各业不可或缺的部分。本文详细探讨了数据库设计的全过程,包括六个关键阶段:需求分析、概念设计、逻辑设计、物理设计、...

    基于Sql语言的数据库设计与优化攻略源码

    该源码项目专注于数据库设计与优化,采用Sql语言核心,并整合Java进行功能扩展。项目包含120个文件,涵盖52个Java源文件、10个Gradle构建脚本、8个JAR执行文件、8个YAML配置文件、7个XML定义文件、6个属性文件、5个...

    SQL Server 2008数据库设计与优化.pdf

    《SQL Server 2008数据库设计与优化》是一本深入探讨SQL Server 2008数据库管理系统的设计原则、最佳实践以及性能优化策略的专业指南。这本书涵盖了从基础到高级的各种主题,旨在帮助读者掌握如何有效地设计、实现和...

    让Oracle跑得更快 2 基于海量数据的数据库设计与优化

    《让Oracle跑得更快 2 基于海量数据的数据库设计与优化》是一本深入探讨如何在大数据环境下提升Oracle数据库性能的专业书籍。该书详细阐述了针对大规模数据的数据库设计策略以及优化技术,旨在帮助读者理解并解决...

    让Oracle跑的更快2基于海量数据的数据库设计与优化

    综上所述,对于海量数据的数据库设计与优化是一个系统工程,需要DBA综合考虑数据库模式设计、存储策略、内存管理、SQL优化以及物理存储等多方面因素。只有这样,才能确保Oracle数据库在面对海量数据挑战时,依旧能够...

    让Oracle跑得更快基于海量数据的数据库设计与优化%5D.谭怀远.第2版

    《让Oracle跑得更快:基于海量数据的数据库设计与优化》是谭怀远先生的著作,专注于讲解如何在处理大规模数据时提升Oracle数据库的性能。这本书对于深入理解Oracle数据库的内部机制、设计高效的数据库架构以及实施...

    数据库设计与优化技术详解-规范、SQL查询、索引优化、事务管理

    内容概要:本文档详细介绍了数据库设计的原则和技术,包括...阅读建议:本文档内容丰富,理论与实践相结合,建议读者在实际项目中不断尝试所学的知识点,特别是在数据库设计、查询优化和事务管理等方面进行实战练习。

    数据库设计与sql优化培训讲义

    Oracle数据库SQL运行原理与开发环境 –Oracle数据库系统结构与SQL执行过程 –SQL性能及其优化原理 –SQL & PL/SQL开发环境 •数据库设计 •SQL语句的编写与优化 •SQL性能诊断与调优方法

    大型数据库设计优化技巧

    本文将围绕大型数据库设计优化的关键知识点进行深入探讨,旨在帮助读者理解和掌握有效的数据库设计与优化策略。 #### 成立数据小组 在大型数据库设计中,成立专门的数据小组是至关重要的。数据小组由熟悉业务的...

    数据库索引设计和优化

    数据库索引设计与优化是数据库管理系统中至关重要的一个环节,它直接影响到数据查询的效率、存储空间的使用以及系统的整体性能。在这个主题中,我们将深入探讨数据库索引的基础概念、设计原则、优化策略以及实际应用...

    SQLServer数据库终极设计优化技术

    《SQLServer数据库终极设计优化技术》是一份深入探讨SQL Server数据库设计与优化的宝贵资源,旨在帮助用户提升系统性能。SQL Server作为一款广泛使用的数据库管理系统,其高效的设计和优化对于企业的数据存储和处理...

    MySchool数据库设计优化

    《MySchool数据库设计优化》是ACCP 6.0 S2-2课程中关于数据库设计与优化的一个专题,主要通过一系列PPT课件进行讲解。这些PPT文件,包括TP01至TP09,详细阐述了如何针对教育领域的MySchool系统进行高效且优化的数据...

    数据库索引设计与优化

    《数据库索引设计与优化》提供了一种简单、高效、通用的关系型数据库索引设计方法。作者通过系统的讲解及大量的案例清晰地阐释了关系型数据库的访问路径选择原理,以及表和索引的扫描方式,详尽地讲解了如何快速地...

    让Oracle跑得更快2:基于海量数据的数据库设计与.pdf

    “让Oracle跑得更快2:基于海量数据的数据库设计与”这一主题,正是聚焦于解决这一问题,旨在通过合理的数据库设计和性能优化策略,提升Oracle在处理大规模数据集时的效率。 ### 一、海量数据处理 海量数据处理的...

Global site tag (gtag.js) - Google Analytics