Как создать схему, в которой может быть несколько пользовательских атрибутов для каждого клиента? - PullRequest
0 голосов
/ 08 мая 2009

Я собираюсь работать над приложением, которое позволяет нашему клиенту определять поля, которые будут отображаться пользователям в виде среды обратной связи / опроса. Например, в пиццерии может быть поле с просьбой указать ваш любимый топпинг, а в баре может быть ваша любимая марка пива.

Система должна иметь возможность обрабатывать, позволяя нашим клиентам создавать и изменять эти поля, поскольку они зависят от конкретного клиента и, вероятно, не будут дублироваться. Было бы идеально, если бы был какой-то способ представить предложения клиенту, основанные на аналогичных областях клиента; например, если у нас есть вторая пиццерия, которая на своей странице администрирования определяет поля, она может сказать, что аналогичные компании решили задать следующие вопросы, и представить список «типовых» значений.

Будет ли это хорошим кандидатом на модель Entity-Attribute-Value (EAV) для этой таблицы? Традиционная реляционная модель не будет работать, потому что она будет включать множество полей, называемых «user1» и т.п., что, конечно, очень громоздко для всего.

1 Ответ

1 голос
/ 19 мая 2009

Нет, система, которую вы описываете, не требует EAV, хотя то, что вы видите ниже, может иметь некоторые общие элементы с моделями EAV:

CLIENT (clientId, clientName)

ОБЗОР (surveyId, clientId)

РЕСПОНДЕНТ (идентификатор респондента, идентификатор опроса, имя респондента, ответчик электронной почты)

ВОПРОС (questionId, surveyId, questionText), например "любимый топпинг"

OPTION (questionId, responseText), например "анчоусы", "пепперони"

ОТВЕТ (идентификатор вопроса, ответчика, текст ответа)

КЛИЕНТ может создать много ОБЗОРОВ, каждый из которых может иметь много ВОПРОСОВ, некоторые с предлагаемыми ОПЦИЯМИ. РЕСПОНДЕНТ отвечает на ОБЗОР, и каждый из его ответов записывается как ОТВЕТ. RESPONSE.responseText может соответствовать или не соответствовать заданному OPTION.responseText, в зависимости от того, выбрали ли они опцию или набрали свой собственный ответ.

Это всего лишь пример, есть много вариантов этой модели, которые вам, вероятно, придется внести в соответствии с вашими конкретными требованиями.

...