Существует ли инфраструктура значений атрибутов сущности (EAV) для PHP / MySQL? - PullRequest
22 голосов
/ 22 октября 2008

Существует ли инфраструктура Entity Attribute Value для PHP / MySQL? Я начинаю писать самостоятельно, но чувствую, что это уже сделано. Есть предложения?

Ответы [ 3 ]

4 голосов
/ 22 октября 2008

Я думаю, Magento использует архитектуру в стиле EAV, возможно, стоит взглянуть туда. Magento - платформа электронной коммерции, основанная на Zend Framework.

1 голос
/ 31 октября 2008

Я не знаю ни одного.

С учетом вышесказанного, eZ Publish ECMS (то есть FOSS) использует модель данных с сильной нормализацией в стиле EAV. Оба определения типов структурированного контента ( "классы контента" ) и фактические экземпляры контента (статьи, учетные записи пользователей, комментарии, продукты, что угодно) определяются и хранятся в отдельных таблицах базы данных.

Таким образом, произвольные комбинации типов данных могут динамически объединяться через веб-интерфейс для создания нового типа контента («простая статья» может состоять из «Текстовой строки» для заголовка, «Даты времени» для даты публикации и «поля XML») для основного текста). В EAV «simplearticle» - это сущность, «заголовок» - имя атрибута, а «Textline» - его значение, а длина и правила проверки, составляющие тип данных «Textline», являются метаданными в контексте EAV.

Как и ожидалось для любой архитектуры EAV, эта гибкость достигается за счет снижения производительности, поскольку для любого поиска требуется несколько самостоятельных объединений, по одному для каждого столбца в сводном наборе результатов.

К сожалению, этот стек не попал в связанную с eZ библиотеку eZ Components (которая имеет базу данных и объект доступа к данным / компоненты ORM, но стандартного реляционного разнообразия), поэтому его использование будет означать либо работа со всей eZ Publish enchilada или удаление необходимых библиотек классов самостоятельно.

1 голос
/ 31 октября 2008

В настоящее время, по-видимому, EAV Framework отсутствует в PHP / MySQL; Тем не менее, я нашел эти две ссылки, которые могут оказать некоторую помощь:

http://www.planetmysql.org/entry.php?id=14025

http://www.iwilldomybest.com/2008/08/php-mysql-tip-3/

...