视图是关系型数据库提供的一个很是强大好用的功能,它提供了一种基于基本表(相对视图的虚拟表而言)的数据提取重组和分隔技术。sql
视图经过对一个或者多个基本表进行数据提取和从新组织,将数据以用户但愿的方式从新呈现。数据库
须要注意的是,视图的主要目的就是从新组织多个基础表的数据以新的方式展示,重点是数据展现,并不涉及到增删改的功能。(另外一个主要功能是数据隔离)工具
对于现有市场上不一样的数据库来讲,对于视图的增删改都不支持,或者说支持的很很差,有不少约束条件。编码
有人说过,产品功能是有限的,用户需求是无限的,真理。我碰见了有无限需求的客户。spa
先说一下用户大致需求:设计
咱们的产品是一个智能开发平台,客户使用可视化的方式能够定义表单和流程,使用零编码的方式就能够快速开发出一套信息化管理系统。这种方式一直运行的很好,直到有一天。3d
客户:咱们有一个系统是c/s结构的,想改为b/s结构,用大家的平台能作吗?视频
我: 能够啊,很是快。blog
客户:我看了大家的视频介绍,基本都是一个表单一个数据表对应的,可是咱们的系统有时候一个表单要对应好几个数据表,这个怎么办呀?递归
我:用视图功能来定义表单就能够。
客户:我试了,视图功能只能查看,不能新增和修改啊
。。。。。(确实如此)
其实,在产品的研发和使用中,一直都不断有客户提出过这样的需求,为此也丢失了很多客户,痛定思痛,不能再痛。因而,一个新的视图操做概念诞生了
本文中全部操做都采用图形界面的方式完成,并不涉及到任何程序编写。因此,即便您不懂程序,也没有关系。
基于视图的增删改操做,他不是提供一个接口工具,让您输入sql语句来完成,而是提供一个图形界面,经过 视图定义来自定生成操做界面,在操做界面进行新增、修改、删除和查询功能。在用户对视图进行增删改查操做时,后台运行的是视图分析引擎,全部的视图操做都交给视图引擎来完成。
原理并不复杂,一句话,全部对视图的增删改查操做,都经过视图引擎和表单引擎转化到视图对应的基础表的操做(若是基础表自己也是视图,那么就递归进行转化,直到找到最后的物理表)。
全部真理都是简单明了的,但要证实他,确实很是复杂的一件事情。视图引擎和表单引擎就是如此。特别是当视图对应的基础表之间有外键关系时,要维护外键关系(同时添加,补充增长等)须要不少细心地判断。
这里提供了一个向导式的视图构建,若是您熟悉sql语句,直接写视图的sql也能够。
第一步:选择基础表
第二步:选择须要的字段
第三步:设置表之间的关系:系统其实已经帮您作好了所选基础表的表之间的关联关系,您能够再次修改
视图sql语句构建好后,就能够生成视图了,系统会作两部分工做。
一个是根据输入的视图sql语句,在数据库中生成真实的视图。
另外一个是生成针对这个视图进行的增删改查的界面。
下面是自动生成的设计界面(编辑界面)
您能够在系统自动生成的设计界面上进行调整为更好看的界面,这里就不作调整了,直接使用系统生成的格式。
自动生成界面后,就能够在视图的编辑页面进行操做了
这是自动生成的视图的列表界面,能够经过这个界面进行视图数据的增删改查、导出、统计等。
这里须要说明一点,咱们建立的视图是从两个基础表获取数据的,一个是用户表的登陆名和姓名,另外一个部门表的部门名称。因此新增数据的时候,要从当前界面取值,而后分别新增到对应的部门表和用户表,同时仍是设置这两条数据之间的关联关系(“用户属于哪一个部门”这个关系)
修改界面和新增界面是相同的,修改的时候,也是要把用户修改的数据更新到对应的物理表中
这里须要注意的是:删除的时候,只删除这个视图的主表(在本文的演示案例中,用户表就是这个视图的主表)对应的数据,而不能删除部门表的数据。在其余案例中,若是构成视图的基础表之间没有关联关系(主外键),那么就同时删除全部的基础物理表的数据。