7

我有兴趣在 SQL Server 数据库上使用 EAV 模型。有没有人能给我指出现有模型/模式的文章或框架(我对 Saas 不感兴趣)?

4

4 回答 4

17

性能语义数据建模的最佳实践...

EAV 是出了名的问题,因为它会导致严重的部署性能和可扩展性问题。链接中的白皮书由 SQL Server 客户咨询团队发布,试图为部署成功的 EAV 模型提供一些指导。

于 2009-08-26T17:58:28.087 回答
5

我没有使用它,但是在这个 codeplex 项目中有一个带有数据的示例 EAV 结构:

http://eav.codeplex.com/
“用于 SQL Server 的示例 EAV 模式具有:表和索引、部分参照完整性、部分数据类型、可更新视图(如普通 SQL 表)”

提供一些可供下载的 SQL 脚本,请点击此处

此外,这篇博文:“dave 的 eav 指南”
http://weblogs.sqlteam.com/davidm/articles/12117.aspx

...通过 SQL Server 中的 EAV 示例进行工作,其中包含如何实现类型检查和查询的示例,并就理论以及 EAV 为何会导致问题进行了大量讨论。

于 2010-11-19T13:41:36.303 回答
2

为什么不创建一个非常简单的表,其中包含一个实体列、一个属性列和一个值列:

CREATE TABLE eav(
    entity STRING,
    attribute STRING,
    value STRING);

然后使用某种脚本填充表格以生成一些测试数据。

INSERT INTO eav ('banana','color','yellow');
INSERT INTO eav ('banana','fluffy','no');
INSERT INTO eav ('banana','origin','Guatemala');
INSERT INTO eav ('orange','origin','USA');
INSERT INTO eav ('orange','origin','Mexico');
INSERT INTO eav ('pear','origin','USA');
INSERT INTO eav ('peach','fluffy','yes');

然后尝试在它上面运行查询,玩转,了解它是如何工作的,等等。

但总的来说,上述数据组织方案与关系数据库理论并不能很好地结合。以上内容更符合文档数据库理论,例如Couch DB。如果您需要在野外存储/管理 EAV 自然的数据,我会对此进行更多研究。

于 2009-08-26T17:59:34.793 回答
-1

我们在 Github 上有一个非常先进、成熟的 EAV 解决方案 - https://github.com/2sic/eav。不过安装起来相当困难,因为它主要用作名为 2sxc(也在 github 上)的内容管理系统的后端。

由于它非常先进,支持许多数据类型、输入类型、通用输入掩码等等,我相信你会发现它非常鼓舞人心。要试用它,最好的方法是安装 DNN(.net 网络平台)和 2sxc(DNN 的内容管理系统)。我想你会惊讶于什么是可能的。

请注意,整个 UI 都是基于 AngularjS 的,因此它是一个非常现代的设置。您还可以在http://2sxc.org上找到更多博客/视频。

于 2016-02-09T12:22:51.997 回答