powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подкиньте идею, пожалуйста по проектированию.
23 сообщений из 23, страница 1 из 1
Подкиньте идею, пожалуйста по проектированию.
    #32310634
MichaelP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача такая.
Проект опроса населения (соц. опрос). Имеем машиночитаемые бланки с номером вопроса и вариантами ответов (предусмотрен выбор нескольких вариантов!).
Эти машиночитаемые бланки сканируются и распознаются FormReader 6. Далее они экспортируются в базу данных (к примеру MS SQL Serv). Но вся фишка в том, что на этот бланк накладывается шаблон, который позволяет связать поля этого бланка с конкретными полями базы данных (куда идет экспорт), причем только ОДНОЙ ТАБЛИЦЫ!!! Получается супер-ненормализованная база данных. Вопрос последующей нормализации дело второе. Самое главное, как организовать эту ЕДИНСТВЕННУЮ таблицу?
Существует примерно 60 вопросов и на них в среднем 6-8 ответов.
Есть мысль создать таблицу с колонками типа A1, A2, A3...B1, B2,...G6, G7..., где каждая колонка вариант ответа. И поле каждого ответа на бланке (типа "МЕТКА") связать со столбцом. Но я удивлюсь с такой таблицей работать. Ну никаких больше вариантов кроме трехмерной таблицы в голову не лезет. Все было бы просто, если б была возможность выбрать только один вариант ответа.
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32310902
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно исходить из того, для чего нужна данная БД.

Я полагаю так, что основная ее задача - анализ и получение разнообразных отчетов (разрезов и т.п.).

Т.е. данные туда будут добавляться редко и большими массивами.
Для такого рода БД денормализованная структура (в твоем случае) не так уж и плоха, т.к. позволит _быстро_ генерить основную массу отчетов.

Основная проблема - создание устойчивой процедуры загрузки данных.

---------------
Работай с умом, а не до ночи.
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32310936
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
денормализованная структура - это миф или ошибка проектирования - что-то там ускорять с ее помощью действительно можно только в редких случаях (если конечно не о схеме звезда идет речь). Очень часто по нормализацией и денормализацией принимают совсем не то...
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32310996
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MichaelP

Проблема, как я понимаю, в необходимости хранить в одной ячейке несколько значений. Если бы, как вы говорите "если б была возможность выбрать только один вариант ответа", то как я понимаю все было бы просто: создается таблица с 60 колонками, каждая колонка представляет собой вопрос, каждая строка - ответ одного респондента: 1, 2 или скажем 5.

Давайте подумаем, а можно ли в одной ячейке хранить НЕСКОЛЬКО значений одновременно???... Ответ естественен и очевиден - ДА. Слово "маска" вам что-нибудь говорит???... Уверен, что вы уже сообразили, как надо сделать. Если нет - жую подробно:

Пусть всего бывает 10 вариантов ответа на каждый вопрос.
Если респондент выбрал один вариант (пусть это будет первый вариант), пишем в ячейку число "1".
Если он выбрал первый и второй вариант, пишем в ячейку число 21
Если он выбрал первый, второй и пятый вариант, пишем число 521.


УСЕ. Просто и элегантно. И совершенно незачем выдумывать онанизм в духе "A1, A2, A3...B1, B2,...G6, G7... " Только базу желательно выбрать побольше (скажем, 100 вмсето 10) - вдруг вариантов ответа будет, скажем, 12.....

ЗЫ. Если идея прокатит, с вас пиво...


ЗЫЗЫ. И не забудьте документировать алгоритм... А то знаем мы, такие недокументированные кулибинские программы...
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311276
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ЦК

На первый взгляд - все в шоколаде.
А если нужно будет выбрать все вопросы, к примеру, на которые даны ответы 4 и 3? LIKE поюзать? На массивах в 2-3млн записей можно будет кофе попить, пока такой запрос отработает.

Если же взять таблицу такой структуры:
1 Вопрос
2 Ответ_1
3 Ответ_2
4 Ответ_3
:::
N Ответ_<макс_количество возможных вариантов(8 к примеру)>

И проиндексировать каждый столбец, то такого рода запросы будут "на ура" отлетать.

ЗЫ Или я что-то не так понял?

---------------
Работай с умом, а не до ночи.
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311549
flatron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно не в строке хранить, а в битах целого числа :)
будет быстрее!
но на самом деле для еще большего ускорения таблицу можно расширить..
например для вопроса "пол" завести два битовых поля SexM, SexF и т.п.
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311624
Репликант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например для вопроса "пол" завести два битовых поля SexM, SexF и т.п.

В смысле не 2 битовых поля(столбца), а 2 бита в числе, отвечающие за пол? А почему не хватит одного: 0 - Ж, 1 - М?
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311809
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jimmy

А если нужно будет выбрать все вопросы, к примеру, на которые даны ответы 4 и 3? LIKE поюзать? На массивах в 2-3млн записей можно будет кофе попить, пока такой запрос отработает.

А это уже другой вопрос. Я бы его сформулировал так: "Как оптимизировать операции (список операций: поиск, выборка, поиск по шаблону и т.п.) для таких-то и таких-то данных?"

Напомню, что изначальный вопрос звучал так:
"Самое главное, как организовать эту ЕДИНСТВЕННУЮ таблицу?"


Я бы эту задачу решал исходя из такого подхода:
Есть одна-единственная таблица с сырыми данными. Надо получить ответы на запросы с приемлимым временем отклика (несколько секунд).

ОК.

А кто сказал, что остальные выборки должны происходить именно из одной-единственной таблицы? Соответственно решаем какие типичные запросы будут проходить в системе, под них оптимизируем структуры и хранение, а сырые данные в оптимизированые стуктуры загружаем на периодической основе. Что-то типа миниатюрного хранилища данных.

Единственные недостаток - потребуется больше физического места. Но для объемов в 2-3 млн. записей это несущественно.



2 flatron

Вообще-то числа и имелись в виду.

...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311846
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Репликант

В смысле не 2 битовых поля(столбца), а 2 бита в числе, отвечающие за пол? А почему не хватит одного: 0 - Ж, 1 - М?

Патаму шта... Надо еще пид арасов, лесбиянок и гермафродитов учитывать... Тут двумя битами не обойдешься. Да и все равно бит не меньше байта в памяти занимает, так что один хрен...

...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311848
flatron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Репликант писал:В смысле не 2 битовых поля(столбца), а 2 бита в числе, отвечающие за пол? А почему не хватит одного: 0 - Ж, 1 - М?

с полом да :)
а если больше чем 2 значения могут быть, то для ускорения запросов (лишние всякие битовые операции) лучше столбцов добавить :)

ваще-то, задачку-то решать с помощью олапа надо.
все вопросы с ответами ложатся в измерения прекрасно
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311907
AISOFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы использовал такую структуру таблицы:
<номер_бланка, номер_ответа, вариант_ответа, ответ>.
Вроде бы все просто и легко.
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311910
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 flatron

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


Ну-ка, ну-ка, интересно получается. А вот с этого момента можно поподробнее - какие у вас измерения получаются?...

...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311923
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AISOFT

Я бы использовал такую структуру таблицы:
<номер_бланка, номер_ответа, вариант_ответа, ответ>.
Вроде бы все просто и легко.


Йес оф коз, как говорят буржуины. Хорошая добротная таблица фактов. Только совместима ли такая структура с таким ограничением:

Но вся фишка в том, что на этот бланк накладывается шаблон, который позволяет связать поля этого бланка с конкретными полями базы данных (куда идет экспорт), причем только ОДНОЙ ТАБЛИЦЫ!!!

???

...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311934
flatron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Циничный Кот
измерение = вопрос :)
60 вопросов - 60 измерений, если в одном кубе хранить
измерение состоит из ответов

что именно поподробнее? :)
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32311967
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 flatron

что именно поподробнее? :)

Да не, уже ничего... Просто я бы хотел полюбоваться на картину работы с 60 измерениями одновременно... В которых всего с десяток членов... И непонятно какие иерархии...

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


...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32312001
flatron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотел полюбоваться на картину работы с 60 измерениями одновременно
потенциальные запросы пугают? :)

И что, кстати, делать если вопросы связаны по смыслу, и ответ на десяток следующих зависит от пары предыдущих???...
ну... и что? причем тут куб? :) это надо при импорте в таблицу фактов отлавливать... (это = нарушения всякие и т.п.)
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32312070
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 flatron

потенциальные запросы пугают? :)

Скорее потенциальная бессмыссленность оных. Лучше я сам организую исполнение пяти типичных запросов чем буду делать тул, которым никто никогда ничего толкового сделать не сможет. Вопрос-то в том, ЧТО анализировать и КАК. Пока мне это совершенно непонятно. Так что я не сторонник применения OLAP везде, где его в принципе можно применить.


ну... и что? причем тут куб? :)

Притом. Измерения - понятия независимые по своей сути. Вот когда у вас, скажем, есть измерение "Время", измерение "Центр Затрат" с соответствующими иерархиями и факт "Расходы", при этом данных дофига - олап будет очень удачным инструментом - интуитивно понятным и позволяющим делать любые интересующие срезы.

А вот в различных опросниках (я так сильно подозреваю, что в первом посте фигурировали какие-то маркетинговые опросники) вопросы обычно группируются по группам, внутри которых есть смысловые связи. И выносить их в отдельные измерения (независимые), при этом плодить их больше шести десятков - имхо именно это и называется забивать молотком гвозди...

ИМХО, конечно.

...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32312119
AISOFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но вся фишка в том, что на этот бланк накладывается шаблон, который позволяет связать поля этого бланка с конкретными полями базы данных (куда идет экспорт), причем только ОДНОЙ ТАБЛИЦЫ!!!

Так в чем проблема?
Поле номера бланка соотвествует полю таблицы, в которой хранится номер бланка, поле номера вопроса бланка - соответсвует полю таблицы, в котором хранится номер вопроса, поле номера варианта вопроса и т. д.
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32312175
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AISOFT

А х.з. тогда в чем проблема. Я уже по ходу дела логику рассуждений потерял. Пусть автор объясняет. И так и сяк сделать можно.

...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32315115
2 ЦК

Просто я бы хотел полюбоваться на картину работы с 60 измерениями одновременно... В которых всего с десяток членов...

Оне ж могут комбинироваться(см. вначале)!

Т.е. реально получается 2^6 - 2^8. ИМХО, вполне обоснованное решение.

Но самое разумное решение(ИМХО) - предложенное Вами ранее, с конвертацией исходной таблы(видимо, милая шутка производителя девайса) в нормализованную базу.
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32315296
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Так, мимо проходил

Не. Все-таки чего-то я конкретно не понимаю. Давайте совсем на пальцах:

Оне ж могут комбинироваться(см. вначале)!
Т.е. реально получается 64 - 256. ИМХО, вполне обоснованное решение.



Возьмем в качестве клиента олапа простенький PivotTable в Excel. Теперь представьте, сидит юзер, набрасывает измерения в табличку. Когда у него одно измерение в столбцах, одно в колонках - все хорошо, все понятно. Имеем табличку. Одно от другого зависит, все кристально ясно.

Добавляем еще по измерению. Уже два - ну тоже разобраться можно. Еще парочку. Вот тут уже глазенки-то разбегаться начинают. 3х3 уже хреновочитабельно. 5х5 нечитабельно в принципе - и аналитическая ценность такого отчета равна нулю. Дело-то не в том, как кучу данных на один лист запихать, а как коротко и ясно выразить сновную мысль. В этом весь пафос-то...


Исходя из этого примера объясните мне хотя бы на пальцах как юзер будет работать в размерностями 30х30... При этом не забывая о том, что всякие разные маркетологи в среднем с трудом пользуются Экселем и более сложным инструментарием не владеют в принципе. PivotTable чуть ли не вершина мастерства...

...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32315701
To ЦК

Рулез! Разговор таки дошел до того, что задача от юзера неформализована! Мож, от того и танцевать надо? Мы имеем с ОДНОГО(уверен, что есть еще пока скрытая развертка по регионам, социальному срезу, etc) листа матрицу 60 вопросов * 2^8(комбинация ответов). Что лежит за пределом человеческого восприятия. Вывод: резалты обрабатываются разными группами, => затачиваться придется ПОД КАЖДУЮ из них. Я не прав? А что касается топика – акт отчаяния, человек осюсяет, что здесь все криво, дебилизм на Фходе(оставим входную инфу на совести поставщика хардвера/софтвера, это перегоняется в нормализованную за полчаса), полная неопределенность на выходе….
«Вот тут уже глазенки-то разбегаться начинают. 3х3 уже хреновочитабельно. 5х5 нечитабельно в принципе - и аналитическая ценность такого отчета равна нулю» - именно так! Т.е. ессно, каждой сущностью данного опроса занимаются РАЗНЫЕ группы обработчиков, точиться придется под каждую из них, просто Jimmy пока не дошел до этого, хотя и осюсяет перспективы. НО В ЭТОМ СЛУЧАЕ(как и в любом, связанном с ВР) плясать надо не от входной формы, а от КОНЕЧНОГО ПОЛЬЗОВАТЕЛЯ! Универсальную выходную форму, ИМХО(точнее априори), создать невозможно. И если начальство на одного чела вешает заточку под неформализованный вход/неформализованный выход, то пусть будет готово к тому, что стат.отчеты за 5-6 сек. не выполняются!
...
Рейтинг: 0 / 0
Подкиньте идею, пожалуйста по проектированию.
    #32317102
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Так, мимо проходил

Рулез! Разговор таки дошел до того, что задача от юзера неформализована!

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


И если начальство на одного чела вешает заточку под неформализованный вход/неформализованный выход, то пусть будет готово к тому, что стат.отчеты за 5-6 сек. не выполняются!

Это сильно зависит от объемов данных и от железа. Если сильно захотеть, можно и в 5 сек уложиться. Вопрос стоимости опять же... Когда посчитают - иногда соглашаются и по 30 сек ждать...


ЗЫ. Кстати о результатах. Я точно знаю, ГДЕ можно достать необходимую информацию о том, ЧТО должно быть на выходе. У разработчиков тестов или тех людей, которые эти результаты обрабатывают (-ли) вручную.


...

"ос ю сяет перспективы"



...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подкиньте идею, пожалуйста по проектированию.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]