EAV Model

EAV(Entity–attribute–value) is data model that is used in circumstances where the number of attributes  that can be used to describe a thing  is potentially very vast, but the number that will actually apply to a given entity is relatively modest

In an EAV data model, each attribute-value pair is a fact describing an entity, and a row in an EAV table stores a single fact. EAV tables are often described as “long and skinny”: “long” refers to the number of rows, “skinny” to the few columns.

Data is recorded as three columns:

The entity: the item being described.

The attribute or parameter: a foreign key into a table of attribute definitions. At the very least, the attribute definitions table would contain the following columns: an attribute ID, attribute name, description, data type, and columns assisting input validation, e.g., maximum string length and regular expression, set of permissible values, etc.

The value of the attribute.