我看过 Entity Attribute Value在我真正了解它的名字之前,在很多情况下。这种技术经常出现,而不是将数据存储在数据库列中,而是“翻转它”并拥有一个包含实体、属性、值列的表,并且每条数据都成为该表中的一行。有时它也被称为“开放模式”。
它对某些事情有利,对其他事情不利。这wikipedia article对其背后的理论进行了很好的讨论。
这似乎是一种经常使用的技术,应该有框架或引擎或 NoSQL 数据库或通用软件工具来构建和支持它。
那么,你知道吗?我对 Microsoft 堆栈(.Net、SQL Server 等)特别感兴趣,但也对其他技术堆栈感兴趣。
例如,这里有一个项目 build an ASP.NET EAV engine这正是我正在寻找的,但显然从未开始。
最佳答案
如果您可以忍受 NoSQL 数据库的缺点,那么采用 EAV 模式的最佳方法是使用 NoSQL 替代方案,例如 CouchDB 或 MongoDB。这些数据库提供“无模式”设计,允许每一行都有自己的模式。使用传统 RDBMS 执行 EAV 是自找麻烦,因为查询变得非常困难,而且数据集越大,性能就越差。
我过去成功使用的替代方法是将 RDBMS 与 NOSQL 变体(MySql 和 MongoDB)结合使用。我使用 MySQL 存储 EAV 数据(获得事务完整性),并使用 MongoDB 作为报告存储来解决 EAV 模型的查询问题。
关于c# - 实体属性值 (EAV) 框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214018/