2017-04-19 102 views
2

我正在使用傳統的LAMP堆棧構建數據存儲和可視化系統。在MySQL中存儲動態數據和數據類型

用戶需要能夠爲他們要提交的數據行定義數據類型(字符串,整型,小數,布爾值)和限制(長度,小數位,自動增量等)。唯一的兩個常量是第一列中的自動遞增ID和第二列中的Current_Timestamp。 239 1044.72 0 0 1 0

23,2017年4月19日12:00:00,,,,,,,1

- :

用戶數據的例子

931,2017年4月19日12:00:00,200,12

目前,這些是我想到的解決方案:

選項1

允許用戶通過將他們的選擇到SQL改變表相當於修改表結構。爲了簡單起見,我們假設每個用戶都得到一張表,並且一旦它被設置,就不需要修改。

的UserData

ID, TS, UserValue, UserValue2, UserValue3.... 

選項2

創建的字符串,十進制,布爾,與一個外鍵的用戶和其它外鍵來保存所有用戶數據等表一個包含變量類型的附加選項的表格(保存數據的列的選項將被配置爲保存任何用戶可以輸入的最大可能值)。

字符串

ID, TS, Value, User(FK), VariableType(FK) 

小數

ID, TS, Value, User(FK), VariableType(FK) 

等.....

的數據需要這樣使用字符串對所有數據的解決方案,可搜索不會工作。

我的解決方案看起來是否合適,或者我在這裏錯過了什麼?

回答

1

如果您看不到允許用戶更改表格以滿足其需求的問題,那麼這是一個可行的選項。否則,如果你想要一個標準化的數據庫結構,可以考慮添加一個使用JSON Data type的列。這種數據類型將允許您的用戶將任何他們想要的數據作爲JSON對象存儲在此列中。然後,您的用戶可以從JSON列中查詢特定值,然後將其作爲代碼中的常規JSON對象處理。如果需要,還可以對JSON對象鍵進行索引以加快查詢速度。

+0

接受這個,因爲它可能是我想要的最好的解決方案。 – HNA