Несмотря на минимализм, как показано, в таблице атрибутов Model2 вводится концепция метаданных в миксе со всеми вытекающими из этого преимуществами.У Model2 есть и другие преимущества, например, повышение производительности , связанное с меньшим размером строки (таблицы Value), но я бы хотел сосредоточиться на концепции метаданных.
Даже как есть Таблица атрибутов Model2 составляет хранилище всех допустимых атрибутов (с моделью 1 для получения такого списка потребуется выполнить совокупный запрос сортов).Кроме того, и как есть , хранилища достаточно, чтобы ввести ограничения внешнего ключа , чтобы помочь поддерживать целостность набора данных (с моделью 1 потребуются внешние формы проверки значенийхранится в столбце атрибутов.
С несколькими простыми добавлениями таблица атрибутов может стать универсальным хранилищем, которое можно использовать для различных целей. Например, таблица может включать некоторые из следующих
- информация, такая как удобное для отображения имя каждого атрибута
- некоторые флаги, указывающие тип поля (числовое или строковое сопоставление с датой и т. Д.), Для дифференцированной обработки / обработки
- конкретная таблица значений, в которой хранится базовый атрибут (модель показывает только одну таблицу, но оптимизация / масштабирование иногда вызывает разбиение таблиц)
- тот факт, что атрибут может храниться в виде своего собственного столбца в таблице «Значение» (снова форма оптимизации, по сути, получая лучшее из обоих миров:гибкость схемы модели EAV, но производительность традиционной реляционной модели для атрибутов, которые являются наиболее используемыми и / или наиболее общими для всех объектов.
- возможность переименовывать атрибуты, не нарушая основную таблицу,Изменения только на уровне метаданных.
- различная прикладная семантика.Например, индикаторы того, что определенный атрибут должен быть предложен как одно из базовых и расширенных полей поиска.
В двух словах, таблица атрибутов становится ресурсом, который позволяет приложению быть действительно управляемым данными(или, точнее, meta управляемый данными).Действительно, вам также может понравиться таблица сущностей, то есть та, в которой собраны метаданные, относящиеся к различным типам сущностей: какие это разные типы сущностей, какие атрибуты разрешены для какого типа сущности и т. Д.обратите внимание на комментарий от zerkms , ниже самого вопроса.Несмотря на все свои преимущества, модель EAV также имеет свои недостатки и проблемы, намекающие на сложность запросов и проблемы с производительностью.Эти проблемы, однако, не должны дисквалифицировать, априори, EAV: во многих случаях использование EAV является лучшим подходом.
Если предположить, что EAV - это выбор, чем Model2, или даже что-то более сложное, безусловно, превосходит модель 1.