EAV через SQL Server - PullRequest
       19

EAV через SQL Server

7 голосов
/ 26 августа 2009

Мне интересно поиграть с моделью EAV поверх базы данных SQL Server. Кто-нибудь может указать мне статью или структуру для существующей модели / схемы (меня это не интересует в Saas)?

Ответы [ 4 ]

15 голосов
/ 26 августа 2009

Рекомендации по моделированию семантических данных для перформанса ...

EAV, как известно, проблематичен, поскольку приводит к серьезным проблемам с производительностью и масштабируемостью развертывания. В официальном документе по ссылке, выпущенном консультативной группой по работе с клиентами SQL Server, делается попытка дать некоторые рекомендации по развертыванию успешной модели EAV.

5 голосов
/ 19 ноября 2010

Я не использовал его, но есть пример структуры EAV с данными в этом проекте codeplex:

http://eav.codeplex.com/
«Пример шаблона EAV для SQL Server с: таблицами и индексами, частичной ссылочной целостностью, частичной типизацией данных, обновляемыми представлениями (как обычная таблица SQL)» *

Предоставляет некоторые сценарии SQL для загрузки, здесь .

Кроме того, этот пост в блоге: "Путеводитель Дэйва к Еве"
http://weblogs.sqlteam.com/davidm/articles/12117.aspx

... работает с примером EAV в SQL Server с примерами того, как будут реализованы проверка типов и запросы, с множеством дискуссий о теории и о том, почему EAV может вызвать проблемы.

2 голосов
/ 26 августа 2009

Почему бы не создать очень простую таблицу со столбцом сущности, столбцом атрибута и столбцом значения:

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-природы в дикой природе.

0 голосов
/ 09 февраля 2016

У нас есть очень продвинутое, зрелое EAV-решение на Github - https://github.com/2sic/eav. Его довольно сложно просто установить, поскольку он в основном используется как бэкэнд системы управления контентом, называемой 2sxc (также на github). ,

Поскольку он чрезвычайно продвинутый, он поддерживает множество типов данных, типов ввода, общих масок ввода и многого другого, я думаю, вы найдете его очень вдохновляющим. Чтобы попробовать это, лучше всего установить DNN (веб-платформа .net) и 2sxc (система управления контентом для DNN). Я думаю, вы будете поражены тем, что возможно.

Обратите внимание, что весь пользовательский интерфейс основан на AngularjS, так что это очень современная установка. Вы также можете найти больше блогов / видео на http://2sxc.org.

...