![]() |
|
Модераторы: LSD |
![]()
|
|
| wer88 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 14.6.2009 Репутация: нет Всего: нет |
Необходимо создать базу данных социологических опросов, в базе имеются следующие таблицы:анкета, тема опроса, вопросы и ответы по выбранной теме. Интересует структура при которой можно сохранить 3Н.Ф.
Заранее благодарен за помощь. |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 10 Всего: 54 |
1. Задача поставлена не полностью, т.к. не указаны атрибуты сущностей (поля таблиц).
2. Говорить о соответствии 3НФ или другой НФ можно будет лишь после выполнения п. 1. 3. Вот что пришло в голову мне в самом общем виде: ![]() В данной БД таблицы "Вопрос" и "Ответ" не что иное как словари... На сколько я понимаю условия 3НФ здесь выполняються. Но наверняка потребуется дополнить БД какой либо ещё информацией, а это в свою очередь может и повлиять на степень нормализации БД. Задача поставлена с конца... В моем понимании проектирование БД происходит следующим образом: 1. Выбор предметной обласи, которую должна описывать БД. 2. Определение основных сущностей. 3. Определение связей между сущностями. 4. Определение атрибутов сущностей. 5. Физическая реализация (преобразование логической структуры в физическую). 6. Решение вопросов оптимизации, в данном случае - нормализация (по сути тот же п.5). И как правило сколько и каких таблиц будет в БД (определяется на этапе 5) зависит от того, зачем нужна эта БД (этапы 1-4). Нормализация (не сталкивался сильно плотно, поэтому не могу сказать что всегда) как вариант может привести к изменению количества таблиц. В вашем случае БД при наложении ограничений на этапы 3, 5, 6 осуществляется попытка решить вопросы этапов 1, 2, 4... Получается, что БД уже спроектирована, а вот что она будет описывать это теперь не проблемы разработчика -------------------- Слава Україні! |
|||
|
||||
| wer88 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 14.6.2009 Репутация: нет Всего: нет |
Спасибо за ответ! Теории правда слишком много)
Остальные поля таблиц не существенны, там как их понимаю как сделать. Вот именно проблема с этими 3мя. Проблема в том что если так сделать то вопросы никак не будут зависеть от темы опроса. Вот полная постановка задачи что бы внести ясность: "Для заполняющих анкету используются следующие поля: возраст, пол, место жительства и т.д. Опрос должен быть произведён на различные темы, по каждой теме несколько вопросов" |
|||
|
||||
| Gluttton |
|
||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 10 Всего: 54 |
Диалог перешол в конструктивную плоскость
Ну дык 3НФ А почему собственно говоря вопросы должны зависить от темы? Я думаю вопросы типа: - место работы? - вероисповедание? - партийность? - ориентация? - и многие другие. вполне могут присутствовать в нескольких опросах.
А тут я вообще запутался Я вижу всё следующим образом: 1. Опрос (по телевизору говорят: "... по результатам опроса проведенного ... х% опрошеных ответили...) - это мероприятие по изучению мнения опрашиваемых в рамках одной темы. 2. Анкета - набор вопросов и соответстующих им ответов в рамках опроса одного респондента. 3. Как говорил выше, "Вопросы" и "Ответы" - это словари. Кстати использовать таблицу "Ответы" логично лишь в том случае, когда множество ответов строго органичено иными словами в анкетах можно отвечать только так:Да, Нет, Не знаю, хочу, не хочу, ... и при этом в анкетах не должно быть вопросам типа: "расскажите о себе". В противном случае, она (таблица) рискует вырасти до огромных размеров. -------------------- Слава Україні! |
||||
|
|||||
| wer88 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 14.6.2009 Репутация: нет Всего: нет |
Ну смысл такой, есть темы разные, допустим "политика", в ней вопросы только про политику, и когда будем заполнять базу то если в опросе на тему политика другие вопросы мы не можем выбрать. Поэтому и проблемы что в посатановке задачи указано что опросы могут быть на различные темы. А ответы хочу сделать только да/нет, что бы меньше проблем, т.е. ответы не зависят от тематики.
|
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 10 Всего: 54 |
У-упс
Для описаной мною БД в предыдущем посте структура будет такая: ![]() Пришлось добавить дополнительную таблицу для обеспечения связи "многое ко многим", иными словами для того, что бы в одной анкете могли быть различные вопросы (больше одного) и один и тот же вопрос мог бы использоваться в различных анкетах... А вот с учетом группировки опросов по темам: ![]() Это сообщение отредактировал(а) Gluttton - 14.6.2009, 17:41 -------------------- Слава Україні! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
На самом деле не должно быть так. Сама совокупность данных (Тема - Вопрос - Варианты ответа - Ответ) явно тянет на больше, чем быть словарями. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 10 Всего: 54 |
Akina, а про варианты ответов я как то и не подумал
Что то типа такого? ![]() wer88, количество таблиц строго ограничена? -------------------- Слава Україні! |
|||
|
||||
| wer88 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 14.6.2009 Репутация: нет Всего: нет |
Gluttton, Вроде второй вариант самое оно) Спасибо! Надеюсь перенос БД в интербейз и далее в программу не выявит больше проблем.
Ещё раз спасибо, буду сейчас пробовать! Добавлено через 2 минуты и 13 секунд Gluttton, Количество таблиц не ограничено, но дальше ещё запросы писать и анализ данных, так что чем сложнее база тем сложнее это будет делать. Добавлено через 8 минут и 26 секунд Gluttton, Третий вариант как то смущает, тут получается при заполнении анкеты мы выбираем сразу вопрос с уже указанной темой, а не тему а уже по ней вопрос. Т.е. хочу сказать что при заполнении таблицы содержания анкеты, выбирая ответ будет неизвестно по какой он теме( |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Начните не с построения вариантов структуры, а с выделения сущностей - ведь даже этого в полном объёме не сделано... затем определите их соотношения, потом постройте связи... а то пока фигня сплошная получается.
Отличный пример фигни, кстати. Как в структуре, так и (уж извините) в голове вопрошающего. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| wer88 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 14.6.2009 Репутация: нет Всего: нет |
Gluttton, Спасибо большое!!! Решил остановить свой выбор на такой структуре:
![]() Только теперь другая проблема возникла, необходимо написать запрос: подсчитать соотношение количества ответов по теме к количеству положительных ответов на эту тему, при чем соотношение необходимо подсчитать для анкет где указан возраст до 30 и после 30, т.е. разные возрастные группы. Если кто что подскажет буду очень благодарен. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 11 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Структура - плохая откровенно.
Представь, что вопрос анкеты предполагет несколько фиксированных ответов, выбор из них (или только одного, или любого количества) - где ты будешь хранить бланк анкеты? А несколько вариантов ответа? А если допустим ответ "Свой вариант"? Представь себе, что один вопрос включён в несколько опросов - что будешь делать? Дублировать? Представь себе что один отвечающий заполняет сразу несколько бланков опросов - тоже будешь дубли плодить? И так далее, и тому подобное... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| wer88 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 14.6.2009 Репутация: нет Всего: нет |
Akina, Да я понимаю что плохая, но выбора у меня нету, я не специалист по бд, и знаю их поверхностно, но база очннь нужна.
Zloxa, Огромное спасибо) таких конструкций никогда ещё не видел, нам в универе базы дали лишь бы было. Вбил вот такой код:
К сожалению ругается: ![]() П.с. не помню написал ли, мне нужен скрипт что бы для каждой темы считал это соотношение, буду крайне признателен, и прошу прощения за свою некомпитентность в вопросе, потому и обратился за помощью. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 11 Всего: 161 |
К радости ли, к горю ли, я не являюсь экспертом по IB, однако поиск в гугле по ключевым словам "Interbase Case" по второй же ссылке дал обсуждение схожей проблемы, в качестве солюшина было предложено сменить сервер. Это сообщение отредактировал(а) Zloxa - 16.6.2009, 17:50 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |