zoukankan      html  css  js  c++  java
  • 基于数据字典的通用查询系统(二)数据库组成结构的分析

     

    呵呵,第一次写技术文章,没想到有这么多人关注,谢谢大家哈,有看客咱就接着写,写的不好您就拍砖。

    先说一下SQL注入的问题,这个确实没有考虑,因为原来一直在做winform,经验甚少,很多都是摸索着来的,所以对这部分不大了解。

    好了,接着我们的话题,遵守承诺,今天主题是对数据库组成结构的分析。

     

    我们日常在设计,使用数据库时,主要考虑以下几内容。

    1.      

    在一般的数据库中,一般的表都是对应一种实体的相关信息,如一张订单,订单中的一条记录。

    2.       表中的列

    表中的列表明了实体的每一个属性。

    3.       列的数据结构

    是用整型,浮点,还是日期,字符串 ,列的数据结构取决于列所要表达的信息。

    4.       表和表之间的关系

    即表和表之间是怎样进行关联的,也就是实体信息之间的关联方式。

     

    下面沿用上一篇的方式 ,对这些结构在我们这个模块中的地位进行分析。

    首先,从数据库中的元素到实体的表示是有一个映射关系的,如一张订单,我们平时和用户表达时,是一张订单,但是在数据库中,应该是表orders,

    而所说的订单号,应该是表orders,中的no列。

    类似的,进一步说,其实在用户构建查询时,这些操作也是必须的,如他们选择的大于,我们在sql中应该表达为”>”,他们选择并且,我们应当表达为“and”,即如上一篇中的一个回复所说,应当:

    You need provide a middle tier to seperate your DB and your client.
    this tier provides bussinss-related column list to your client.

     

    这种Middle Tire就要求我们再以后的设计中,对于第每一个有意义的class都要至少有两个属性,一个是显示给用户的,一个是用来组成sql语句的。

     

    表和列的对于我们来说比较好处理。

    这里主要说一下数据结构。

    要考虑以下几个问题。

    1.       用户所见的数据结构,和真实的数据结构不是一一对应的。

    比如,我们在数据库中,数值类型就有int,double,decimal,串有varchar,nchar…等等,但是对于要查询信息的用户来讲,他不需要知道这么具体的东西,他只要知道一种属性是数值,是字符串就可以。

    2.       用户见的数据结构,和真的结构是有偏差的。

    这个,最典型的就是时间的处理,一些数据库的设计为了处理方便,把日期用8位的串存储,如20081217,也有的直接用datetime存储,但是不管用什么进行存储,这个属性反映到用户就是实实在在的时间

    3.       用户见的数据结构,需要一定的附加信息。

    典型的例子就是状态位,我们常会用一个int tinyint来存储一条记录的状态,比如0表示未处理,1表示正在处理,2表示已经处理等。

    你没有用必要让用户知道012的含义,但是你要能让他通过查询能够准确的表达自己的意思。即,他可以去查“今天有多少张订单已经处理,而不是今天有多少张订单状态为2”,呵呵,这就又回到我们前面说的那个middle tier的问题了。

                                    结合上面这几种情况。我们可以大概的把数据分成四种

                                    第一种,表示数值的数据,可以是int,可以是decimal,…

                                    第二种,字符串 ,这个不用多解释了吧。

                                    第三种,日期和时间,可以是datetime,也可以是char

                                    第四种,状态位 比如未处理,已处理等。

                                    最后,说一下表的连接

                                    表的连接,在设计时,有内连接,外连接,一对一,一对多等,但是在客户看来,连接的含义是他可以查询哪些附加的信息,比如他在查销售记录时,可以查询这条记录所在的订单,他在查一个订单时,可以列出订单的所有销售记录。

    因此,对于各种连接的处理,在用户的层面,只是表示为一种关系的信息。

    好了,呵呵,今天的任务完成,分析了数据库中各个元素,明天争取奉上数据库的设计,哈。。

    等各位看官交流拍砖,哈~~~~

    系列文章连接

    一。SQL语句的构成分析

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

    三。数据库设计。

    四。实体类设计

    五。算法实现

  • 相关阅读:
    Jboss
    AOP
    Spring AOP原理及拦截器
    深度解析Struts2中ValueStack
    struts2 ValueStack的作用
    理解ValueStack的基本机制
    Strus2中关于ValueStack详解
    struts2中的值栈对象ValueStack
    吴裕雄--天生自然Numpy库学习笔记:NumPy 广播(Broadcast)
    吴裕雄--天生自然Numpy库学习笔记:NumPy 高级索引
  • 原文地址:https://www.cnblogs.com/geyunfei/p/1357160.html
Copyright © 2011-2022 走看看