基於視圖的增刪改查操做(顛覆傳統思惟吧)

         視圖是關係型數據庫提供的一個很是強大好用的功能,它提供了一種基於基本表(相對視圖的虛擬表而言)的數據提取重組和分隔技術。sql

         視圖經過對一個或者多個基本表進行數據提取和從新組織,將數據以用戶但願的方式從新呈現。數據庫

         須要注意的是,視圖的主要目的就是從新組織多個基礎表的數據以新的方式展示,重點是數據展現,並不涉及到增刪改的功能。(另外一個主要功能是數據隔離)工具

          對於現有市場上不一樣的數據庫來講,對於視圖的增刪改都不支持,或者說支持的很很差,有不少約束條件。編碼

         有人說過,產品功能是有限的,用戶需求是無限的,真理。我碰見了有無限需求的客戶。spa

         先說一下用戶大致需求:設計

     咱們的產品是一個智能開發平臺,客戶使用可視化的方式能夠定義表單和流程,使用零編碼的方式就能夠快速開發出一套信息化管理系統。這種方式一直運行的很好,直到有一天。3d

     客戶:咱們有一個系統是c/s結構的,想改爲b/s結構,用大家的平臺能作嗎?視頻

     我: 能夠啊,很是快。blog

     客戶:我看了大家的視頻介紹,基本都是一個表單一個數據表對應的,可是咱們的系統有時候一個表單要對應好幾個數據表,這個怎麼辦呀?遞歸

     我:用視圖功能來定義表單就能夠。

     客戶:我試了,視圖功能只能查看,不能新增和修改啊

     。。。。。(確實如此)     

  其實,在產品的研發和使用中,一直都不斷有客戶提出過這樣的需求,爲此也丟失了很多客戶,痛定思痛,不能再痛。因而,一個新的視圖操做概念誕生了

基於視圖的增刪改查操做

  • 前言:

    本文中全部操做都採用圖形界面的方式完成,並不涉及到任何程序編寫。因此,即便您不懂程序,也沒有關係。

  • 基本概念    

    • 視圖:不用多作解釋,知道的都清楚,不知道的查書。
    • 基礎表:本文的基礎表和你們理解的基礎表有一點區別。你們理解的或者書本上介紹的基礎表指的是實際的物理數據表,本文的基礎表指的是視圖所依賴的實際物理表或者視圖。(有點繞,由於視圖能夠再次經過「視圖」的功能進行數據重組)。因此本文中只要視圖引用的表或者視圖,都叫基礎表
    • 物理表:數據庫中真實的表
  • 場景

    基於視圖的增刪改操做,他不是提供一個接口工具,讓您輸入sql語句來完成,而是提供一個圖形界面,經過 視圖定義來自定生成操做界面,在操做界面進行新增、修改、刪除和查詢功能。在用戶對視圖進行增刪改查操做時,後臺運行的是視圖分析引擎,全部的視圖操做都交給視圖引擎來完成。

  • 實現原理

  原理並不複雜,一句話,全部對視圖的增刪改查操做,都經過視圖引擎和表單引擎轉化到視圖對應的基礎表的操做(若是基礎表自己也是視圖,那麼就遞歸進行轉化,直到找到最後的物理表)。

    全部真理都是簡單明瞭的,但要證實他,確實很是複雜的一件事情。視圖引擎和表單引擎就是如此。特別是當視圖對應的基礎表之間有外鍵關係時,要維護外鍵關係(同時添加,補充增長等)須要不少細心地判斷。

  • 圖形界面

    一、視圖定義

     這裏提供了一個嚮導式的視圖構建,若是您熟悉sql語句,直接寫視圖的sql也能夠。

      第一步:選擇基礎表

      

      第二步:選擇須要的字段

      

      第三步:設置表之間的關係:系統其實已經幫您作好了所選基礎表的表之間的關聯關係,您能夠再次修改

      

    二、生成視圖界面(設計圖)

      視圖sql語句構建好後,就能夠生成視圖了,系統會作兩部分工做。

      一個是根據輸入的視圖sql語句,在數據庫中生成真實的視圖。

      另外一個是生成針對這個視圖進行的增刪改查的界面。

      下面是自動生成的設計界面(編輯界面)

      

      三、視圖界面調整

        您能夠在系統自動生成的設計界面上進行調整爲更好看的界面,這裏就不作調整了,直接使用系統生成的格式。

        自動生成界面後,就能夠在視圖的編輯頁面進行操做了

        四、列表

        這是自動生成的視圖的列表界面,能夠經過這個界面進行視圖數據的增刪改查、導出、統計等。

        

      五、新增記錄

        

        這裏須要說明一點,咱們建立的視圖是從兩個基礎表獲取數據的,一個是用戶表的登陸名和姓名,另外一個部門表的部門名稱。因此新增數據的時候,要從當前界面取值,而後分別新增到對應的部門表和用戶表,同時仍是設置這兩條數據之間的關聯關係(「用戶屬於哪一個部門」這個關係)

      六、修改記錄

        修改界面和新增界面是相同的,修改的時候,也是要把用戶修改的數據更新到對應的物理表中

       七、刪除記錄

        這裏須要注意的是:刪除的時候,只刪除這個視圖的主表(在本文的演示案例中,用戶表就是這個視圖的主表)對應的數據,而不能刪除部門表的數據。在其餘案例中,若是構成視圖的基礎表之間沒有關聯關係(主外鍵),那麼就同時刪除全部的基礎物理表的數據。

  • 技術細節(待續)

相關文章
相關標籤/搜索