试图说服同事不要使用实体属性值(EAV)

问题描述 投票:0回答:1

他们真的很喜欢它的灵活性,能够更新数据库,然后允许用户收集新的数据点。我已经寄了

https://tapoueh.org/blog/2018/03/database-modelization-anti-patterns/#entity-attribute-valueshttps://www.cybertec-postgresql.com/en/entity-attribute-value-eav-design-in-postgresql-dont-do-it/

我试图强调,我喜欢报告保持简单和高效,并且能够进行约束并基本上使用 RDS 等...

属性并不多,我认为每天不需要更多,也许每季度添加一两个。我试图避免“预优化”,基本上如果我们执行 EAV,问题就解决了。

一个烦恼是如果添加了新列,则必须更新客户端代码,我一直在考虑提供一个动态 postgres 函数,该函数可以将一个值插入到用户定义的列中,作为一种妥协。

还有什么好的文章或者建议欢迎留言

postgresql entity-attribute-value
1个回答
0
投票

您必须在应用程序中重建所有数据库技术,例如并发性、约束、数据完整性等。使用 EAV,您不再有数据类型,因此 1 和 1 对于数字都有效。就像香蕉一样。

我见过成功的 EAV 实现,但仅适用于没有并发性的报告数据库,并且所有约束和数据完整性都在主生产 (OLTP) 数据库中处理。

一个烦恼是如果有新列,则必须更新客户端代码 添加了

无论如何你都必须更新客户端代码。世界上没有任何代码知道当数据库中突然弹出一个新属性时该怎么做。

© www.soinside.com 2019 - 2024. All rights reserved.