我正在开发一个记录来自不同形式的数据的应用程序。管理员可以(并且将会)动态构建新表单。我想知道将这些数据保存在数据库中的正确方法是什么?我的第一个猜测是使用 EVA,但考虑到所有的负面宣传,我有点犹豫。
假设我有两种形式:
#form 1
description = TextField()
score = IntegerField()
#form 2
feedback = TextField()
NOR_score = IntegerField()
无法预测可能属性的数量。我正在玩弄两个想法,但也许你能提出一个更好的方法。
想法一:
unique_id | entity | attribute | value
1 | form 1 | description | test123
2 | form 1 | score | 90
3 | form 2 | feedback | blabla
4 | form 2 | NOR_score | 5
想法二:
unique_id | entity | value
1 | form 1 | {"description": "test123", "score":"90"}
2 | form 2 | {"feedback": "blabla", "NOR_score":"5"}
在此先感谢您的任何建议。
您的示例(想法 II)看起来像是在展示如何存储对表单的响应。你会以相同的方式存储表单描述(由你的管理员创建)吗?
如果你走这条路,这意味着你必须将表单的完整描述存储为一个非常长的文本字符串。您将无法在表单之间重复使用问题。您将无法(轻松地)查询以查找哪个表单有特定问题。可能会有更多有趣的形式问题类型,例如多项选择,但它不会很漂亮(并且您将无法重复使用选项集)。
我不确定您为什么认为需要 EAV 解决方案。一个非常简单的模式可能如下所示:
这行不通吗?