В сообществе RDBMS EAV является антипаттерном. Для «бесконечной гибкости», получаемой с помощью EAV, SQL, необходимый для восстановления данных в виде записей / объектов, значительно сложнее. Вы также получаете «преимущество» от невозможности использовать какие-либо доступные вам инструменты целостности данных (внешние ключи, проверочные ограничения и т. Д.). Со временем этот дизайн разрушается под собственным весом.
Если у вас есть вариант использования, в котором элементы данных являются частью отношений супертипа / подтипа, но они мало меняются, то моделируйте таблицы в соответствии с вашими потребностями:
1.) Наследование таблиц классов = таблицы конкретных подтипов с общим родителем. Это лучше всего, когда каждый из супертипа и подтипа имеет значительное количество уникальных атрибутов.
2.) Наследование конкретной таблицы = поместите общие столбцы супертипа в таблицу каждого подтипа. Это работает лучше, когда у супертипа не много собственных атрибутов, но у подтипов есть.
3.) Наследование одной таблицы = поместите столбцы для всех подтипов в 1 таблицу вместе со столбцами супертипа. Столбцы, которые не относятся к подтипу конкретной строки, имеют значение NULL. Это лучше всего подходит для случаев, когда каждый подтип не имеет много уникальных атрибутов или несколько подтипов совместно используют столбцы / атрибуты.
Вы можете немного смешивать и сочетать эти 3, но я бы предложил придерживаться одного из этих дизайнов.
Если вам действительно нужно использовать EAV, вы используете столбцы XML в СУБД, если относительно небольшая часть ваших данных находится в вашем проекте EAV (по сравнению с общей базой данных). Если большая часть ваших данных будет храниться в EAV, тогда СУБД - не тот инструмент, который вам нужен. Посмотрите на базы данных document / NoSQL / Key-Value, такие как MongoDB, Cassandra и т. Д. СУБД, которые реализуют EAV, если не рано, в конечном итоге станут кошмаром кодирования.
Учитывая дату вашего вопроса, мне было бы интересно узнать, какой маршрут вы выбрали и что вы узнали, что вам понравилось / не понравилось и т. Д.