В домене электронной коммерции обычно продукты должны иметь несколько атрибутов, например, имя, описание, цену, артикул, изображение, метаданные и так далее. И это количество свойств может увеличиваться/уменьшаться с течением времени в зависимости от его требований и использования. Что в конечном итоге может привести к изменению таблицы для добавления и удаления столбцов. И это также может привести к пустым столбцам, если этот атрибут больше не используется.
Потом мы наткнулись на EAV. Модель данных EAV обеспечивает гибкость таким образом, что вам не нужно изменять таблицы базы данных для добавления/удаления новых атрибутов продукта.
Модель "сущность-атрибут-значение" (EAV) – это модель данных для кодирования с эффективным использованием места сущностей, где количество атрибутов (свойств, параметров), которые можно использовать для их описания, потенциально велико, но число, которое действительно применимо к данному объекту, относительно скромное. Такие объекты соответствуют математическому понятию разреженной матрицы.
В нашем случае продуктом является Доктор, и в первую очередь нам нужно было решить две основные проблемы:
- Свести к минимуму или полностью исключить изменение таблицы
- И атрибуты должны иметь многоязычную поддержку
Структура таблицы:
Вместо хранения данных, например
EAV использует строку для каждого столбца
- Entity : в данном случае это комбинация идентификатора врача и языка.
- Атрибут: имя, квалификация, специализация и т. д.
- Vзначение : значение атрибута для этого объекта.
ER-диаграмма
Особенность модели EAV
- Фокусируется на Сущности.
- Данные организованы, что упрощает поиск и вставку записей.
- Может обрабатывать новые атрибуты/свойства объекта без изменения таблицы.
- Сохраняются только непустые значения.
Резюме
Используя EAV, мы смогли обработать почти 16 атрибутов объекта Doctor всего с 4 столбцами, где, как и в случае плоской таблицы, было 16 столбцов. И это число только увеличивалось бы при введении новых атрибутов.