实体属性值模型(EAV)以及如何用cfml实现它?

时间:2011-06-16 23:40:21

标签: database coldfusion entity-attribute-value

http://oi55.tinypic.com/14lho28.jpg

我正试图弄清楚如何在coldfusion中实现这种关系。如果有人知道这种关系的名称,我很想知道它。

我正在尝试创建棕色表。

从值中重新创建表不是问题,我现在已经困扰了几天的问题是如何创建编辑环境。

我在想我应该有一个包含所有Tenants和TenantValues的表(TenantValues与TenantID匹配我正在编辑)并且还有空值(绿表)

还有其他建议吗?

2 个答案:

答案 0 :(得分:3)

此关系的名称称为Entity Attribute Value model(EAV)。在您的情况下,TenantTenantVariableTenantValues分别是实体,属性和值表。 EAV尝试允许运行时定义或实体,并且在我支持内容管理系统的经验中最常见。它被称为anti pattern数据库模型,因为您失去了某些RDBMS优势,同时获得了诸如必须在删除或保存时锁定多个表的缺点。通常合适的持久性替代方案是NoSQL解决方案,例如Couch

至于编辑,我通常看到的范例是删除给定ID的所有值记录并插入循环内,然后更新实体表记录。 在交易中执行此操作以确保一致性。这种方法的结果是,它必须比delta检测算法更容易理解。如果您的数据库支持MERGE语句,则另一个选择是使用MERGE语句。

答案 1 :(得分:2)

您可能需要考虑RDF Triple Store来解决此问题。它是关系数据库的替代品,特别适用于稀疏分类数据。数据表示为三元组 - 有向图边缘由主题,对象和描述连接它们的属性的谓词组成:

(subject) (predicate) (object)

您的数据集中的一些示例三元组看起来像:

<Apple> rdf:type <Red_Fruit>
<Apple> hasWeight "1"^^xsd:integer

RDF三重存储提供SPARQL查询语言,以便像使用SQL一样从您的商店检索数据。