基于视图的增删改查操做(颠覆传统思惟吧)

         视图是关系型数据库提供的一个很是强大好用的功能,它提供了一种基于基本表(相对视图的虚拟表而言)的数据提取重组和分隔技术。sql

         视图经过对一个或者多个基本表进行数据提取和从新组织,将数据以用户但愿的方式从新呈现。数据库

         须要注意的是,视图的主要目的就是从新组织多个基础表的数据以新的方式展示,重点是数据展现,并不涉及到增删改的功能。(另外一个主要功能是数据隔离)工具

          对于现有市场上不一样的数据库来讲,对于视图的增删改都不支持,或者说支持的很很差,有不少约束条件。编码

         有人说过,产品功能是有限的,用户需求是无限的,真理。我碰见了有无限需求的客户。spa

         先说一下用户大致需求:设计

     咱们的产品是一个智能开发平台,客户使用可视化的方式能够定义表单和流程,使用零编码的方式就能够快速开发出一套信息化管理系统。这种方式一直运行的很好,直到有一天。3d

     客户:咱们有一个系统是c/s结构的,想改为b/s结构,用大家的平台能作吗?视频

     我: 能够啊,很是快。blog

     客户:我看了大家的视频介绍,基本都是一个表单一个数据表对应的,可是咱们的系统有时候一个表单要对应好几个数据表,这个怎么办呀?递归

     我:用视图功能来定义表单就能够。

     客户:我试了,视图功能只能查看,不能新增和修改啊

     。。。。。(确实如此)     

  其实,在产品的研发和使用中,一直都不断有客户提出过这样的需求,为此也丢失了很多客户,痛定思痛,不能再痛。因而,一个新的视图操做概念诞生了

基于视图的增删改查操做

  • 前言:

    本文中全部操做都采用图形界面的方式完成,并不涉及到任何程序编写。因此,即便您不懂程序,也没有关系。

  • 基本概念    

    • 视图:不用多作解释,知道的都清楚,不知道的查书。
    • 基础表:本文的基础表和你们理解的基础表有一点区别。你们理解的或者书本上介绍的基础表指的是实际的物理数据表,本文的基础表指的是视图所依赖的实际物理表或者视图。(有点绕,由于视图能够再次经过“视图”的功能进行数据重组)。因此本文中只要视图引用的表或者视图,都叫基础表
    • 物理表:数据库中真实的表
  • 场景

    基于视图的增删改操做,他不是提供一个接口工具,让您输入sql语句来完成,而是提供一个图形界面,经过 视图定义来自定生成操做界面,在操做界面进行新增、修改、删除和查询功能。在用户对视图进行增删改查操做时,后台运行的是视图分析引擎,全部的视图操做都交给视图引擎来完成。

  • 实现原理

  原理并不复杂,一句话,全部对视图的增删改查操做,都经过视图引擎和表单引擎转化到视图对应的基础表的操做(若是基础表自己也是视图,那么就递归进行转化,直到找到最后的物理表)。

    全部真理都是简单明了的,但要证实他,确实很是复杂的一件事情。视图引擎和表单引擎就是如此。特别是当视图对应的基础表之间有外键关系时,要维护外键关系(同时添加,补充增长等)须要不少细心地判断。

  • 图形界面

    一、视图定义

     这里提供了一个向导式的视图构建,若是您熟悉sql语句,直接写视图的sql也能够。

      第一步:选择基础表

      

      第二步:选择须要的字段

      

      第三步:设置表之间的关系:系统其实已经帮您作好了所选基础表的表之间的关联关系,您能够再次修改

      

    二、生成视图界面(设计图)

      视图sql语句构建好后,就能够生成视图了,系统会作两部分工做。

      一个是根据输入的视图sql语句,在数据库中生成真实的视图。

      另外一个是生成针对这个视图进行的增删改查的界面。

      下面是自动生成的设计界面(编辑界面)

      

      三、视图界面调整

        您能够在系统自动生成的设计界面上进行调整为更好看的界面,这里就不作调整了,直接使用系统生成的格式。

        自动生成界面后,就能够在视图的编辑页面进行操做了

        四、列表

        这是自动生成的视图的列表界面,能够经过这个界面进行视图数据的增删改查、导出、统计等。

        

      五、新增记录

        

        这里须要说明一点,咱们建立的视图是从两个基础表获取数据的,一个是用户表的登陆名和姓名,另外一个部门表的部门名称。因此新增数据的时候,要从当前界面取值,而后分别新增到对应的部门表和用户表,同时仍是设置这两条数据之间的关联关系(“用户属于哪一个部门”这个关系)

      六、修改记录

        修改界面和新增界面是相同的,修改的时候,也是要把用户修改的数据更新到对应的物理表中

       七、删除记录

        这里须要注意的是:删除的时候,只删除这个视图的主表(在本文的演示案例中,用户表就是这个视图的主表)对应的数据,而不能删除部门表的数据。在其余案例中,若是构成视图的基础表之间没有关联关系(主外键),那么就同时删除全部的基础物理表的数据。

  • 技术细节(待续)

相关文章
相关标签/搜索