java - 動(dòng)態(tài)表單應(yīng)該如何設(shè)計(jì)數(shù)據(jù)庫?
問題描述
需求是這樣的
在后臺(tái)管理界面錄入表單信息,規(guī)定有哪些表單 (可以增刪)
在前端顯示哪些表單的可以填寫
最后把填寫的表單(產(chǎn)生的真實(shí)數(shù)據(jù))存入數(shù)據(jù)庫
最后填入的數(shù)據(jù)需要能夠方便查詢,排序,過濾的數(shù)據(jù)
我在網(wǎng)上找了挺多資料都不太符合我的需求。 有沒有設(shè)計(jì)大神提供一下設(shè)計(jì)的思路!!!
問題解答
回答1:1、先定義一張控件表,如單行文本,多行文本,單選,多選,時(shí)間等2、再定義一張配置表,用來定義一個(gè)Form有哪些字段,以及字段名字(用來顯示,如姓名,性別),控件類型,字段默認(rèn)值,字段長(zhǎng)度,是否必填等信息3、然后在后臺(tái)把對(duì)應(yīng)配置表添加的記錄存到另一張記錄表,記錄表里存放的可能有多個(gè)單行文本,多個(gè)單選等記錄(多余)4、接著根據(jù)記錄表的信息顯示Form,5、最后填寫完Form提交的時(shí)候,再把填寫的資料保存起來就可以了,6、當(dāng)需要顯示填寫的資料的時(shí)候,根據(jù)配置表和Form對(duì)應(yīng)的記錄,把相應(yīng)的資料顯示在對(duì)應(yīng)的控件中
補(bǔ)充

補(bǔ)充一下關(guān)于查詢這塊。基本思路和一樓一致。但是數(shù)據(jù)的篩選查詢確實(shí)是一個(gè)問題 這樣的話可以考慮加一個(gè)專門負(fù)責(zé)檢索的表

id 主鍵自增 search_id 是數(shù)據(jù)id filed_id 是 字段 的id data 就是數(shù)據(jù)值了
當(dāng)前臺(tái)添加完這條數(shù)據(jù)的時(shí)候 在執(zhí)行回調(diào)把 相關(guān)數(shù)據(jù) 插進(jìn)這個(gè)表里 負(fù)責(zé)搜索就好了 這個(gè)表該加索引就加索引 應(yīng)該夠用了
回答3:最好把數(shù)據(jù)存儲(chǔ)到mongo 如果存儲(chǔ)關(guān)系數(shù)據(jù)庫那就是個(gè)大坑,另外一定要存儲(chǔ)一份匯總數(shù)據(jù),然后在單獨(dú)把表單數(shù)據(jù)存儲(chǔ)一份,比如我新建了10個(gè)表單那么就存儲(chǔ)10個(gè)集合
回答4:支持mongodb存儲(chǔ),像商品屬性這些 各種顏色 各種尺寸的 用mongodb存儲(chǔ)相當(dāng)愉快另,不是所有查詢邏輯都寫在SQL端才行,有一些邏輯提取出來寫在代碼層你會(huì)發(fā)現(xiàn)性能提升不少,可以少了不少join操作。
相關(guān)文章:
1. javascript - immutable配合react提升性能?2. javascript - sublime快鍵鍵問題3. Apache 已經(jīng)把網(wǎng)站根目錄的改為allow from all了,但是服務(wù)器還是不能訪問?4. vue.js - Vue 如何像Angular.js watch 一樣監(jiān)聽數(shù)據(jù)變化5. css - 寫頁面遇到個(gè)布局問題,求大佬們幫解答,在線等,急!~6. javascript - nodejs關(guān)于進(jìn)程間發(fā)送句柄的一點(diǎn)疑問7. 配置Apache時(shí),添加對(duì)PHP的支持時(shí)語法錯(cuò)誤8. 實(shí)現(xiàn)bing搜索工具urlAPI提交9. phpstudy8.1支持win11系統(tǒng)嗎?10. javascript - 移動(dòng)端上不能實(shí)現(xiàn)拖拽布局嗎?

網(wǎng)公網(wǎng)安備