• 基于视图的增删改查操作(颠覆传统思维吧)


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

             视图通过对一个或者多个基本表进行数据提取和重新组织,将数据以用户希望的方式重新呈现。

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

              对于现有市场上不同的数据库来说,对于视图的增删改都不支持,或者说支持的很不好,有很多约束条件。

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

             先说一下用户大体需求:

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

         客户:我们有一个系统是c/s结构的,想改成b/s结构,用你们的平台能做吗?

         我: 可以啊,非常快。

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

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

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

         。。。。。(确实如此)     

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

    基于视图的增删改查操作

    • 前言:

        本文中所有操作都采用图形界面的方式完成,并不涉及到任何程序编写。所以,即使您不懂程序,也没有关系。

    • 基本概念    

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

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

    • 实现原理

      原理并不复杂,一句话,所有对视图的增删改查操作,都通过视图引擎和表单引擎转化到视图对应的基础表的操作(如果基础表本身也是视图,那么就递归进行转化,直到找到最后的物理表)。

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

    • 图形界面

        1、视图定义

         这里提供了一个向导式的视图构建,如果您熟悉sql语句,直接写视图的sql也可以。

          第一步:选择基础表

          

          第二步:选择需要的字段

          

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

          

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

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

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

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

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

          

          3、视图界面调整

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

            自动生成界面后,就可以在视图的编辑页面进行操作了

            4、列表

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

            

          5、新增记录

            

            这里需要说明一点,我们创建的视图是从两个基础表获取数据的,一个是用户表的登录名和姓名,另一个部门表的部门名称。所以新增数据的时候,要从当前界面取值,然后分别新增到对应的部门表和用户表,同时还是设置这两条数据之间的关联关系(“用户属于哪个部门”这个关系)

          6、修改记录

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

           7、删除记录

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

    • 技术细节(待续)

  • 相关阅读:
    利用相关的Aware接口
    java 值传递和引用传递。
    权限控制框架Spring Security 和Shiro 的总结
    优秀代码养成
    Servlet 基础知识
    leetcode 501. Find Mode in Binary Search Tree
    leetcode 530. Minimum Absolute Difference in BST
    leetcode 543. Diameter of Binary Tree
    leetcode 551. Student Attendance Record I
    leetcode 563. Binary Tree Tilt
  • 原文地址:https://www.cnblogs.com/chegan/p/4566777.html
Copyright © 2020-2023  润新知