我有兴趣在SQL Server数据库上使用EAV模型。是否有人能够指出我现有模型/模式的文章或框架(我对Saas没有兴趣)?
答案 0 :(得分:15)
Best Practices for Semantic Data Modeling for Perfor...
EAV不存在问题,因为它会导致严重的部署性能和可伸缩性问题。 SQL Server客户咨询团队发布的链接中的白皮书试图为部署成功的EAV模型提供一些指导。
答案 1 :(得分:5)
我还没有使用它,但是在这个codeplex项目中有一个带有数据的EAV结构示例:
http://eav.codeplex.com/
“SQL Server的示例EAV模式包括:表和索引,部分参照完整性,部分数据类型,可更新视图(如普通SQL表)”
提供一些要下载的SQL脚本here。
此外,这篇博文: “戴夫的eav指南” http://weblogs.sqlteam.com/davidm/articles/12117.aspx
...通过SQL Server中的EAV示例进行工作,其中包含如何实现类型检查和查询的示例,以及有关该理论的大量讨论以及为什么EAV会导致问题。
答案 2 :(得分: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性质的数据,我会更多地了解它。
答案 3 :(得分:-1)
我们在Github上有一个非常先进,成熟的EAV解决方案 - https://github.com/2sic/eav。虽然安装起来相当困难,因为它主要用作名为2sxc(也在github上)的内容管理系统的后端。
由于它非常先进,支持许多数据类型,输入类型,通用输入掩码等等,我相信你会发现它非常鼓舞人心。要尝试一下,最好的方法是安装DNN(.net web平台)和2sxc(DNN的内容管理系统)。我想你会对可能的事感到惊讶。
请注意,整个UI都是基于AngularjS的,因此它是一个非常现代的设置。您还可以在http://2sxc.org上找到更多博客/视频。