可动态扩展的数据库设计

上传人:新** 文档编号:499373684 上传时间:2023-08-23 格式:DOCX 页数:6 大小:12.64KB
返回 下载 相关 举报
可动态扩展的数据库设计_第1页
第1页 / 共6页
可动态扩展的数据库设计_第2页
第2页 / 共6页
可动态扩展的数据库设计_第3页
第3页 / 共6页
可动态扩展的数据库设计_第4页
第4页 / 共6页
可动态扩展的数据库设计_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《可动态扩展的数据库设计》由会员分享,可在线阅读,更多相关《可动态扩展的数据库设计(6页珍藏版)》请在金锄头文库上搜索。

1、可动态扩展的数据库设计摘要:数据库设计的核心问题是建立模型。对于信息系统中出现的数 据结构改变和扩展的需求,采用了一种基于键值对的对象属性可扩展 模型。关键词:数据库设计;可扩展;对象;关系数据库0 引言数据库设计是建立数据库及其应用系统的技术,是信息系统开发 和建设的核心。数据库设计是指对于给定的应用环境,构造最优的数 据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满 足各种用户的应用要求(信息要求和处理要求)。数据库设计的核心问题是建立模型。一般而言这个模型要满足两 类准则:结构准则和性能准则。前者主要考虑如何保持数据的特性, 后者主要考虑资源的合理使用和数据库的存储效率。在所

2、有数据库设 计准则中最重要的原则是:最终产品必须满足用户的最终要求。但是, 首先需要存储的信息是动态的,应用自身的发展也会产生新的和扩展 的信息需求;其次,信息化是分步进行的,用户很难一次提出完整的 需求;第三,用户和设计人员之间存在理解上的差异。因此,数据库 应用系统在完成以后,系统功能很可能不能完全满足用户需求,而且 随着时间的发展系统功能会逐渐偏离用户或企业的需求。所以,数据 库应用系统必须要不断地改进和扩展以适应环境的变化以及组织自 身的发展需求。目前数据库设计普遍采用“需求驱动”的数据库设计模式。但是, 如果在数据库设计阶段,建立数据库模型时没有充分考虑到数据库应 用系统以后可能的改

3、变及扩展,将使系统以后的维护工作变得极其困 难,甚至必须重新开发数据库应用系统。本文针对数据库应用系统开 发过程中遇到的动态可扩展问题提出了一种数据库设计模型基 于键值对的对象属性可扩展模型,它区分了应用中的不同对象的类 型,通过设计属性分类提高了数据库应用系统中数据的可改变性和可 扩展性。1 信息系统中的传统数据库设计模型通常,在传统数据库设计模型中,设计人员在设计阶段总是将数 据信息表达的尽可能丰富,使其不仅满足所有需求分析阶段得到的用 户需求,而且还要尽可能考虑到应用以后可能的改变以及扩展。采用 这种方式设计的数据库应用不仅数据表过于“臃肿”,而且对于未来 的应用难于改变或者扩展。例如,

4、在某校园建筑管理信息系统中,系统成立初期,只要求该 系统能够展示建筑的基本信息,如名称、简述等。设计人员有可能将 数据表格设计成,我们称之为方案 1。包括编号、建筑名称、建筑描 述是建筑的最基本属性,此外设计人员也考虑到了系统将来的扩展, 加入了诸如建设日期,高度,等属性。由于设计人员不可能完全预见 学校未来发展状况,所以对于系统现阶段的需求来说,尽管建筑信息 表已经非常详尽了,但是随着时间的推移系统仍有可能不适应实际需 求。随着需求的发展,建筑的信息需求有可能发生变化。例如:为 了获取建筑质量,有可能对该建筑的施工文件等信息保存;随着校 园信息系统的建立,可能有更多的不同类型的建筑需要存入系

5、统,比 如管道信息,一些标志性雕塑,或者植被信息;随着系统的扩展, 原有数据表可能不能满足日益增多的该类建筑所有信息的存储,所以 需要建立新的数据表扩展其属性;对于一些简单的建筑或者物体比 如一棵树一个石凳,存储的信息明显和一座教学楼不同,需要按照类 型的不同,设计多个不同的数据表分别存储不同类型的物体信息。2 数据库设计中的扩展性需求在应用中,类似这样的数据存储结构改变以及应用扩展的情况还 有很多。如果用传统数据库设计模型,那么在设计初始阶段就必须考 虑到应用未来所有的改变及扩展,尽可能使表格的信息详尽,否则当 应用发生改变或扩展时,必须重新设计表结构,并对应用程序中相关 片段全部重写。如果

6、同一变化出现在不同部位,由于不同的原因,出 现在不同的阶段,那么现有表结构不能满足要求;如果需要增加过多 的对象属性信息,那么表结构将必须修改。但是,如果我们将数据对 象化,并采用定义其属性和值的设计模型,上述问题将迎刃而解。作为开发人员,总会面对业务方提出的数据结构变化的需求,字 段的增加,数据表的修改总是随时可能根据需求发生。因为业务在发 展,或者需求就有可能需要一个完全动态的可扩展的数据库设计方 案,但是以目前的关系数据库实现这种动态扩展的特性,在系统一定 规模之后所付出的代价是昂贵的,也是不安全的。为了这种动态扩展性,有这样三种常用的方法:第一种方法:预留字段。既然很难加字段,就预先留

7、好一些备用, 但是这样没那么灵活,有一定的实用性,不过因为预先留的字段一般 是没什么含义的,需要有额外的信息来描述,这种方法在扩展性要求 不是太强的地方可以不影响性能的前提下提供一定的扩展性。第二种方法:使用复杂字段。在某些特殊要求下还是很有用的, 比如,某个业务实体(某张表),有一些标记位,都是true/false的标 记,可以理解为这个实体的一些属性,经常需要添加,这种情况,在 生产中我们使用过用一个数字,按位来表示这些标记的,比如第三位 表示他是不是付费用户,第四位表示他是合作方来的用户还是自己注 册的,等等。还有一种情况,需要更复杂的属性列表,属性个数经常 变,可以考虑使用一个文本字段

8、,保存结构化的数据,然后在使用时 需要动态解析该字段。使用复杂字段的好处就在于比较灵活,同一类 型的数据可以放在一起(实际上相当于把应该是一个关联表的数据放 一个字段里了),操作的性能也不错,但是复杂字段里面的内容查询 比较困难,程序实现和修改起来也更复杂。第三种方法:将数据的存储和索引(需要查询的内容)分开存放, 相当于主表就一个key value,把需要查询的字段放到其他单独的 表里去,这种方法对数据的实时查询的效率有一定的影响,但是针对 实时性的要求并不是所有系统都有要求的,在有些地方是很好的解决 方案。3 基于键值对的对象属性可扩展模型本文的基于键值对的对象属性可扩展模型就是结合上面提

9、到的 第三种方法,使用数据表分别单独存储对象分类和分类的属性信息的 定义,并且实现了分类属性之间的树形的可扩展结构,对象信息的存 储用过一张表用来存储所有对象公有的可快速查询的数据信息,另一 张属性值表存储所有的对象的特有属性的keyvalue。通过这样的设计可以在不修改原数据表结构的前提下,实现所有存储对象的动态 可扩展,如图1 所示。图 1 对象属性信息结构模型由图 1 所示,表 t_class 保存对象的分类信息如建筑,管道,雕 塑等;t_attibute_def保存的是每个分类所对应对象的属性信息如建筑 的高度,施工单位等;t_entity保存的是分类对象的公共信息,是具 体的物体如1

10、号教学楼;t_entity_content保存每个具体的对象所有属性 的信息值;t?倕_file表用来保存一些扩展的文件信息。通过这样一个 模型我们可以在需要是动态定义一个大的分类并且可以动态的设置 每个已有分类拥有哪些属性,所有对象的的具体内容分别存储在对象 公共信息表,对象属性信息表和文件信息表中。在实际应用中,还涉及到属性冗余,查询,修改等方面的问题, 通过在校园管理系统中应用的结果来看,这些都可以实现,并能获得 较好的效率。4 结束语综上所述,传统的数据库设计适用于简单的、业务数据固定或变 化极少的集中式数据库应用。在应用范围更广需要更灵活数据结构的 系统中,显然面向对象属性的扩展设计更加适宜。随着网络环境的日益普及,新的应用呈现出来的开放性与分布性 特点,Web应用系统也由简单的数据库系统逐具有了更灵活多变应用 环境,在这种环境下,能够满足扩展和动态改变的需求,将有更广阔 的应用前景。参考文献:1 萨师煊,王珊.数据库系统概论(第三版)M.北京:高等教育出版 社, 2000.2 刘洋,高连生,王斌.一种面向用户扩展的树状数据库设计模型J.计算机工程与设计,2006(11).3 陆登.基于对象数据库的扩展Java集合框架J.计算机应用与软件, 2011(12) .4 张峻,徐卫东,钟华.数据库应用系统的层次化设计方法与实 现J计算机工程与设计,2004(9).

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号