我想设计一个应用程序,最终将插入可配置的数据驱动表单。
每个用户应该能够自定义在自己的表单中显示哪些字段,并配置新的表单类型来收集不同的数据集。
一个用户可能需要:
- 姓名
- 联系电话
- 电子邮件
其他用户可能想要:
- 姓名
- 组织
- 地址
我听说 **实体属性值 (EAV) ** 设计模式可能适合于此,但在我的情况下,基本上所有字段最初都会已知。稍后可能会添加新的字段类型,但这将是一个受控过程。
与使用具有约 1000 列的 SQL 表(每个用户可以根据自己的要求打开/关闭列)相比,使用 EAV 设计模式是否有优势? EAV相比单表有查询缺点吗?
我应该采取另一种方法吗?
最佳答案
您可能会喜欢我的演示:Extensible Data Modeling with MySQL 。它是在考虑 MySQL 的情况下完成的,但许多概念适用于任何 SQL 数据库。
或者我过去在 Stack Overflow 上的回答:How to design a product table for many kinds of product where each product has many parameters?
我不喜欢针对此类任务的 EAV 解决方案。它引入的问题多于它解决的问题。阅读上面的链接了解详细信息,或者阅读我的这篇博文:EAV FAIL .
关于用于灵活且可配置属性的 SQL 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43162072/