Pergunta

Eu entendo as três falhas básicas na EAV, ou seja, de que é preciso muito trabalho para remontar os dados. No entanto, eu quero um banco de dados onde eu posso adicionar campos personalizados. Um monte de gente dizer que Virtuemart permite campos personalizados, mas sem o uso de uma estrutura de banco de dados EAV. Alguém pode explicar como isso pode ser feito ou fornecer links?

Foi útil?

Solução

Eu acredito que eles armazenam campos personalizados em um pedaço de XML ou YAML ou outra linguagem específica de domínio.

Basicamente, eles usam Serialized LOB padrão de Martin Fowler.

Isso torna difícil para expressões utilização de SQL para consultar os atributos personalizados. Você tem que buscar toda a fileira traseira em sua aplicação e analisar os atributos personalizados. Mas isso não é pior do que a dor causada pela EAV.

Veja http://web.archive.org/web/20110709125812/http://sankuru.biz/en/blog/ 8-joomla-configuração de questões / 35-the-CCK-zumbido-conteúdo-criação-kit-and-the-EAV-problem.html

Virtuemart e CCK

Virtuemart (VM) campos de usuário personalizadas são CCK-estilo, mas não dependem de EAV. Portanto, eles são muito útil, e útil. Eu recomendo o seu uso.

tipos de produtos VM também são CCK-estilo, mas, infelizmente, não dependem de EAV. Portanto, eu evito os tipos de produtos de VM como a peste. Em vez disso, eu só manualmente criar campos adicionais em o registro do produto.

sistema de atributo A VM (simples, personalizado, avançado) é realmente muito underpowered a ser considerado CCK série.

Uma boa melhoria para VM, seria consistem em reformular o produto VM tipos e atributos para não-EAV campos personalizados em estilo CCK (e, portanto, fazê-los trabalhar mais como o costume VM campos de usuário).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top