I'm doing some custom work with Magento, which has a database design based upon the EAV model, and I need some good resources/tutorials that explain the EAV database model. Please don't provide Wikipedia as a resource... I'm looking for something that teaches EAV in a friendly way for beginners.
Here you go. An illustrative story: http://www.simple-talk.com/opinion/opinion-pieces/bad-carma/
The friendliest thing you can do for a beginner is to teach them the down side of EAV.
The up side of EAV is so seductive that a lot of newbies will dig a very big hole for themselves before they realize it.
Hopefully the google search will reveal at least some of the down side.
In a nutshell, EAV is optimized for getting data in, not getting data out. But that might be an acceptable trade-off. I managed a project that had to develop a general clinical trial data management system. There could not be many common data elements because each trial needs to collect different data. Capturing data was urgent; we had to develop data entry pages under pressure. Reports are harder with EAV, but they're also less urgent, and with some clever thought they can be simplified a bit. EAV has served us well.
I found this guide to be the most helpful for Magento: http://alanstorm.com/magento_advanced_orm_entity_attribute_value_part_1
I found this article really helpful, it provides considerations and consequences associated with an EAV schema and to provide a basic framework for its implementation in SQL Server.
You should check this article: The EAV/CR Model of Data Representation.
It describes EAV with Classes and Relationships, a more OO approach and not just a plain reference-key-value implementation.
See Dinua V, and Nadkarnia P. Guidelines for the Effective Use of Entity-Attribute-Value Modeling for Biomedical Databases. Int J Med Inform. 2007 ; 76: 769–779. http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=2110957
来源:https://stackoverflow.com/questions/494158/best-beginner-resources-for-understanding-the-eav-database-model