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

标签 sql database postgresql

我想设计一个应用程序,最终将插入可配置的数据驱动表单。

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

一个用户可能需要:

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

其他用户可能想要:

  • 姓名
  • 组织
  • 地址

我听说 **实体属性值 (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/

相关文章:

ruby-on-rails - Postgres 服务器错误 -> PGError : could not connect to server

sql - 在 postgres 中加入性能

postgresql - Servicestack ORMLite - 在 PostgreSQL 中使用 XML 字段

postgresql - Docker似乎是在服务器上迁移数据库而不是在RDS上迁移

php - SQL语句不返回任何内容或在某些字段中返回NULL

mysql - 多对多关系 INSERT

mysql - sql问题 session 并匹配所有记录

java - 即使使用 "relation <table_name> does not exist"pgsql block ,如何修复 'IF EXISTS-THEN' 错误?

ios - 如何在CoreData中正确添加大数据集?

sql - Postgres Like 语句无法正确阅读