我想设计一个应用程序,它将最终支持一个可配置的数据驱动表单。
每个用户都应该能够自定义在自己的表单中显示的字段,并配置新的表单类型以收集不同的数据集。
一个用户可能需要:
姓名
联系电话
电子邮件
其他用户可能需要:
姓名
组织
地址
我听说**entity attribute value(eav)**设计模式可能适合这种情况,但在我的例子中,基本上所有字段都会在一开始就知道。以后可能会添加新的字段类型,但这将是一个受控制的过程。
使用eav设计模式与使用一个包含1000列的sql表(每个用户可以根据自己的需求切换开/关列)相比,有什么优势吗?与单个表相比,eav有查询缺点吗?
我还有别的办法吗?
最佳答案
你可能喜欢我的演讲:Extensible Data Modeling with MySQL。这是在考虑mysql的情况下完成的,但是许多概念适用于任何sql数据库。
或者我过去在堆栈溢出时的回答:How to design a product table for many kinds of product where each product has many parameters?
我不喜欢这种任务的eav解决方案。它带来的问题比它解决的要多。请阅读上面的链接以获取详细信息,或者阅读我的这篇博客文章:EAV FAIL。