我理解EAV中的三个基本故障,即重新组装数据需要大量工作。但是,我想要一个可以添加自定义字段的数据库。很多人说Virtuemart允许自定义字段但不使用EAV数据库结构。有人可以解释如何做到这一点或提供链接吗?
答案 0 :(得分:9)
我相信他们会将自定义字段存储在一大堆XML或YAML或其他特定于域的语言中。
基本上,他们使用Martin Fowler的Serialized LOB模式。
这使得很难使用SQL表达式来查询自定义属性。您必须将整行提取回应用程序并解析出自定义属性。但这并不比EAV引起的痛苦更糟糕。
Virtuemart和CCK
Virtuemart(VM)自定义用户字段是 CCK风格,但不依赖EAV。 因此,它们非常实用,并且 有用。我推荐他们使用。
VM产品类型也是CCK风格的, 但不幸的是确实依赖EAV。 因此,我避免使用VM产品类型 像瘟疫一样。相反,我只是 手动创建其他字段 产品记录。
VM属性系统(简单, 定制,高级)实际上也是 动力不足被认为是CCK 级。
VM的改进很好 包括重新描述VM产品 非EAV的类型和属性 CCK风格的自定义字段(因此 使它们更像VM自定义 用户字段)。