簡體   English   中英

如果數據庫列可能不同,如何將數據存儲在SQL數據庫中?

[英]How do I store data in an SQL database if the database columns can be different?

我正在創建一個ASP.NET Web應用程序,允許用戶將紙質表單數字化。 用戶將導入他們自己的表單,這些表單將被轉換為HTML,並插入占位符以接受輸入表單中的值。

使用此導入紙質表單上的字段,網站將根據所需信息創建輸入表單。 還可以為特定表單創建“模板”,允許用戶自動填充通常不隨每個表單填充而更改的任何數據。 用戶還可以保存他們尚未完成的表單,以便稍后完成/查看。

我的問題是:我如何存儲這些數據? 我不能真正使用傳統的數據庫表,因為Form X看起來不像Form Y,並且需要完全不同的數據。 我有一個SQL數據庫來存儲數據(我也需要這個用於網站的其他方面),但我不能簡單地將所有表單數據存儲在一個表中,甚至每個表單都有單獨的表,因為這樣做是不切實際的。更大的規模。

我最初的想法是使用JSON,但我完全不知道從哪里開始。 我可以將JSON數據放入常規SQL數據庫列嗎? 這可以用於生成代碼來構建Web表單,以允許用戶使用任何設備輕松填寫表單(根據我的設計要求)?

我認為使用像mongoDB或Arangodb這樣的文檔數據庫可以很好地解決您的問題。 現在的現實是,應用程序可以,有時應該使用多個數據庫。

話雖如此,如果我必須使用關系數據庫,我會將您的表單轉換為3個表。 第一個頂級表單只會存儲以下內容:

  • 表格名稱,
  • 表格ID,
  • 等等...

第二個表將捕獲表單字段,看起來像是這樣的:

  • FormID
  • 字段ID
  • 字段名稱
  • fiel類型(int,varchar等...)
  • 沒有。
  • 等......

第三個表將捕獲用戶輸入的信息:

  • 用戶身份
  • 表格ID
  • 字段ID
  • 創建日期時間
  • 最后修改日期時間
  • 等等...

請注意,通過將字段存儲在行而不是列中,您使用不同類型的表單並不重要。

我應該提一下,上面的表定義並不是以任何方式完成,它們是為了讓您了解如何開始。

最后,請注意,許多關系數據庫允許您按照建議直接在數據庫中存儲JSON,但這可能不是一個非常好的選項,具體取決於您使用的是哪個數據庫。 以下是在mysql中存儲JSON的示例,僅供參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM