【问题标题】:Dynamic Database Storage动态数据库存储
【发布时间】:2012-08-29 07:31:26
【问题描述】:

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

【问题讨论】:

  • 你搜索了什么?你有限制吗?其他需求?如果您的问题解决了某些特定的产品组或可能的解决方案,例如像 couchDB 或 MongoDb 这样的 NoSQL 存储,或者像 Magento 数据库设计这样的可能的 RDBMS 解决方案,您的问题会更有帮助。 couchdb.apache.orgmongodb.org实体属性值模型:en.wikipedia.org/wiki/Entity-attribute-value_model

标签: database forms dynamic rdbms


【解决方案1】:

为什么不考虑像 MongoDB、CouchDB、Riak 等这样的无 SQL 文档存储?

【讨论】:

    【解决方案2】:

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

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

    您需要三个表来定义元数据表:

    表格:

    • FormID (PK)
    • 表单名称

    表单域:

    • FormFieldID (PK)
    • 字段ID
    • 表单ID

    字段:

    • 字段ID (PK)
    • 字段名称
    • 字段类型

    还有两个表来存储表单实例数据:

    表单实例:

    • FormInstanceID (PK)
    • 表单ID
    • 用户 ID

    FormFieldInstances:

    • FormFieldInstanceID (PK)
    • FormInstanceID
    • FormFieldID
    • 值(必须是文本,您必须管理类型转换)

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

    【讨论】:

    • 为了性能,我不想将所有通用字段都存储在一个表中...
    • 那么,你的意思是每个数据类型都有一个专门的表(或字段)?为什么会影响性能?
    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 2022-01-26
    • 1970-01-01
    • 2013-01-24
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    相关资源
    最近更新 更多