An entity-attribute-value model is a method of representing a collection of data within a computer. The model is designed to allow an entity to be described by a narrow set of attributes that are selected from a larger list of possible attributes. By indexing the larger list of attributes, it is possible to attach only relevant information to the entity’s data structure. This approach allows a program or database to keep a dynamic list of all possible attributes that can grow as needed while maintaining the integrity of the data that already has been recorded.
One way for a person to visualize the entity-attribute-value model is to imagine a personal address book as it relates to a complete phone book. The phone book lists every person in an area. A personal address book lists only those people from the phone book who are relevant to the owner. It would be inefficient to carry a personal address book that listed thousands of people who are unknown, so the personal address book contains only the people who are relevant to the owner. In this example, the names of the people in the phone book are the attributes, and their phone numbers are the values of those attributes.
This approach to creating databases or other types of information management software has many benefits. All possible attributes are stored in a single list, so each record does not have to have a large amount of unused variables or fields. This reduces the size of records being stored. It also keeps the information attached to an entity pertinent and terse so that hundreds of empty attribute fields do not have to be traversed to see the fields with a value. New attributes can be readily added without the need for a complete database conversion, or even any modifications to existing records.
Another advantage of using the entity-attribute-value model is that the attributes in the list do not have to be all of the same data type. Each attribute can not only be a different type of data, but in object-oriented programming, they can be entirely different program classes. This provides a great amount of flexibility in the design of a database that relies on this form of data modeling.
The entity-attribute-value model is not an exclusive data model. In most databases, traditional relational structures can also be used to represent data where it is more practical to do so. The surrounding data record can be handled relationally while the interior fields are managed with the entity-attribute-value model.
A database or program that uses the entity-attribute-value model of data modeling will most likely need to make use of metadata. Metadata is a collection of rules and guidelines that bridges the divide between the user and the data. It can define what values are valid for a certain attribute, how the value should be displayed and possibly even how the attributes could be arranged when generating reports. Without the implementation of metadata, the entity-attribute-value model can become an inflexible and cumbersome database structure.