|
|
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Просидев несколько дней в интернетах и не найдя ничего похожего на то, что я ищу, решил обратиться в мекку баз данных :) Задачу поставили следующую: Создать многофункциональный web-портал, одной из фишек которого будут соц опросы. Они могут быть разной степени гибкости и размерности. Проблема в том, что я не могу сложить ни в голове ни на бумаге благоприятную для работы структуру базы данных, где вся информация касательно вопросов будет храниться. Как я себе представлял это: 1) Таблица polls , где содержатся все анкеты опросов и информация, которая их касается. Ну тут все понятно. 2) Таблица polls_questions , где хранятся абсолютно все вопросы. Родитель определяется полем id_polls. 3) Таблица polls_answers . Тут все сложнее. Таблица, как и предыдущие, вроде как, небольшая вширь, но очень стремительно растет в высоту. Тут хранятся все данных касательно ответов, т.е. поле id_polls_questions определяет родителя варианта. 4) Таблица polls_results . Тут у меня вообще все не густо. Задаюсь вопросами всех типов. Начиная от того, каким образом организовать таблицу. Вообще правильно ли делать так, что 1 строка в таблице = 1 человек прошедший опрос. В каком формате будут записываться данные ? Сделать таблицу динамической в плане ширины невозможно, но и статическую ширину задавать некорректно ( в случае, если под каждый вариант ответа ставить 1 столбец ). Либо создать для тела опроса большое поле, куда в кодированном или маскированном формате будут вноситься ответы и потом, при надобности, разбивать эту выборку и смотреть. Но тогда возникает следующий вопрос: будет ли такой способ удобен и быстр при работе с результатами опроса? Построение статистики по определенному опросу / графиков и тд. Собственно такая вот проблема. Простите за стену, возможно, не совсем понятного текста. Пытался изъясняться по-максимуму ) Спасибо всем за внимание и за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 00:17 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
alexandr.novitskiy, polls_answers - варианты ответов, напротив каждого набирается количество варианта (если, конечно, данные каждого респондента не учитываются) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 01:58 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
polls_answers, соответственно - она Многие по отношению к Вопросу, а 4-я - не нужна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 02:01 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
polls_answerspolls_answers, соответственно - она Многие по отношению к Вопросу, а 4-я - не нужна Предлагаете в 3й таблице poll_answers добавить еще одну колонку, которая просто будет хранить в себе int число, которое выводит кол-во проголосовавших за данный вариант? Если так, то спасибо. Вполне прозрачное решение, я чет слишком закрутился и не подумал о нем даже. Хотя надо будет уточнить подробности у заказчика по этому поводу.. Спасибо большое за подсказку, буду думать ) Не откажусь еще от каких-либо вариантов. Может кто сталкивался с подобной проблемой и нашел рациональные решения. Система обещает быть нагруженной, соответственно и база будет довольно-таки весомой. Не хочется заставлять людей ждать даже при самых интересных выборках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 02:18 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
alexandr.novitskiyПредлагаете в 3й таблице poll_answers добавить еще одну колонку, которая просто будет хранить в себе int число, которое выводит кол-во проголосовавших за данный вариант? Если так, то спасибо. Вполне прозрачное решение, я чет слишком закрутился и не подумал о нем даже. Хотя надо будет уточнить подробности у заказчика по этому поводу.. Имхо это плохой вариант - если опроc состоит из нескольких вопросов, Вы никогда не сможете посчитать, сколько из выбравших вариант Б 3-го вопроса выбрали и вариант В 6-го. По Вашему варианту отношение polls и polls_questions я бы делал "многие-ко-многим" - вопрос может входить в несколько опросов. + я бы poll_results разделили бы на 2 таблицы. polls_results - идетифицирцует участника опроса ( с полями, зависящими от того, как предполагается их идентифицировать) + polls_answer_results, которая практически является связью polls_results и polls_answers. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 11:04 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинalexandr.novitskiyПредлагаете в 3й таблице poll_answers добавить еще одну колонку, которая просто будет хранить в себе int число, которое выводит кол-во проголосовавших за данный вариант? Если так, то спасибо. Вполне прозрачное решение, я чет слишком закрутился и не подумал о нем даже. Хотя надо будет уточнить подробности у заказчика по этому поводу.. Имхо это плохой вариант - если опроc состоит из нескольких вопросов, Вы никогда не сможете посчитать, сколько из выбравших вариант Б 3-го вопроса выбрали и вариант В 6-го. По Вашему варианту отношение polls и polls_questions я бы делал "многие-ко-многим" - вопрос может входить в несколько опросов. + я бы poll_results разделили бы на 2 таблицы. polls_results - идетифицирцует участника опроса ( с полями, зависящими от того, как предполагается их идентифицировать) + polls_answer_results, которая практически является связью polls_results и polls_answers. Спасибо за ответ! По поводу "многие-ко-многим" - заведомо предполагаем, что все опросы и вопросы в системе уникальные, т.к. они создаются пользователями, а не системой, соответственно невозможно никак к новому опросу прикрепить уже из созданной анкеты вопрос, даже если они на 100% идентичны по содержанию.. это будет каша. Если я Вас правильно понял. А если такой момент, что в polls_results требуется только id другого участника этой же системы. Зная id мы сможем взять всю нужную информацию. И тогда можно обойтись без этой таблицы, а достаточно будет опять же только одной polls_answers_results где будет id вопроса, ответ и id пользователя ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 11:25 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
alexandr.novitskiy Доброго времени суток! Просидев несколько дней в интернетах и не найдя ничего похожего на то, что я ищу, решил обратиться в мекку баз данных :) Задачу поставили следующую: Создать многофункциональный web-портал, одной из фишек которого будут соц опросы. Опросы кого? Зарегистрированных пользователей? Вам не поставили задачу, а Вы говорите поставили. alexandr.novitskiyОни могут быть разной степени гибкости и размерности. Заказчик дал ам определения "гибкости" и "размерности"? alexandr.novitskiyПроблема в том, что я не могу сложить ни в голове ни на бумаге благоприятную для работы структуру базы данных, где вся информация касательно вопросов будет храниться. Разумеется, ведь задача не поставлена. alexandr.novitskiyКак я себе представлял это: 1) Таблица polls , где содержатся все анкеты опросов и информация, которая их касается. Ну тут все понятно. Тут понятно ничуть не больше, чем во всех остальных таблицах. alexandr.novitskiy2) Таблица polls_questions , где хранятся абсолютно все вопросы. Родитель определяется полем id_polls. То есть, вопрос "Пол" будет храниться несколько раз? Или речь идет о зарегитрированных пользователях, пол которых содержится в анкете пользователя? alexandr.novitskiy3) Таблица polls_answers . Тут все сложнее. Таблица, как и предыдущие, вроде как, небольшая вширь, но очень стремительно растет в высоту. Тут хранятся все данных касательно ответов, т.е. поле id_polls_questions определяет родителя варианта. Об ответах вообще рано говорить. alexandr.novitskiy4) Таблица polls_results . Тут у меня вообще все не густо. Задаюсь вопросами всех типов. Начиная от того, каким образом организовать таблицу. Вообще правильно ли делать так, что 1 строка в таблице = 1 человек прошедший опрос. В каком формате будут записываться данные ? Сделать таблицу динамической в плане ширины невозможно, но и статическую ширину задавать некорректно ( в случае, если под каждый вариант ответа ставить 1 столбец ). Либо создать для тела опроса большое поле, куда в кодированном или маскированном формате будут вноситься ответы и потом, при надобности, разбивать эту выборку и смотреть. Но тогда возникает следующий вопрос: будет ли такой способ удобен и быстр при работе с результатами опроса? Построение статистики по определенному опросу / графиков и тд. Собственно такая вот проблема. Простите за стену, возможно, не совсем понятного текста. Пытался изъясняться по-максимуму ) Спасибо всем за внимание и за помощь! Займитесь постановкой задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 11:34 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
alexandr.novitskiy, Ну сами смотрите, нужны ли Вам какие-то другие атрибуты, кроме ID участника. Может, время прохождения опроса, может, источник "откуда пользователь пришел проходить опрос"... Я бы сделал эту таблицу на всякий случай. Если точно никакие дополнительные атрибуты не понадобятся - ну да, наверно можно не делать. Постройте сначала логическую модель - какие данные нужны, а какие нет, потом уже легче будет разобраться с таблицами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 11:37 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
Бредятина, Опросы будут содержать сугубо тематические вопросы. Никакой воды про пол, возраст, имяфамилию и тд. В Вашем сообщении ничего, кроме критики не заметил. Хотя задачу описал, вроде бы, вполне понятно.. таблица polls - храните в себе описательную инфо об анкете.. фото / видео / текстовые поля описания самого опроса. Что же тут непонятного ? Задача, по сути, вполне бытовая, но с некоторой начинкой. Вопрос только в том, как лучше хранить данную информацию, только и всего. Есть сами опросы (polls), вопросы к ним (polls_questions), ответы на вопросы ( polls_answers ) и таблица результатов, которая предположительно может работать как я описал в предыдущем посте. Если что именно непонятно - дайте мне знать, попробую подробнее описать проблему. Кот Матроскинalexandr.novitskiy, Ну сами смотрите, нужны ли Вам какие-то другие атрибуты, кроме ID участника. Может, время прохождения опроса, может, источник "откуда пользователь пришел проходить опрос"... Я бы сделал эту таблицу на всякий случай. Если точно никакие дополнительные атрибуты не понадобятся - ну да, наверно можно не делать. Постройте сначала логическую модель - какие данные нужны, а какие нет, потом уже легче будет разобраться с таблицами. Спасибо за дельное замечание. При написании ТЗ было достаточно только той инфо, которая есть о пользователе уже в системе. Опросы будут проходиться только внутри сайта и нигде больше. Информация при регистрации указывается вполне исчерпывающая и подтверждается верификацией по скану паспорта. С этим проблем возникнуть не должно, следовательно и для окончательных построений результатов и графиков вполне хватит id пользователей, которые хранятся в ответах, из них уже можно будет создавать нужную статистику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 12:11 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
alexandr.novitskiyБредятина, Опросы будут содержать сугубо тематические вопросы. Никакой воды про пол, возраст, имя фамилию и тд. Значит пока не разобрались. alexandr.novitskiyВ Вашем сообщении ничего, кроме критики не заметил. Хотя задачу описал, вроде бы, вполне понятно.. Можете просто проигнорировать, и делать свои таблицы:) Задачу Вы только сейчас начали описывать. Но не получается пока. Мешают термины "сугубо тематические" и "вода". alexandr.novitskiyтаблица polls - храните в себе описательную инфо об анкете.. фото / видео / текстовые поля описания самого опроса. Что же тут непонятного ? Мне - ничего не понятно. Но главное ведь, чтобы Вам было понятно. alexandr.novitskiyЗадача, по сути, вполне бытовая, но с некоторой начинкой. Не знаю в какой класс может перейти "вполне бытовая задача" при наличии "некоторой начинки". Может быть, в "сложную производственную". alexandr.novitskiyВопрос только в том, как лучше хранить данную информацию, только и всего. "Данную" - это Вы хорошо сказали:) Да, я сразу не сообразил, что вопрос очень простой. alexandr.novitskiyЕсть сами опросы (polls), вопросы к ним (polls_questions), ответы на вопросы ( polls_answers ) и таблица результатов, которая предположительно может работать как я описал в предыдущем посте. Если что именно непонятно - дайте мне знать, попробую подробнее описать проблему. Мне все понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 12:38 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
Бредятинаalexandr.novitskiyБредятина, Опросы будут содержать сугубо тематические вопросы. Никакой воды про пол, возраст, имя фамилию и тд. Значит пока не разобрались. alexandr.novitskiyВ Вашем сообщении ничего, кроме критики не заметил. Хотя задачу описал, вроде бы, вполне понятно.. Можете просто проигнорировать, и делать свои таблицы:) Задачу Вы только сейчас начали описывать. Но не получается пока. Мешают термины "сугубо тематические" и "вода". alexandr.novitskiyтаблица polls - храните в себе описательную инфо об анкете.. фото / видео / текстовые поля описания самого опроса. Что же тут непонятного ? Мне - ничего не понятно. Но главное ведь, чтобы Вам было понятно. alexandr.novitskiyЗадача, по сути, вполне бытовая, но с некоторой начинкой. Не знаю в какой класс может перейти "вполне бытовая задача" при наличии "некоторой начинки". Может быть, в "сложную производственную". alexandr.novitskiyВопрос только в том, как лучше хранить данную информацию, только и всего. "Данную" - это Вы хорошо сказали:) Да, я сразу не сообразил, что вопрос очень простой. alexandr.novitskiyЕсть сами опросы (polls), вопросы к ним (polls_questions), ответы на вопросы ( polls_answers ) и таблица результатов, которая предположительно может работать как я описал в предыдущем посте. Если что именно непонятно - дайте мне знать, попробую подробнее описать проблему. Мне все понятно. Напоминаете капризную бабушку на скамейке во дворе, ей Богу.. У меня какое-то deja vu, я опять кроме упреков и непонятных, необоснованных замечаний не увидел. Неужто ник напрямую связан с тематикой постов ? Будьте проще и люди к Вам потянутся.. Я не против любых комментариев.. но хотелось бы чтобы хоть как-то они касались темы или же в форме замечаний, но по делу, касательно того, где и почему я неправильно подошел к решению задачи, а не придирки к тезисам или отрывкам из текста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 12:54 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
alexandr.novitskiyНапоминаете капризную бабушку на скамейке во дворе, ей Богу.. Думаю, постепенно разберетесь, не переживайте:) alexandr.novitskiyУ меня какое-то deja vu, я опять кроме упреков и непонятных, необоснованных замечаний не увидел. Будут еще похвалы и награды:) alexandr.novitskiyНеужто ник напрямую связан с тематикой постов ? Абсолютно точно:) alexandr.novitskiyБудьте проще и люди к Вам потянутся.. Неверное представление о четвертой таблице. alexandr.novitskiyЯ не против любых комментариев.. но хотелось бы чтобы хоть как-то они касались темы или же в форме замечаний, но по делу, касательно того, где и почему я неправильно подошел к решению задачи, а не придирки к тезисам или отрывкам из текста. Форум - это же тоже срез общества, так сказать. Никуда здесь и от таких идиотов, как я, не денешься. Просто не обращайте внимания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 14:14 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
> благоприятную для работы структуру базы данных Как бы не очень понятно, кому вдруг сейчас понадобились социологические опросы? ;) > polls_answers Ответы могут быть трех типов: стандартные шкалы (как правило, из 2 - 5 элементов), предопределенный набор, свободный ответ. Плюс комбинации. Обычное, в общем, решение. Насколько я понимаю, вам хочется развернуть ответы горизонтально? Можно, но imho смысла в этом немного: архив, в общем, ценности не представляет, вам понадобятся итоговые результаты. Если задача поставлена классическим образом, хранить есть смысл развернутые данные только текущего опроса. Однако, есть и другие варианты постановки задачи. Вы бы уточнили, что вы хотите получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 15:13 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
Бредятина, Можно хотя бы 1-2 ссылки на Ваши полезные, наполненные содержанием, касающимся темы топика, в любой области ? guest_20040621> благоприятную для работы структуру базы данных Как бы не очень понятно, кому вдруг сейчас понадобились социологические опросы? ;) > polls_answers Ответы могут быть трех типов: стандартные шкалы (как правило, из 2 - 5 элементов), предопределенный набор, свободный ответ. Плюс комбинации. Обычное, в общем, решение. Насколько я понимаю, вам хочется развернуть ответы горизонтально? Можно, но imho смысла в этом немного: архив, в общем, ценности не представляет, вам понадобятся итоговые результаты. Если задача поставлена классическим образом, хранить есть смысл развернутые данные только текущего опроса. Однако, есть и другие варианты постановки задачи. Вы бы уточнили, что вы хотите получить? Ну хозяин - барин ) кому-то значит понадобились.. это не так уж и диковинно, т.к. таким образом очень много успешных компаний просматривает тенденции потребительских интересов. В таблице вопросов будет так же колонка, где будет указан тип вопроса ( один из трех вами перечисленных ). Таким образом на комбинированные вопросы ( с чекбоксами ) ответ можно заносить так же как и обычный, но с разделителями, допустим "1|2|5" потом уже разбивать их и показывать пользователю, если надо будет. Открытые вопросы аналогично просто будут содержать развернутый текстовый ответ в том же поле. Получить я хочу помощь в поиске правильного решения для структурирования базы, как правильно "раскидать" данные в базе, на сколько таблиц лучше разделить чтобы в будущем не возникло путаницы при сборе данных об определенном опросе. Какая цепочка сбора будет самой оптимальной и быстрой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 15:37 |
|
||
|
Структура базы данных соц. опросов
|
|||
|---|---|---|---|
|
#18+
alexandr.novitskiyБредятина, Можно хотя бы 1-2 ссылки на Ваши полезные, наполненные содержанием, касающимся темы топика, в любой области ? Тогда есть неточность в третьей таблице, если так переиначили постановку задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2012, 16:02 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38029533&tid=1541483]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
186ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 510ms |

| 0 / 0 |
