我正在使用传统的LAMP堆栈构建数据存储和可视化系统。
用户需要能够为他们将要提交的数据行定义数据类型(字符串,整数,十进制,布尔值)和限制(长度,小数位,自动增量等)。唯一的两个常量是第一列中的自动递增ID和第二列中的Current_Timestamp。
用户数据示例:
23,2017-04-19 12:00:00,239,1044.72,0,0,1,0,1
-
931,2017-04-19 12:00:00,200,12
目前,这些是我想到的解决方案:
选项1
允许用户通过将其选择转换为等效的SQL alter table来修改表结构。为了简单起见,让我们假设每个用户都获得一个表,一旦设置它就永远不需要修改。
的UserData
ID, TS, UserValue, UserValue2, UserValue3....
选项2
创建字符串,十进制,布尔等表,其中包含具有外键的所有用户的数据,另一个外键用于保存变量类型的附加选项的表(保存数据的列的选项将被配置为保存任何用户可以输入的最大可能值。
字符串
ID, TS, Value, User(FK), VariableType(FK)
小数
ID, TS, Value, User(FK), VariableType(FK)
等.....
数据需要可搜索,因此使用字符串表示所有数据的解决方案都无法正常工作。
我的任何一个解决方案是否合适,或者我在这里遗漏了什么?
答案 0 :(得分:1)
如果您发现没有问题允许用户更改表格以满足他们的需求,那么这是一个可行的选择。否则,如果您想在任何地方使用标准化数据库结构,请考虑添加使用JSON Data type的列。此数据类型将允许您的用户在此列中存储他们想要的任何数据作为JSON对象。然后,您的用户可以从JSON列查询特定值,然后在其代码中将数据作为常规JSON对象处理。如果需要,还可以为JSON对象键建立索引,以便更快地进行查询。