用于灵活和可配置属性的SQL模型

时间:2017-04-01 21:11:43

标签: sql database postgresql

我想设计一个应用程序,最终为可配置的数据驱动形式提供支持。

每个用户都应该能够自定义哪些字段以自己的形式显示,并配置新的表单类型以收集不同的数据集。

一位用户可能需要:

  • 名称
  • 联系电话
  • 电子邮件

另一位用户可能想要:

  • 名称
  • 组织
  • 地址

我听说**实体属性值(EAV)**设计模式可能适用于此,但在我的情况下,基本上所有字段最初都是已知的。可以在以后添加新字段类型,但它将是受控制的过程。

与使用具有~1000列的SQL表相比,使用EAV设计模式是否有优势,每个用户可根据需要切换开/关列?与单个表相比,EAV是否具有查询缺点?

我应该采取另一种方法吗?

1 个答案:

答案 0 :(得分:2)

您可能会喜欢我的演示文稿: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