元数据在实际项目的应用

元数据在实际项目的应用

        最早接触元数据概念是在学习数据仓库相关知识时,其描述数据仓库内数据的结构和建立方法的数据。其实元数据在OLTP系统中也非常重要,利用元数据可以让系统功能更灵活、更强大。本文结合示例详细阐述元数据在项目中的应用。

什么是元数据

        元数据,一般定义为描述数据的数据。比如我们设计数据库表时,数据库系统存储其的元数据,供我们查询表、字段信息,包括名称、类型、约束等。那这些元信息除了描述表以外,还有其他用途吗?当然有了,比如我们要实现通用的高级查询,让用户自己选择字段、逻辑比较符和值,最后把用户条件动态加入至查询条件中,从而实现通用的高级查询。等等,你可以选择字段,但是字段名称是数据库中的名称,用户体验太差了吧,如user_name,用户最好能看到名称之类,你如何实现;还有如果该字段是字典映射,如1表示男,2表示女,用户界面如何展示,你怎不能让用户填写1和2吧(用户不需要知道什么1、2表示啥);还有要是关联多张表,你怎么实现,还有……

        看来高级查询功能不好实现啊,有元数据也不行?,当然不是,不能实现是因为现有的元数据只描述了表相关信息,并没有描述与界面相关的概念元数据以及和实际业务相关的业务元数据,他们都对数据库提供的基础元数据进一步补充和完善。

概念元数据

    概念元数据主要包括界面信息、验证信息、描述信息、引用信息等,下面分别对其简要说明并举例。

         界面信息,包括字段对应的控件信息,也有文本框、日期控件、下拉列表、隐藏域等;查询条件定义,如是否作为默认查询条件以及比较逻辑符,列表展示字段定义,把主要业务字段定义为列表展示字段,以及表现形式,是否字符串缩略展示,如超过一定长度就使用省略号代替,是否模糊化展示,如身份证敏感部分内容使用星号替代。

验证信息包括格式验证和业务验证。

         格式验证信息,如电话号码一般为区号和号码(数据库中一般只有长度和非空,比较简单)。业务验证信息,一些值必须符合业务需要,如审批状态的取值只能是1或2,对应为同意和不同意。

         描述信息,字段的描述信息,即最终用户能理解的描述信息及相关解释说明,如姓名,而不是name。同时备注为中文名称,可以利用解释说明信息作为界面提示信息或帮助文档信息。

        引用信息,描述表之间通过外键的引用关系,如用户表中有组织ID作为组织表的外键字段,引用组织表。利用引用信息可以实现高级查询跨表查询,如需要根据组织名称(组织表的字段)查询相应用户信息。

       下面我们看如何利用上面的元数据,来实现高级查询。在每个查询界面上除了一些固定的查询条件和查询按钮,还有一个高级查询按钮,点击弹出高级查询界面,这个界面可以让用户自己添加一个或多个查询条件,每个条件包括条件字段、逻辑比较符以及比较值三部分,如年龄大于25岁。多个条件需要定义条件直接的逻辑关系(and、or即并且、或者),使用圆括号确定多个条件的逻辑关系范围。查询条件选择数据来源上面概念元数据,如选择年龄字段,界面显示年龄和一个只能填写数值(甚至范围限定为1~100之间)的文本框,用户选择逻辑条件,包括大于、大于等于、等于、小于、小于等于、范围(between and),当为范围时,比较数值控件为两个。上面提到跨表查询功能,如果选择的是引用字段即外键时,则可以继续添加嵌套选择引用表的查询条件,最后把用户定义的条件,后台解析为SQL查询条件片段,拼入原来的查询逻辑中,完成高级查询功能。

        这里仅简要说明其原理,一些细节实现不在此详述,关键是利用元数据实现通用高级查询功能,无需为每个查询界面独立开发高级查询功能,读者可以细细体会。

业务元数据

       业务元数据描述实际业务逻辑信息,包括表对应的单据描述信息,单据界面布局信息,单据提供功能信息、服务信息等。

       单据描述信息,从用户角度描述单据信息,如user_info表,描述信息为“用户信息”,详细备注信息说明系统用户管理等信息。用于作为界面提示信息或文档信息。

       单据界面布局信息,主要描述视图页面和添加信息页面的布局信息。一般有查询列表视图和树形查询列表,前者包括查询条件和数据分页列表,后者比前者左侧多一个树形控件,如用户信息,使用树形结构组织数据。添加信息页面布局有两种,分别为简单信息和复杂信息,前者和唯一数据表对应,后者包括关联多个表,如订单信息和订单明细、运输信息等。明细信息如果是一对多关系,默认使用表格形式展示。

       单据功能服务信息,主要定义用户界面功能和业务服务,界面功能是用户能够在视图页面中直接操作的功能,如添加、修改、删除、导入、查询等。业务服务是后台实现的业务方法,也有可能是对外提供web服务。

       利用业务元信息可以快速确定业务单据对外展示界面和实现功能框架,也可以利用freemark等模板工具实现框架代码生成,提升开发效率;更好的方式使用eclipse插件工具直接在实际项目中生成相应框架代码(Java Emitter Templates功能),规范开发方式,快速实现从需求到开发过渡。非java平台,同样可以通过模板方式实现。

元数据存储

       最后说明下元数据存储方式,上面简要描述元数据包括内容,其不是一成不变的,而是根据你业务需要确定规范,是循序渐进的;如果你业务需要元数据不是很复杂,可以简单存储在数据库备注中,如oracle表或字段可以通过comment 添加必要的元信息。复杂的元信息可以存储在数据库表中,需要提醒的是识别一对多关系。如果在eclipse中实现,也可以使用xml文件格式存储,最后同步至表中,因为有时运行时需要获取元信息。

总结

       以上简要描述了元信息,以及通过示例解释如何使用元信息;希望能把元数据核心用途说明清楚,读者如有兴趣或疑问,可以和我进一步交流,感谢阅读,欢迎拍砖。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值