【问题标题】:Database schema considerations for a dynamic form creation/survey web application动态表单创建/调查 Web 应用程序的数据库架构注意事项
【发布时间】:2012-01-15 10:23:54
【问题描述】:
我正在构建一个 Web 应用程序,它基本上允许“管理员”创建具有任意数量和组合的表单元素(复选框、组合框、文本字段、日期字段、单选组等)的表单。 “用户”将登录此应用程序并填写管理员创建的表单。
我们将 MySQL 用于我们的数据库。有没有人实现了具有这种功能的应用程序?我的第一个想法是序列化具有 JSON 的表单模式并将其作为字段存储在我的一个数据库表中,然后序列化来自不同用户的提交并将其存储在 mysql 表中。另一个想法:这是否适合 MongoDB 等无 SQL 数据库?
【问题讨论】:
标签:
database
database-design
web-applications
serialization
database-schema
【解决方案1】:
是的,MongoDB、CouchDB 或 Solr 等面向文档的数据库可以做到这一点。表单或表单响应的每个实例都可能有一组不同的字段。您还可以索引字段,它们将帮助您查询包含相应字段的文档。
我见过的另一种在 SQL 数据库中实现此功能的解决方案是How FriendFeed uses MySQL to store schema-less data 中描述的解决方案。
基本上就像您将半结构化数据存储在序列化 JSON 中的想法一样,但随后也为您要索引的每个不同的表单字段创建另一个表。然后,您可以进行快速索引查找并连接回序列化 JSON 数据包含您要查找的字段/值对的行。