关于数据库自我描述功能的构思

关于数据库自我描述功能的构思程序员

袁永福 2017-3-21数据库

 

前言数组

笔者正在开发一个应用程序开发支撑平台。用于对于广大软件公司和自主研发软件的医院信息科的。平台作底层功能支撑,开发者就能专心作业务流程开发,帮助他们快速完成应用软件的开发。而数据库的自我描述功能就是本开发支撑平台中的一个功能设想。工具

行业痛点设计

    在应用系统开发中,数据库结构的管理是一个繁重的工做。一个比较大的软件产品,包含几百个数据表、数千个字段,历经多代程序员的传承。期间发生了不少数据库表和字段结构的增删改操做(DDL操做)。这个时候很容易出现知识的断档,会出现文档和实际数据库结构不一致的问题,这给广大程序员带来诸多困扰。另外在浩瀚的数据库中找到所需的字段也是一件不容易的事情。3d

    好比下图所示:对象

                       

    这是MS SQL SERVER的数据库字段设计器的界面。能够定义字段名、数据类型、容许NULL值等基本信息,其实下面还有一个属性列表来定义更多的信息,不过应该不多人用到。blog

    不过这些信息实在是太少了。因此才会出现PDM、MS WORD、MS EXCEL等各类格式的文档来定义数据库结构。不过文档是和数据库分开保存的,二者没啥互动,时间久了形成程序猿没有更新文档的动力。埋怨前任留下坑的同时本身也在为后来者挖坑。排序

 

数据库自我描述索引

 

    为此笔者提出了数据库自我描述的功能的构想。将数据库结构的描述信息直接保存在数据库中,并提供一套工具来将二者紧密的关联在一块儿。使得数据库能本身描述本身,减小对文档的依赖,加强数据库对业务的支持,并为一些自动化机制提供支持。

  

    如下是管理工具用户界面原型。

 

    在这个界面中,左边是数据库结构树状列表。根节点是若干个数据库链接对象。每个数据库链接对象是独立。好比第一个是ORACLE,第二个能够是SQL SERVER,第三个是MYSQL。这样本功能就不只仅用于公司产品了,也适用于客户的数据库管理了。由于一些客户的系统是万国系统,各个厂家的软件的数据库堆在一块儿,此时能够采用这种方式进行集中照看。

 

    这个树状列表的第二层节点就是各个数据库中的数据表和视图了。按照名称进行排序。

    当用户点击数据库链接节点时,右边的列表控件列出了该数据库下全部的数据表和视图的信息。在这个列表中,对象是分组的,并且数据表和视图的图标不同。对象所在的组名是能够在对象属性对话框中维护的。因为能分组,使得几百个数据表能按照逻辑业务关联而拆分红多组,下降管理难度。

    这个列表中列出的栏目有:

名称:数据表和视图的原始名称。该栏目的数据是自动生成的,不能修改。

记录个数:该数据表中全部的记录个数。也就是“Select Count(*) From 表名”的结果。展现出这个列表内容后会后台延时加载该栏目的数据。该栏目的数据是自动生成的,不能修改。

标题:也就是对象的中文名。

说明:对象的更进一步的详细的说明。

对应实体类型:程序中和该数据表对应的实体类型的全名。能够自动扫描,也能够手动修改。

 

    当用户点击左边树状列表中的某个数据表或视图时,右边列出了该对象所包含的字段信息。其原型以下图所示:

 

    在这个字段列表中,各个栏目的说明以下:

名称:字段的原始名称。

字段类型:字段的原始类型。

容许NULL:字段是否容许为NULL值。前3个栏目是自动解析生成的,是不可修改的。

标题:也就是字段中文名。

说明:字段的更详细的说明。

扩展数据类型:列出了字段的在软件中的抽象的数据类型。目前有:

    yyyyMMddHHmmss:表示精确到秒的日期时间数据。不少系统为了扩展性和对各类数据库的兼容性,不会定义原生态的DataTime格式。而是采用通用的字符串格式来存储日期时间数据。

    yyyyMMdd:表示精确到天的日期数据。

    HHmmss:表示精确到秒的时间数据。

    Base64:Base64格式的字符串,应该转换为一个字节数组。

    GUID:GUID格式的字符串。

    还有其余应用系统自定义的扩展数据类型。

在这个列表界面中,对于不一样的字段类型,好比主键、索引、外联字段等,其图标是不同的。

 

    数据库字段赋予应用系统能够解释的扩展数据类型,这提升了数据库的自我描述性。加强了数据库的机器可读性和人类可读性。

 

    在这个主界面中的工具条按钮功能说明以下: 

新增数据库链接:弹出空白的数据库链接属性对话框,让用户输入数据库链接信息来新增数据库链接对象。

删除数据库链接:删除当前选中的数据库链接节点。

刷新:不保存而从新加载数据。若是数据被用户修改了,则提示用户是否保存数据。

属性:显示属性对话框。若是树状列表得到焦点则显示当前节点的属性对话框,若是列表控件得到焦点则显示当前列表项目的属性对话框。

保存:保存设置。

查找:输入一个关键字,查找指定的表或者字段对象。查找范围包括对象的名称、标题和说明。

导入PDM:打开一个PDM的XML文件对话框,而后导入PDM中的设计信息到当前数据库链接下面的表和字段。

导出HTML文件:导出当前数据库链接下全部的表和字段信息到一个本地HTML文件中。也就是自动生成数据库的API文档。

 

    点击工具条的属性按钮,会弹出对象属性对话框,对于数据库表对象,弹出的对话框界面原型以下:

 

 

    对于字段,弹出的属性对话框界面原型以下:

 

    在这个界面中,点击“编辑列表内容对话框按钮”则弹出以下所示的对话框:

 

点击“列表来源对话框按钮”,则显示以下所示的对话框:

 

该对话框显示了系统中全部预约义的字典项目。

用户点击“显示校验格式对话框按钮”,则显示以下所示的对话框:

 

用户点击“显示格式对话框按钮”,则显示以下对话框:

 

 

    通过上述界面的编辑维护,软件将产生一些配置信息,这些配置信息就存在数据库的特定表中。这样就实现了数据库结构的自我描述。另外能为某些自动化的操做来提供支持。

好比在下面的表单设计界面:

 

    右边列出了全部可用的字段,用户能够将字段拖拽到模板中来自动生成和字段关联的输入域元素。若是没有数据库的自我描述,则须要设置输入域的背景文字、显示宽度、前面的标题文本、内容校验规则等等。以下图所示,须要在右下角的属性列表中作很多操做。

 

 

    若是有了数据库的自我描述,则能够自动设置。若是整个系统中有100处须要引用“UserName”字段,则只要进行一次字段自我描述定义,则能省掉其余99次的相似操做。实现“一次配置,处处使用”的功能。提升数据库的自我描述的应用价值。

    另外能够由系统管理员来预先设置好数据库的自我描述,这样下降了模板制做人员的使用难度,使得不是很懂计算机的普通用户也能修改模板,帮助实现“全民参与信息化建设”。

相关文章
相关标签/搜索