2017-04-19 142 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