zoukankan      html  css  js  c++  java
  • 基于数据字典的通用查询系统(四)实体类的设计 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语句的构成分析

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

    三。数据库设计。

    四。实体类设计

    五。算法实现

  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/geyunfei/p/1357896.html
Copyright © 2011-2022 走看看