![]() |
|
Модераторы: LSD |
![]()
|
|
| Гость_Mixer |
|
|||
|
Unregistered |
Добрый день...
Хочется услышать совет толковых людей... Ситуация следующая: предположим мы создаем БД анкетирования и из все кучи наших таблиц у нас будет таблица которая непосредственно будет содержать результаты ответов. НА все вопросы даются варианты ответов, причем для многих вопросов возможен выбор нескольких вариантов. Предположим что на каждый вопрос возможен выбор только одного варианта, тогда кажется разумным создать для каждого вопроса таблицу с вариантами ответов (или одну таблицу с вариантами для всех вопросов). А как изящно сделать поддержку выбора нескольких вариантов ответов??? мне, как програмисту, в голову пришла идея с флагами, каждый бит соответствует одному варианту, в БД храним одно число. Но тогда как орагнизовать целостность данных в БД ??? В общем как поступают в подобных случаях ??? (интересует решение на логическом уровне) За ранее благодарен...!!! |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 6 Всего: 35 |
Где возникает проблема целостности данных? Можно создать табличку ответов, где для каждого вопроса содержится номер ответа. Минус - еще одна табличка, несколько insert-ов в таблицу. Плюс - более простая обработка ответов методами SQL. Оба варианта имеют право на жизнь. Главное какова конечная цель обработки ответов и из этого исходить в выборе метода хранения ответов. -------------------- Никогда не говори никогда |
|||
|
||||
| Гость_Mixer |
|
|||
|
Unregistered |
Проблема возникает в том, что на каждый вопрос может быть несколько вариантов ответов.
И начинает пугать та путаница которая может получиться при большом количестве вопросов и анкет. Вот и хотелось узнать, может быть есть какой нить способ организовать это все изящно... |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Целостности не будет, потому что это хранимое число будет отличатся от тех что храняся в таблицах ответов. Пример: 1 (001) - вариант 1 2 (010) - вариант 2 4 (100) - вариант 3 число хранимое в таблице ответов: 3 (011) - вариант 1 и вариант 2 |
|||
|
||||
| Zaman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 28.6.2004 Репутация: нет Всего: 2 |
Работа с битами поддерживается в SQL2.
используй множество - я так бы и сделал |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Уважаемый Zaman, расскажите пожайлуста механизмы работы с множествами (в конеретном случае используется MSSQL 2000) или каким образом поддреживается работа с битами в SQL2. Может быть Вам известны источники информации, которые могли бы послужить мне лучем света в этих вопросах. Искрене признателен... |
|||
|
||||
| Zaman |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 28.6.2004 Репутация: нет Всего: 2 |
Вот книга которой я иногда пользуюсь, попробуй может и тебе пригодиться: Дж.Гроф, П. Вайнберг "Энциклопедия SQL".
Тип множество поддержиается в MySQL, а есть ли он SQLServer2000 мне сложно сказать, т.к. я с ним не работал. |
||||
|
|||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
Или я чего то не понял...
Есть таблица с вопросами, таблица с ответами, ответы связанны с вопросами по ID вопроса. Запрос: для каждого из вопросов выбрать из ответов где ответы.ID_вопроса=вопрос.ID Если есть несколько ворпосов с одинаковыми ответами, то можно просто их продублировать или создать третью таблицу связей вопрос->ответ. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: нет Всего: 57 |
Mixer, если тебя интересует именно логика хранения данных для анкетирования, то я могу намылить тебе аналог в Excel, который я сделал для аналогичных целей. Можешь просто адаптировать это под БД.
|
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |