2015-06-03 9 views
1

Я строю звездообразной схемы, чтобы позволить отчетности в отношении использования приложения, но удар камнем преткновения на двух моментах:моделирование «вопросы» и «ответы», где размеры ответ может быть множественный выбор или FREETEXT

  1. Некоторые ответы могут быть свободным текстом.
  2. Мне нужно сообщить, на какие вопросы не отвечали пользователи.

Выработать:

Приложение имеет раздел, где пользователь отвечает на вопросы.

Вопрос может иметь следующие типы ответов:

  • множественный выбор (радиокнопки), «выберите 1 из 4.»
  • Элемент списка.
  • Множественный выбор (галочка), «выберите один или несколько из следующих».
  • бесплатный текст (текстовое поле), «что вы думаете о ...?» Или используется, если выбрана «другая» радиокнопка.

Я рассматривал измерение вопросов и измерение ответов. Проблема с этим - свободный текст загрязнит измерение ответов множеством ответов, которые относятся только к одному пользователю по одному вопросу.

Эта модель также означает, что в таблице фактов есть таблица в каждом ответе для каждого пользователя, что, по моему мнению, не является идеальным, но я могу жить с этим, если это необходимо. Таблица фактов в основном состоит только для соединения других таблиц. Таблица фактов будет примерно: Fact_Table_ID, UserID, QuestionID, AnswerID, Is_Answered (логическое, да/нет). Это все, чтобы посмотреть, на какие вопросы отвечают, и на которые не отвечают.

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

Я был бы признателен за некоторые предложения о том, как лучше всего подойти к этому.

+0

Что находится в вашей таблице фактов? Не совсем понятно, что вы сказали здесь - не могли бы вы отредактировать свой пост, чтобы объяснить его структуру и как вы предполагаете, что он присоединился к вашим параметрам вопросов и ответов? –

+0

таблица фактов в основном предназначена только для соединения других таблиц. Факт таблица будет примерно: Fact_Table_ID, Идентификатор_пользователя, QuestionID, AnswerID, Is_Answered (булево, да/нет) То о .Таке не все ли способ, чтобы увидеть, какие вопросы в настоящее время в ответ какие не получил ответа. Тем не менее, я вижу, что они хотят разобраться в индивидуальных ответах, и там, где freetext и множественный выбор становятся хитрыми. –

ответ

0

Хотя я все равно дам ответ на ваш вопрос, я чувствую, что мне нужно начать с вопроса, действительно ли эти данные относятся к схеме звезд. Некоторые данные не подходят для размерной модели - может ли это быть так? Подумайте о том, как будут использоваться данные, и прежде чем идти слишком далеко по этому пути, решите, имеет ли смысл хранить эти данные в другом формате.

Ральф Кимбалл иногда обсуждает наличие «ODS», который является нестандартным хранилищем данных. Это может использоваться для определенных отчетов и запросов, которые не могут быть выполнены вашей транзакционной системой, но по какой-либо причине они не относятся к витринам данных измерений или хранилищу данных.


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

Вместо столбца бит Is_Answered вы можете иметь строку в своем измерении ответов, что означает «нет ответа», то есть не обрабатывать ответ как сам ответ. Всякий раз, когда вы находите вопрос, на который кто-то не ответил в ETL, вы бы посмотрели ту определенную строку в измерении ответа.

+0

Спасибо, Джо. Я сам думал, что это скорее стандартная реляционная модель, чем схема звезды, но действительно хотела, чтобы она вписывалась в звезду. Это может быть просто не так. Il тратит больше времени на это и обновляю нить, когда у меня есть вывод. надеюсь, это поможет помочь кому-то еще с подобной проблемой –