動態可配置表單的設計構思

一、引言數據庫

   在瀏覽網站的時候,咱們常常會提交一些信息,這些信息也被叫作「表單」,提交信息專業一點也叫作提交表單。網絡

   一般會提交的信息就是註冊信息,登陸信息,登錄以後還須要提交詳細的我的信息,其中就會包括學歷,地址,項目經驗等等。數據庫設計

   還有就是在電商網站,咱們還會提交訂單,添加收藏,添加購物車。網站

   在網絡中,咱們天天都會遇到各類各樣的表單,隨着網絡的普及,信息化的普及,不少信息都是經過網絡提交的,咱們會頻繁的和表單打交道。spa

 

那麼什麼是表單呢?設計

   表單指的是用戶在頁面中填寫的信息的總和,也是填寫的信息項的總和。表單的主要做用是收集信息。3d

 

   在百度百科中是這麼解釋的。blog

表單在網頁中主要負責數據採集功能。一個表單有三個基本組成部分: 排序

一、表單標籤;接口

二、表單域,包含了文本框、密碼框、隱藏域多行文本框複選框單選框、下拉選擇框和文件上傳框等;

三、表單按鈕。

 

 

二、表單的設計

2.一、靜態表單

   表單全部的表單項事先已經固定,好比說有多少個表單項,每一項都是什麼類型,那些須要不會再前臺顯示,這些表單項的排序,顯示的控制,大可能是固定的。

   在應用開發完成以後,若是須要修改表單項,好比說增長表單項,調整表單項的顯示位置。表單項分組顯示,分組控制。這些都會須要修改代碼,甚至是修改數據庫才能知足要求。

   全部人都但願表單是動態的,動態管理表單項。

 

2.二、動態表單

2.2.一、第一種

 

 

 

優勢:

   簡單明瞭。

   配置簡單。

 

缺點:

   表單信息沒有分類,不便於顯示控制。好比說我的信息中的基本信息,學歷信息,聯繫信息,不能動態的分塊顯示。

   屬性不能複用。好比說學歷信息,聯繫信息,其實我的表單和企業表單,甚至其餘表單也會用到,沒有必要重複配置。

 

2.2.二、第二種

 

 

缺點:

   沒有支持表單的模板化。

 

優勢:

   配置更靈活,不復雜。

   支持屬性組的複用。好比說學歷信息屬性組,聯繫方式屬性組。

   屬性組能夠排序,控制顯示。

 

2.2.三、第三種

 

 

缺點:

   配置複雜,稍顯冗餘。

   不容易理解。

 

優勢:

   靈活,強大。

   最大化支持動態表單的動態配置須要。

   相同表單,支持多個模板,支持啓用與禁用模板。

 

2.三、靜態+動態

   部分靜態表單+動態表單

 

三、總結

   以上是我設想的三種動態表單的實現方式,圖中是數據存儲的簡單表述。

   若是你們有其餘的方式,也請留言。若是容許,我將會補充在本文的後面。

   共享出來,能夠幫助更多的人,讓咱們一塊兒努力,將動態表單的實現設計的更好更強大。

 

後記

 

2013-09-03 14:40

動態表單的設計,除了要考慮存儲,還要考慮查詢。保存的數據如何查詢,由於原來是列級別的數據,如今都被行化了。

舉個例子:開始咱們會設計一張表,有姓名列,性別列,簡介列。可是如今是姓名行,性別行,簡介行。若是是關係數據庫,原來的常規查詢SQL都會失效,怎麼辦呢?是用特殊方式實現,仍是將這些數據導出到常規數據庫設計中,用老方法查詢。

這可能會用到OLTP(在線聯機事務處理)和OLAP(在線聯機分析處理)的概念。

還 有一種辦法,就是講應用分爲兩個部分,命令與查詢。命令包括:增刪改,是對數據的維護。查詢就是獲取數據,可能包括各類獲取接口,獲取參數,獲取維度。這 方面比較有名的就是CQRS(Command Query Responsibility Segregation命令查詢職責分離)。能夠將它擴展到系統設計上來。

 

還有就是Field的類型衆多,有一些類 型的儲存仍是須要琢磨一下的。常規的單行文本也就是直接存儲一個值就能夠了,單多選類型須要存儲的是key,尤爲是都選,須要存儲的是多個選中項的 key,多個的個數是不定的,這些key是存儲在一列中,仍是用行來存儲,這也是一個撓頭的地方!!!

 

其實我的還有 一個想法。#數據庫#CRUD,create,read,update,delete究竟是不是增刪改查呢?我想你們對於其中的read是否等於差是有一 些疑惑的!read按照字面來講就是讀取,讀取和查詢仍是有區別的吧。我的以爲讀取!=查詢,read只是單個數據的獲取,查詢是有條件的多行數據的獲 取。因此說CRUD不是增刪改查,更應該叫作增刪改讀。

 

表單項還多是一個樹形的選擇項,對於這方面尚未想出好的解決方案。只是以爲應該封裝成一個獨立控件,對於樹形選項的數據加載,選擇以後的存儲,已經未來的匹配查詢,都應該有一整套的封裝。好比說精確單編號匹配,多編號匹配,層級匹配等等。

 

還有一些表單項是單多選是結合的,好比說第一級是隻能選擇單個,下一級就能夠選擇多個了。

 

還有一些樹形表單項是隻能在葉子節點多選。

 

單選和多選的表單項的具體項能夠從數據源中加載。先設置數據源,也就是一些key/value的鍵值對,一組,而後再添加單選或者多選表單項的時候,選擇數據源來填充表單項。

相關文章
相關標籤/搜索