EAV через SQL Server
Мне интересно поиграть с моделью EAV над базой данных SQL Server. Кто-нибудь может указать мне статью или структуру для существующей модели / схемы (меня это не интересует в Saas)?
4 ответа
Лучшие практики для семантического моделирования данных для пер...
Известно, что EAV проблематичен, так как приводит к серьезным проблемам с производительностью и масштабируемостью развертывания. В официальном документе по ссылке, выпущенном консультативной группой по работе с клиентами SQL Server, делается попытка дать некоторые рекомендации по развертыванию успешной модели EAV.
Я не использовал его, но есть пример структуры EAV с данными в этом проекте codeplex:
http://eav.codeplex.com/
"Образец шаблона EAV для SQL Server с: таблицами и индексами, частичной ссылочной целостностью, частичной типизацией данных, обновляемыми представлениями (как обычные таблицы SQL)"
Предоставляет некоторые сценарии SQL для загрузки здесь.
Кроме того, это сообщение в блоге:
"руководство Дэйва к EAV"
http://weblogs.sqlteam.com/davidm/articles/12117.aspx
... работает с примером EAV в SQL Server с примерами того, как будут реализованы проверка типов и запросы, со множеством дискуссий о теории и о том, почему EAV может вызывать проблемы.
Почему бы не создать очень простую таблицу со столбцом сущности, столбцом атрибута и столбцом значения:
CREATE TABLE eav(
entity STRING,
attribute STRING,
value STRING);
А затем заполните таблицу с помощью некоторого сценария, чтобы сгенерировать некоторые тестовые данные.
INSERT INTO eav ('banana','color','yellow');
INSERT INTO eav ('banana','fluffy','no');
INSERT INTO eav ('banana','origin','Guatemala');
INSERT INTO eav ('orange','origin','USA');
INSERT INTO eav ('orange','origin','Mexico');
INSERT INTO eav ('pear','origin','USA');
INSERT INTO eav ('peach','fluffy','yes');
А затем попробуйте выполнить запросы, поэкспериментировать, узнать, как это работает и т. Д.
В целом, однако, приведенная выше схема организации данных не очень хорошо согласуется с теорией реляционных баз данных. Вышесказанное больше согласуется с теорией базы данных документов, как Couch DB. Я бы посмотрел больше на это, если вам нужно хранить / управлять данными EAV-природы в дикой природе.
У нас на Github есть очень продвинутое, зрелое EAV-решение - https://github.com/2sic/eav. Однако установить его довольно сложно, поскольку он в основном используется как бэкэнд системы управления контентом, называемой 2sxc (также на github).
Поскольку он чрезвычайно продвинутый, поддерживает множество типов данных, типов ввода, общих масок ввода и многое другое, я думаю, вы найдете его очень вдохновляющим. Чтобы попробовать это, лучше всего установить DNN (веб-платформа.net) и 2sxc (система управления контентом для DNN). Я думаю, вы будете поражены тем, что возможно.
Обратите внимание, что весь пользовательский интерфейс основан на AngularjS, так что это очень современная установка. Вы также можете найти больше блогов / видео на http://2sxc.org/.