我试图实现一个自定义的形式生成器,类似于那些提供 谷歌.

虽然我已经创建了一个简单的用户界面,以创造这些定制的形式与我的问题在于数据库的设计。在创建形式,JSON执行保存在数据库(谨提高这种),引用的建立形式,用户将会看到的。

后提交的,我喜欢商店的所有领域的形式在一个数据库。以下id使用的结构设计的数据库,这是很容易。然而 我想每个领域可供搜索.

问题:

  1. 是否有更好的方式来存储的形式设计?
  2. 什么是数据结构/模型将适合储存的形成的结果吗? 我已经看到,EAV可能是一个可行的,但由于不同类型的输入参与(下拉、checkbox文本,textarea)这可能成为繁琐。
  3. 其结构将允许最简单的搜索和允许使用其中条款? Java例给出,不会允许我这么做很好
有帮助吗?

解决方案

EAV是一个有效的选项-它可能是复杂和令人尴尬什么有效地变成无类型的数据。

XML XPath也将是一个选项: http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html

我认为大多数情况下将会需要你来产生的动态SQL如果段搜寻可能有所不同。

其他提示

EAV工作的很好因为你可能经常地图价值观纳入一些基本的类型。在一个个人项目,我们有一个表格:

entity_id     : INTEGER REFERENCES entities(id)
attr_id       : INTEGER REFERENCES attributes(id)
value_bool    : BOOLEAN
value_int     : INTEGER
value_string  : VARCHAR
value_text    : TEXT

和相关信息attr_id被存储在一个不同的表我们在哪里可以找到的属性 类型和名称。还差异之间的串并文本,文本可以有一个全文搜索的索引,它同时串基本相匹配索引只。

当你想要查询一个attrbute,你看看它的特性表,然后contruct的查询通过建立正确的条件,如"在attr_id=12和value_string='为sfd'".

速查询,请有条件的索引对双列,像这样:

CREATE INDEX test ON eav(attr_id, value_int) WHERE value_int IS NOT NULL;

一种替代方案是,还有一个自定义数据库的功能,可以索引和搜索的一个柱包含一个JSON领域。更多的工作艰难...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top