2012-09-04 60 views
1

我想构建一个可以存储动态字段的服务。例如,注册用户可以在应用程序的特定区域动态创建,读取,更新和删除通用表单域,并将动态表单保存在数据库中。这些通用表单域将存储用户需要的任何信息。解决这个问题的最好方法是什么? (这是一个数据库设计问题)动态数据库存储

+0

你在搜索什么?你有限制吗?其他需求?如果它涉及一些特定的产品或可能的解决方案,比如说像couchDB或MongoDb这样的NoSQL存储,或者像Magento数据库设计那样的可用的RDBMS解决方案,那么您的问题会更有帮助。 http://couchdb.apache.org/ http://www.mongodb.org/ 实体属性值模型:http://en.wikipedia.org/wiki/Entity-attribute-value_model –

回答

1

为什么不考虑像MongoDB,CouchDB,Riak等没有SQL文档存储?

0

我不得不做一次类似的事情。

最小的设计,我会用会是这样的:

需要三个表来定义表单metadada:

形式:

  • FormID(PK)
  • 窗体名称
  • etc

FormFields:

  • FormFieldID(PK)
  • FieldID
  • FormID

字段:

  • FieldID(PK)
  • 字段名
  • 呸ldType

和两个表来存储形式实例数据:

FormInstaces:

  • FormInstanceID(PK)
  • FormID
  • 用户ID

FormFieldInstances:

  • FormFieldInstanceID(PK)
  • FormInstanceID
  • FormFieldID
  • 值(这必须是文字,你必须要管理型转换)

这不是我知道的最好的设计,但你甚至可以用这个来支持多值字段。 应该在应用程序级别管理类型转换

+0

为了性能,我想不把所有的通用字段存储在一个表中... – Simba

+0

那么,你的意思是,然后为每种数据类型专门的表(或字段)?为什么会出现性能问题? –