数据结构自定义属性的设计方法与流程

文档序号:14609525发布日期:2018-06-05 20:31阅读:248来源:国知局
本发明涉及数据结构设计,具体涉及一种数据结构自定义属性的设计方法。
背景技术
:目前,随着业务的灵活性增强,越来越多的客户对数据结构有了定制化需求,甚至同一个项目下每一个分项都需要一个独特的数据结构,若为每一个分项设计一个数据结构,这样的结构开发效率低、可重复利用率低、后期维护困难。而若使用统一的数据结构,以往固定的数据结构又不能很好的满足业务需求。特别是,在项目进行过程中,对数据结构进行改变,会导致新旧数据的结构不一致,造成混乱。技术实现要素:本发明所要解决的技术问题是:提出一种数据结构自定义属性的设计方法,解决传统技术中采用为每一个分析设计一个数据结构存在的开发效率低下、维护困难;而采用统一的数据结构不能满足业务需求的问题。本发明解决上述技术问题采用的技术方案是:数据结构自定义属性的设计方法,包括以下步骤:a.定义项目集合数据结构;b.定义自定义属性数据结构;c.关联项目集合与自定义属性;d.定义基础数据的数据结构,存储对应的自定义属性集合。作为进一步优化,步骤a中,将项目集合中的共性提取为固定的数据结构属性。作为进一步优化,步骤c中,所述自定义属性以name+unit为候选键,与项目集合设置为多对多对应关系。作为进一步优化,步骤d中,以text存储其对应的自定义属性集合。作为进一步优化,步骤d中,所述自定义属性集通过dict结构存储,key为属性id,value为属性值;在存入基础数据结构数据库表单时,通过json序列化为字符串存储。作为进一步优化,该方法还包括步骤:e.通过重写框架代码实现对自定义属性的解析与操作。本发明的有益效果是:通过定义自定义属性的数据结构,并与项目结合设置为多对多的对应关系,并利用基础数据的数据结构存储对应的自定义属性集合;通过重写框架代码实现对自定义属性的解析与操作,从而为系统用户提供了在不修改已运行系统代码前提下动态的添加修改数据自定义属性的功能。具体实施方式本发明旨在提出一种数据结构自定义属性的设计方法,解决传统技术中采用为每一个分析设计一个数据结构存在的开发效率低下、维护困难;而采用统一的数据结构不能满足业务需求的问题。在具体实现上,本发明中的数据结构自定义属性的设计方法包括以下步骤:1.定义项目集合数据结构;本步骤中,将项目集合中的共性提取为固定的数据结构属性;2.定义自定义属性数据结构;本步骤中,考虑到自定义属性的多变,设计了自定义属性的数据结构,自定义属性的数据结构如表1所示:表1:自定义属性的数据结构名称类型备注IdInt主键NameVarchar属性名称TypeVarchar属性类型Unit_typeVarchar计量单位类型UnitVarchar计量单位DescriptionVarchar描述Is_activeTinyint是否可用Add_timeDatetime添加时间3.关联项目集合与自定义属性;本步骤中,自定义属性以name+unit为候选键,与项目集合设置为多对多对应关系。其中,项目集合与自定义属性的关联关系如下表2所示:表2:项目集合与自定义属性的关联关系表名称类型备注IdInt主键Collection_idInt外键,指向项目集合Attribute_idInt外键,指向自定义属性4.定义基础数据的数据结构,存储对应的自定义属性集合。本步骤中,基础数据的数据结构如下表3所示:表3:基础数据的数据结构表名称类型备注IdInt主键…………由业务需求决定的属性AttributesText自定义属性集自定义属性的存储:因为具有自己的数据结构与对应的数据库表,所以自定义属性可以通过id找到唯一对应的属性,故,自定义属性集通过dict结构存储,key为属性id,value为属性值;在存入基础数据结构数据库表单时,通过json序列化为字符串存储。方法返回:处理后的series数据list,以及处理后的label数据list;自定义属性的解析:自定义属性属于每个基础数据自身,项目决定了解析其中哪些属性。基于Django+Rest框架结构,继承serializers.ModelSerializer类,实现基础数据的解析类DataSerializer,基础属性由框架提供的方式解析,自定义属性的解析需要重写to_representation方法;在前端获取到的数据中,自定义属性被解析为与基础属性同级的,以“属性名(计量单位)”为key的属性。自定义属性的操作——条件筛选:由于经过解析,前端接收到的自定义属性集为{“属性1(单位1)”:”值1”,“属性2(单位2)”:值2}的结构,当用户需要以此进行筛选操作时,提交的属性key也为“属性1(单位1)”格式,故后台需要对这一格式进行解析。在后台解析后,可以将“属性1(单位1)”结构转换为”id”结构,与基础数据中保持一致。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1