浅析数据库设计实践

时间:2022-10-14 09:57:09

浅析数据库设计实践

本文作者:仇学敏 单位:贵州广播电视大学

1数据库设计概述

在数据库应用系统中,主要面对的核心问题就是设计出一个能满足用户需求,性能良好的数据库,这就是数据库设计。软件开发的数据库设计主要分为四个阶段:需求分析、概念设计、逻辑设计和物理设计。而目前的软件开发过程中,一般采用生命周期法,将数据库分解为目标独立的若干阶段:需求分析、概念设计、逻辑设计、物理设计、编码阶段、测试阶段、运行阶段和进一步修改阶段。关于数据库设计理念,主要是为了分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。设计者根据实际情况,对某些共同特性和行为的对象可以抽象的作为一个实体。所以数据库是由实体和属性组成的,实体是通过主键表示,属性是通过外键表示。在进行设计时,实体与属性是相对而言的,同一事物在某一种环境中作为属性,在另一种环境中,就必须作为实体。如图1所示。

2软件开发中数据库设计的重要性

数据库作为重要的数据处理技术,大多数的软件开发都必须运用到数据库技术,数据库管理系统就是软件开发的重要成果。它是一种系统软件,分组数据库中的数据组织、操纵、维护、控制及保护和数据服务等功能,特别是它可以定义视图和进行强大的数值计算,能够很好的控制数据库的安全性、完整性以及对数据库的故障进行校正、修复和监控功能。所以它被应用到世界各个领域的机械、医疗、教育等领域中。而且在开发软件时,经常要对很多数据线图和表格进行查找,简单的还可以进行人工查找,如果遇到复杂的数据查找,则会对设计人员造成许多的不便,也很容易出现错误,影响软件产品的质量。而如果运用数据库管理编程,则可以存储许多的数据,当需要时,数据库管理系统则会为用户使用数据中的数据提供方便的查询、插入、修改以及删除数据的功能。

3软件开发中数据库设计应遵循的原则

1)一事一地。建表需描述两个实体之间的联系,避免出现大、杂的设计。如单个主题信息需独立保存、分离,通过在表中分散不同的信息,使数据的维护、组织工作简单化。同时,提高了应用程序的性能。2)避免出现重复的字段。应确保表中能切实放映与其他表的联系,以及外部关键字。另外,要注意避免出现重复的字段,以减小数据冗余,防止删除、插入、更新等操作时,导致数据不一致。3)规范化的命名。对于不同的数据库产品的命名的要求也就不同,设计者在对各对象进行命名操作时,利用大小写字母进行标识,对于编写后台程序代码也要如此,命名长度最好是控制在30字符以下。4)除了个别要求外,禁用游标。如果对大的数据集合使用游标,很容易使得程序出现“漫长等待”或“死机”的现象。如果要使用游标,可以建立一个临时的表,在表中输入所需要的数据,然后对临时表进行游标操作,这在很大程度能够提高游标的性能。5)对庞大的表使用索引。索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。6)事务的使用。指作为单个逻辑工作单元执行的一系列操作,它可以为非事物性单元单元内之外的所有操作的顺利完成提供保障,不断的更新面向数据的资源。7)调整数据库的性能。许多设计员会对数据库设计采用以下两种方法:其一,逻辑设计数据库。调整性能以调整关系、减少连接运算,保持每个关系数量在合理的水平,从而使存取效率提高。时刻通过快照固定,以使查询速度提高;其二,物理设计数据库。主要调整内部物理结构,合理选取存取的路径,以增快访问速度,提高存储空间的利用率。8)合理的选择数据类型。在实际的设计中,必须根据软件开发的产品的规则和要求对数据类型进行选择,从而提高数据库的性能。

4软件开发中的数据库设计的理论分析

1)数据管理系统可在软件开发系统中运行。软件开发系统主要采用VisualC++系统,可直接运行SQL语言。SQL语言是一种可程序设计、数据库和结构化查询的语言,用于数据的查询、存取机更新。同时,可作为脚本文件扩展名。开发应用程序采用VisualC++,不仅进行数据库访问,还可作为开发前段的工具。VisualC++系统的程序开发,能使远程访问的复杂性大大降低,访问效率大大提高。2)数据库在软件开发中的设计,对于数据模型的选择应慎重。数据库中的数据模型可以将复杂的现实世界要求反映到计算机数据库中的物理世界,而在设计时主要注意以下四个方面的因素:其一,数据模型因素。不同软件产品的应用需要不同,所以应该根据实际的情况来选择数据模型,大多数设计者一般都会采用关系模型,因为它是一种非过程性的模型,采用二维表来表示,二维表是由表框架和表的元组组成,当用户进行查询信息时,不必对实际的物理存储路径进行考虑,就能很快、方便获得准确的结果。在大型的数据库管理系统中,必须优化查询、提高关系模型的查询效率;其二,数据库结构因素。数据模型中的数据结构主要的目的是对数据的类型、性质、内容和数据间的联系进行描述,它是数据模型的基础,不同是数据结构操作与约束的也建立在数据结构的基础上,因此必须根据具体数据结构的实际情况分类数据模型;其三,数据约束因素。它主要是对数据结构内数据间的语法、语义联系进行描述,它们之间是制约和依存的关系,所以在具体设计中,应该根据实践情况和数据动态变化的规则,来保证适当的正确、有效与相容;其四,数据操作因素。主要是对相应数据结构上的操作类型、方式进行描述,所以在对数据库进行操作时,应该整体的处理图形,根据实际情况的要求,使接口程序变得简单、灵活,从而使指针占有的空间减小。

5软件开发中的数据库设计的实践分析

软件开发涉及了工业、医疗、教育等各个领域,笔者身为教师,也曾经涉及过在线测试软件的开发设计,下面就以在线测试软件开发为依托,对其数据库设计进行分析:1)对系统的总体设计应引以重视。在对软件进行编制时,系统的总体设计与软件产品项目能否顺利开展以及是否符合软件开发预期的要求有着直接的关联,所以在对在线测试系统进行开发时,应该根据常规软件的开发流程来进行。2)描述从属关系。分析在线测试中教师组卷、学生测试的信息,例如对学科试卷中分为单选题、多选题、填空题、判断题,对这些对象进行系统数据库的组织,从而使得测试题目和学科试卷之间的建立从属的关系,同时,也使得各学科试卷之间建立了复杂的从属关系。所以,建立从属关系主要是考虑空间从属关系和测试的时间顺序。3)合理的实现文本框的窗体视图。主要是利用以单文档的方式来显示表中的数据,它即具有单独使用的文档窗体视图风格,而且当输入监测点数据时,可以很好看到该监测点的属性窗口。同时,该软件具有容错功能,即当用户输入或操作错误时,数据库会自动的提示或取消操作。

6数据库设计过程和实例分析

上面介绍了数据库设计的原则,以“教学管理”数据库为例,来分析数据库设计的过程。1)需求分析阶段。对用户的需要进行分析主要包括三个方面的内容:其一,信息需求。即用户要从数据库获得的信息内容。信息需求定义了数据库应用系统应该提供的所有信息,注意描述系统中数据的数据类型;其二,处理要求,即满足数据完成的处理功能、方式的需求,然后定义系统的数据处理操作。在操作执行时,应该考虑场合、操作、频率等因素对数据的影响;其三,安全性、完整性的要求。在对信息、处理需求进行定义的同时,要保证安全性和完整性的约束。在分析过程中,主要是跟数据库的使用人员进行交流,细心的了解现行业务处理流程,熟悉全部数据资料。例如可以对学校教学管理工作进行了解和分析,可以确定教学管理数据库建立的目的是为了解决教学信息的组织和管理问题,主要是包括教师、学生信息管理和选课情况管理。2)概念设计阶段。概念设计的目的是分析数据间内在语义关联,在此基础上监理一个数据的抽象模型,主要是有两种方法:其一,集中式模式设计法。它根据需求由一个统一机构或人员设计一个综合的全局模式,而且设计比较简单,非常适用于小型或不复杂的单位和部门;其二,视图集成设计法。主要是对一个单位进行分解,然后局部的设计分解后的每个部分,建立各个部分的视图,以各视图为基础进行集成。例如,在教学管理中,以师生实体为联系模型,明确学校各个部门的组成实体和属性,然后描述学校各个年级的学籍管理和课程管理的局面环境,再将各个年级教学管理的环境进行集合,形成一个全局的视图,从而使得数据库能真实的反映学校的教学的管理。3)逻辑设计阶段。它主要是对外模式关系视图进行设计,主要表现在三个方面:其一,提供数据逻辑的独立性。使应用程序不受逻辑模式变化的影响,关系视图则让逻辑模式与应用程序之间有隔离墙作用;其二,适应用户对数据的不同需求。每个数据库有一个非常庞大的结构,它用关系视图屏蔽用户所不需要的模式,而仅将用户感兴趣的部分呈现出来;其三,有一定的保密功能。例如,在教学管理数据库,如果有许多的老师和学生共同登录,则采用用户密码登录,互不影响,只看到自己所需要的信息数据。4)物理设计阶段。它主要是对数据库内部物理结构做调整并选择合理的存储路径,而且一般采用索引设计、集簇和分区设计。例如,在教学管理数据库中,它利用物理设计能够很好的修改其中的数据和路径。5)验证设计阶段。任何一个数据库的设计和建立都必须经过循环反复的验证,一旦数据库中的数据、步骤遭到破坏和出错,就必须及时的进行校正恢复。在验证阶段,也为以后的运行和维护提供参考意见。6)软件运行和维护阶段。这是数据库设计的最后环节,主要是在软件开发的数据正式运行后,对其要不断调整和维护。

7结束语

在给定成本、进度的前提下,如何利用数据库设计理论开发出具有有效性、可靠性、可互操作性、可维护性等满足用户需求的产品是我们需要深思的问题。我们在软件开发中,要不断对数据库设计理论进行实践。

上一篇:关系数据库理论教学的反思 下一篇:数据库范式理论浅析