Wintle·旧居

个人blog移至:http://www.wintle.cn,欢迎光临。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

被老板要求接一个通用数据库平台的项目

Posted on 2004-06-06 23:03  Wintle  阅读(1676)  评论(6编辑  收藏  举报
    是个军区的项目,要求是可以自己添加表,然后对这个表添加数据,修改数据,还有各种统计、报表、打印等等。也就是说,他们自己添加一个表,对于这个表的所有操作都得有。想得真好啊。不过还得做,谁让人家是客户。

    想到的解决方案是通过把xml存到数据库里去模仿一个三维表结构出来,这样他们建的表就不是真正意义上的表了,而是一个xml,所谓表结构就是schema了。表间关系专门用个表去记载,应该没有太大问题,毕竟表间的关系,在这种以存储数据为主的表中,不会太复杂的。

写给客户看的东西,现在还在进行一种手续,叫做竞标,他们中有些人还不是很相信这种技术,所以要给他们看看怎么做的,就写了,谁知道,这种方式我也是第一次写啊。如果谁要是有经验,倒是希望能赐教了。

读点书真不容易。

1、  难点问题解决一、自定义数据表的存储模式:
表一:表的存储

表结构

ID

TableName

Schema

XSL

XML

Type

说明

 

表名

表结构

表的表现形式

数据

表类型

 

表二:表间关系

表结构

MainTable

SubTable

MainTableKey

SubTableKey

Relationship

说明

主表

从表

主表关键字

从表关键字

关系:(联级删除,联级更新,参照)

 

 

2、  难点问题解决二、如何在客户端按自定义数据表的结构进行输入输出界面排版:

问题的分解:

A、     怎么样添加表、修改表结构?

添加表和修改表结构实质是处理xml形式的schema,在技术实现上不存在任何障碍。

B、     怎么样根据表结构显示数据录入和修改的界面?(这是最困难的一点)

这个问题的关键在于如何根据schema在客户端应用程序的界面里动态的画出与这个表结构相应的控件集合来,进而要求这种集合要符合一些愿望上的规范,比如说对风格的用户选择等等。

动态画上一个用户录入用的控件不是一件困难的事,而schema中包含了该表所有的字段,以及字段的数据类型,我们要做的,无非是一个数据类型和控件类型的对应,这个可以做为一种参照数据,被存放在一个xml中,或者是一张参照型表中。在画的时候,根据数据类型选择不同的控件类型。这个过程,最终可能是需要手工参与调整的,自动生成按照一种通用的方式来安排这些结构,由表单设计者来最终决定控件的布局,这种布局被存放在xsl中,这样,最后普通用户看到的录入和修改的界面是定制过的。

C、     统计、查询的过程是如何实现的?

实质是一个批量数据的显示问题,程序一次性将这个表的数据(xml)读取出来,保存在一个DataSet当中,而DataSet是标准的数据容器,因此,可当作实际的表一样来处理,唯一不同的是,显示在DataGrid当中的标头会受Schema控制。因此,统计、查询,不再是在数据库中完成,而是对内存中表操作完成的。这也部分地解决了xml效率不高的问题。(目前这是一个轻量级的解决方案,对于巨型数据量的表,我们拟采用另一种存储方案,但这不影响程序结构的实现。所以这里从略)

D、    报表打印怎么处理?

报表的设计类似录入界面的设计,自动生成和人工选择相结合的来实现这个过程。


慢慢关注以后的发展吧。从技术角度而言,这倒的确对自己是一个挑战。