gpt4 book ai didi

php - 灵活的表单和支持的数据库结构

转载 作者:可可西里 更新时间:2023-11-01 07:33:42 25 4
gpt4 key购买 nike

我的任务是创建一个允许管理员更改用户输入表单内容(即添加任意字段)的应用程序 - 其内容存储在数据库中。想想 Modx/Wordpress/Expression Engine 模板变量。

我一直在研究的方法是实现规范一致的具体表(即用户配置文件、用户内容等)和一些通用字段数据表(即文本、 bool 值)来存储非特定值。表单(和模型字段)将通过首先查询表格并检索相关列来生成——尽管我还没有考虑如何设置验证。

我查看了这个问题,它似乎表明了一种 EAV 类型的方法 - 从我的简短研究来看 - 看起来它可能比它的灵 active 带来的好处更大的负担。

然而,我在这里阅读了几篇文章,表明这是一条危险的路线:

How to design a generic database whose layout may change over time?

Dynamic Database Schema

如果有人可以提供一些建议,我将不胜感激

问候

SWK

最佳答案

我几年前创建了一个非常大的 EVA 数据库(PHP w/PostgreSQL)。结果很好,但这是一个大项目($$$)。所有表单都是完全动态的,具有表单/字段版本控制、发布工作流、匹配动态报告等。

EVA 基础非常简单。获取数据并不是困难的部分。但是表单版本控制和报告....您可能需要花费数年时间才能做好。

如果我今天再做一次,我会研究使用一种较新的 NoSQL 解决方案 (http://en.wikipedia.org/wiki/NoSQL#Document_store)。我想创建一个可以传递给表单生成器的 DTO 样式类。 “修改”表单实际上就是修改 DTO。然后我会将该 DTO 保存到文档/对象数据库中。

此外,在构建 alpha 解决方案时,请考虑如何解决包含版本控制和报告需求的测试用例。

这是我的意思的一个例子:一个简单的“提问表格”。

  • 原始(版本 1):有First,Last,Question
  • 添加电子邮件字段(版本 2):First,Last,Email,Question
  • 有人改变了他们对电子邮件的看法:(版本 3):First,Last,Question
  • 新的营销人员进来并更改它:(版本 4):全名、电子邮件、问题

现在,您需要生成一份报告 (csv)。事情变得棘手。你是怎么做到的?

我们通过引用其先前版本的字段级版本控制解决了这个问题。此外,报告系统要求最终用户在运行前组装报告数据源的定义。 (将报告字段绑定(bind)到数据字段等)。

但是,对于文档数据库,我认为您可以采用不同的方式来实现。我相信像 CouchDB(其他??)这样的新数据库具有处理这些问题的内置机制。

祝你好运!!

关于php - 灵活的表单和支持的数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4599247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com