被老板要求接一个通用数据库平台的项目
2004-06-06 23:03
399 查看
是个军区的项目,要求是可以自己添加表,然后对这个表添加数据,修改数据,还有各种统计、报表、打印等等。也就是说,他们自己添加一个表,对于这个表的所有操作都得有。想得真好啊。不过还得做,谁让人家是客户。
想到的解决方案是通过把xml存到数据库里去模仿一个三维表结构出来,这样他们建的表就不是真正意义上的表了,而是一个xml,所谓表结构就是schema了。表间关系专门用个表去记载,应该没有太大问题,毕竟表间的关系,在这种以存储数据为主的表中,不会太复杂的。
写给客户看的东西,现在还在进行一种手续,叫做竞标,他们中有些人还不是很相信这种技术,所以要给他们看看怎么做的,就写了,谁知道,这种方式我也是第一次写啊。如果谁要是有经验,倒是希望能赐教了。
读点书真不容易。
1、 难点问题解决一、自定义数据表的存储模式:
表一:表的存储
表二:表间关系
2、 难点问题解决二、如何在客户端按自定义数据表的结构进行输入输出界面排版:
问题的分解:
A、 怎么样添加表、修改表结构?
添加表和修改表结构实质是处理xml形式的schema,在技术实现上不存在任何障碍。
B、 怎么样根据表结构显示数据录入和修改的界面?(这是最困难的一点)
这个问题的关键在于如何根据schema在客户端应用程序的界面里动态的画出与这个表结构相应的控件集合来,进而要求这种集合要符合一些愿望上的规范,比如说对风格的用户选择等等。
动态画上一个用户录入用的控件不是一件困难的事,而schema中包含了该表所有的字段,以及字段的数据类型,我们要做的,无非是一个数据类型和控件类型的对应,这个可以做为一种参照数据,被存放在一个xml中,或者是一张参照型表中。在画的时候,根据数据类型选择不同的控件类型。这个过程,最终可能是需要手工参与调整的,自动生成按照一种通用的方式来安排这些结构,由表单设计者来最终决定控件的布局,这种布局被存放在xsl中,这样,最后普通用户看到的录入和修改的界面是定制过的。
C、 统计、查询的过程是如何实现的?
实质是一个批量数据的显示问题,程序一次性将这个表的数据(xml)读取出来,保存在一个DataSet当中,而DataSet是标准的数据容器,因此,可当作实际的表一样来处理,唯一不同的是,显示在DataGrid当中的标头会受Schema控制。因此,统计、查询,不再是在数据库中完成,而是对内存中表操作完成的。这也部分地解决了xml效率不高的问题。(目前这是一个轻量级的解决方案,对于巨型数据量的表,我们拟采用另一种存储方案,但这不影响程序结构的实现。所以这里从略)
D、 报表打印怎么处理?
报表的设计类似录入界面的设计,自动生成和人工选择相结合的来实现这个过程。
慢慢关注以后的发展吧。从技术角度而言,这倒的确对自己是一个挑战。
想到的解决方案是通过把xml存到数据库里去模仿一个三维表结构出来,这样他们建的表就不是真正意义上的表了,而是一个xml,所谓表结构就是schema了。表间关系专门用个表去记载,应该没有太大问题,毕竟表间的关系,在这种以存储数据为主的表中,不会太复杂的。
写给客户看的东西,现在还在进行一种手续,叫做竞标,他们中有些人还不是很相信这种技术,所以要给他们看看怎么做的,就写了,谁知道,这种方式我也是第一次写啊。如果谁要是有经验,倒是希望能赐教了。
读点书真不容易。
1、 难点问题解决一、自定义数据表的存储模式:
表一:表的存储
表结构 | ID | TableName | Schema | XSL | XML | Type |
说明 | 表名 | 表结构 | 表的表现形式 | 数据 | 表类型 |
表结构 | MainTable | SubTable | MainTableKey | SubTableKey | Relationship |
说明 | 主表 | 从表 | 主表关键字 | 从表关键字 | 关系:(联级删除,联级更新,参照) |
问题的分解:
A、 怎么样添加表、修改表结构?
添加表和修改表结构实质是处理xml形式的schema,在技术实现上不存在任何障碍。
B、 怎么样根据表结构显示数据录入和修改的界面?(这是最困难的一点)
这个问题的关键在于如何根据schema在客户端应用程序的界面里动态的画出与这个表结构相应的控件集合来,进而要求这种集合要符合一些愿望上的规范,比如说对风格的用户选择等等。
动态画上一个用户录入用的控件不是一件困难的事,而schema中包含了该表所有的字段,以及字段的数据类型,我们要做的,无非是一个数据类型和控件类型的对应,这个可以做为一种参照数据,被存放在一个xml中,或者是一张参照型表中。在画的时候,根据数据类型选择不同的控件类型。这个过程,最终可能是需要手工参与调整的,自动生成按照一种通用的方式来安排这些结构,由表单设计者来最终决定控件的布局,这种布局被存放在xsl中,这样,最后普通用户看到的录入和修改的界面是定制过的。
C、 统计、查询的过程是如何实现的?
实质是一个批量数据的显示问题,程序一次性将这个表的数据(xml)读取出来,保存在一个DataSet当中,而DataSet是标准的数据容器,因此,可当作实际的表一样来处理,唯一不同的是,显示在DataGrid当中的标头会受Schema控制。因此,统计、查询,不再是在数据库中完成,而是对内存中表操作完成的。这也部分地解决了xml效率不高的问题。(目前这是一个轻量级的解决方案,对于巨型数据量的表,我们拟采用另一种存储方案,但这不影响程序结构的实现。所以这里从略)
D、 报表打印怎么处理?
报表的设计类似录入界面的设计,自动生成和人工选择相结合的来实现这个过程。
慢慢关注以后的发展吧。从技术角度而言,这倒的确对自己是一个挑战。
相关文章推荐
- maven项目中引入外部数据库链接文件db.properties中的一个bug
- YII框架开发一个项目的通用目录结构:
- 项目实战_Python.利用Python+Flask编写一个高性能实时主动监控平台?
- Django中一个项目使用多个数据库
- 【ITOO-工具】一个霸气的项目管理平台--Confluence(2)
- 一个WEB项目安装包,自动配置数据库,config文件和虚拟目录。。(转)
- 一个rails项目连多个mongo数据库
- 一个项目中使用到的通用函数库(5) 汉字相关操作
- 发一个通用从数据库导出excel、excel导入数据库组件
- 我们的一个已投产项目的高可用数据库实战 - mongo 副本集的搭建详细过程
- 强大的数据库ORM框架-GreenDao项目构建篇(Eclispe平台)
- 一个涉及到使用webservice的,对事务和并发控制要求很高的项目
- 发一个通用从数据库导出excel、excel导入数据库组件
- 刚刚做了一个小项目,存在一个问题,就是如何在数据库中插入多条记录
- Funny Linq Part2: 建一个 Linq 数据库通用的操作类 (下)
- 一个适合小型项目的通用Makefile模板
- 介绍一个免费部分开源项目:基于ARM的嵌入式系统开发平台-CooCox
- 刚刚接手的一个项目要用oracle数据库。把一些SQL SERVER2005的表导入过去以后发现查询时有问题,比如登陆时的查询
- 一个简单的通用协议测试软件(平台)
- 推荐一个企业级跨数据库平台的数据库管理工具