基于数据字典的通用查询系统(四)实体类的设计 1

 

我们分为两个部分对这个模块中的信息进行Class的抽象,一是从数据库结构进行抽像,一中是从查询的构造过程进行抽象。

在列出包含的类之前,有一点需要说明,就是,正如前面分析,我们要对每一个元素都有一个对数据库的表示,和对用户的表示,在这里,我把对数据库的表示统一为属性Exp,对用户的表示统一为Show

一.从数据库结构进行抽像。

1. 表示数据库中的表的类QueryTable

2. 表示数据库中的列的类QueryCol

3. 表示数据库中的连接的类JoinCondition

4. 表示数据类型的枚举ColShowType,就是我们在第二篇中分析的那四种数据类型(数值,日期,字符串,状态位)

5. 表示数据库中状态位的ColStateValue;

6. 为了操作方便,抽像出集合JoinCoditions,ColStateValues;

 

类图如下:


呵呵,介于园子里大侠比较多的原因,类的代码就不都贴在这里了,这里只把QueryCol的实现简单说一下。

我们前面说了,我们一共有四种数据类型,按照正常,也是最合乎情况的方式,应当对这四种类型抽像出一个统一的结口,然后实现四种对应的类。进行与QueryCol进行结合,但是在这里,为了处理方便,QueryCol采用了冗余设计的方式,即有些类似于C C++中的联合,在一些场合下,只用其特定的属性。

一个是用于处理在日期类型下使用的属性Format,因为如前文所说,日期可能是以datetime存储,也可以是以varchar存储,在这种情况下,当用户进行操作后,就有必要有一种方式将进转换成符合数据库中表的列的设计方式的。这时,我们的Format就起了作用。

另外就是处理在状态位时使用的属性ColStateValues属性,它是一个ColStateValue的集合,这样说可能不大好明白,举个列子,比如一个列,state, 当其为0时表示未处理,当其为1时表示已经处理。

那么这个列就有一个ColSateValues的属性,其中第一个元素的Show未处理”,Exp”0”,第二个元素的 Show已经处理”,Exp”1”;

在这里,为 了使以后的查询结果表示直观,我们还要为ColStateValues设计一个GetState的方法,也就是通过一个元素的exp查找这个元素的show的过程。
至于这些附加的信息存在哪,呵呵, 我们在数据库设计时不是有ColStateString吗?在不同的情况下做一下处理就行了。

为了更明白,最有效的方法,贴一下QueryCol的构造函数吧,嘿嘿

Code

 啊,ColStateValues也不能忘了,呵呵,代码如下:

 

Code

 

                这里已经考虑了用字符串等其他非数值信息做状态位的情况。。

 

各位看官别说看的头大啊,小的文笔有限,只能先写成这个样子了,呵呵。

明天该写最关键部分,查询部分类库的设计了,呵

 

系列文章连接

一。SQL语句的构成分析

二。数据库组成结构的分析。

三。数据库设计。

四。实体类设计

五。算法实现

posted @ 2008-12-18 23:41  葛云飞  阅读(2232)  评论(9编辑  收藏  举报