Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
yoda

EAV, good or evil?

Recommended Posts

mjamado
Digam aí a vossa opinião sobre EAV (http://en.wikipedia.org/wiki/Entity-attribute-value_model). Aparentemente as opiniões dividem-se sobre a sua real utilidade, uns por ser má programação, outros por ser mais simples ..

Olá, yoda.

Na minha opinião, é mais um modelo como tantos outros. Já usei nalgumas situações, sobretudo em casos em que não sabes as propriedades dos objectos que vais modelar.

Por exemplo, pensa numa loja de informática: para além das propriedades partilhadas por todos os produtos (descrição, preço, peso, tamanho da caixa, essas coisas), existem propriedades que são partilhadas por apenas uma categoria ou sub-categoria de produtos. Os processadores têm velocidade, memória da cache, os discos têm tamanho e tempo de acesso, as memórias têm tamanho, velocidade e latência... Acho que já estás a ver a coisa.

Em vez de modelares o objecto 'produto' com as propriedades cpu_velocidade, hdd_tamanho, ram_velocidade, e por aí fora, modelas vários objectos auxiliares seguindo o modelo EAV.

Cada caso é um caso. Para mim, é um disparate, por exemplo, modelar um canal de notícias/novidades segundo o modelo EAV. Mas não deixa de ter a sua aplicação em casos concretos.

Por acaso nunca tinha ouvido falar mal do modelo em si; daquilo que alguns programadores fazem com ele, já é outra história, mas isso é como tudo o resto...


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
yoda

Eu vejo utilidade nele, como disseste, em alguns casos, mas em termos de controlo de informação perde um bom bocado. Usar um modelo destes implica generalizar o tipo de informação, o que por um lado facilita num sistema dinâmico e por outro lado implica que o mesmo sistema fique mais pesado quando se tem de controlar todo o fluxo de dados na parte do código em vez de recorrer directamente à base de dados para controlar o tipo de input que a mesma recebe.

Acho que acaba por ser como tudo, se for abusado o seu uso, torna-se inútil, mas se for bem medido é uma mais-valia.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.