Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Введение дополнительного дублирующего поля. Покритикуйте плиз / 10 сообщений из 10, страница 1 из 1
25.03.2008, 16:55
    #35212790
Максссс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
Всем привет.
Покритикуйте плиз решение. Возникла ннебольшая дискуссия, и хотелось бя понять какой путь правильный.
Предметная область - опрос или анкетирование.
Человек может дать ответ из представленного диапазана ответов. Например да/нет/незнаю или никогда/часто/всегда. И так далее
Диапазон ответов настраиваемый. Тоесть для этого была создана таблица. Две таблицы.
Скажем там. Answers и SelAnswers. SelAnswers это диапазон возможных ответов. Причём в какждый ответ имеет своё значение. Значение просто инт. SelAnswers связанна с SelAnswers.
Опросы лежат в таблице Survey. И в этой таблице есть форейнкей на Answers. Тоесть мы знаем на какие ответы может отвечать респондент для конкретного сюрвея.
Дальше есть таблица Response, это ответы. Здесь есть значие ответа. Есть поле value в которое ложиться значение для ответа из SelAnswers.
Вот... Так было. Потом возникли новые требования.
И так, основное. Появляется новый тип ответа. Процент. Тоесть респондент может дать ответ в виде процента.
Что делаем? В таблицу Answers добавляем тип ответа. Мол это процент или не процент. Если не процент, то дальше берём диапазон из SelAnswers. Если пользователь отвечает процент. то значение просто ложиться в имеющуюся таблицу ответов в поле value. То как интерпретировать эти ответы мы можем посмотреть в Answers. Так как там есть тип. процент или "не процент".
Дальше появилась необходимость добавить во все ответы какие-то захардкоженные ответы. например "я не знаю" и так далее. Тоесть эти варианты ответов должны присутствовать во всех диапазонах ответов.
В итоге сделано следующее.
Всё осталось как есть. Но в таблицу ответов добавленно поле тип. Это поле будет говорить нам о том как интерпретировать этот ответ. Это может быть валуе из таблицы SelAnswers или процент или захардкоженный ответ.
Вот....
Я надеюсь пояснил быстро и главное понятно.
Вопрос в чём. Я вляеться ли большим злом наличие поля для типа в таблице ответов? Тоесть нарушение этой самой нормолизации. да? Когда неключевое поле зависит от другого неключевого поля.
...
Рейтинг: 0 / 0
25.03.2008, 18:47
    #35213249
уж0с
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
а нельзя сделать для процентов варианты типа
0%
1..5%
6..10%
...
100%
?
или там все будут выводить свои процентики с точностью до десятого знака?
...
Рейтинг: 0 / 0
25.03.2008, 19:24
    #35213332
Максссс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
уж0сили там все будут выводить свои процентики с точностью до десятого знака?
Предлагал, но к сожалению этот вариант оказался для заказчика неприемлем.
...
Рейтинг: 0 / 0
25.03.2008, 20:09
    #35213384
shelsoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
А для кого введен ответ типа "процент" и как поставлен вопрос ?
В смысле для какой категории пользователей ?
Сравните два запроса
1) Как вы оцениваете качество сервиса (введите в процентах)
2) Как вы оцениваете качество сервиса
хорошо (default = 100%)
нормально (default = 50%)
плохо (default = 0%)

МакссссТоесть нарушение этой самой нормолизации. да?

Прежде всего Егнорирование психологии опрашиваемых.


______________________________________________________
Задолбали вихри яростных атак ...
...
Рейтинг: 0 / 0
26.03.2008, 01:32
    #35213638
Максссс
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
Э. ну. тут такое дело. кастомер сказал хочу диапазон от нуля до ста. Что ж тут делать.
Я бы даже свой вопрос перефразировал, дело не в канонах проектирования.
Самый главный вопрос. Насколько схема будет легко поддерживаемой?
При условии что в таблице ответов присутстсвует поле которое говорит о том как интерпретировать ответ. Будут ли проблемы с поддержкой? Моё мнение что нет. Но я услышал противоположное мнение. Хочу проникнуться им, но не могу.
...
Рейтинг: 0 / 0
26.03.2008, 03:28
    #35213662
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
Тут наверное вопрос не нормализации, а описания правил целостности, чтобы ответ не выглядел как: ("часто", 50%).
В принципе анкета может содержать вопросы подразумевающие один или несколько предлагаемых вариантов ответа, число или строку. Т.е. ответ на вопрос в данном случае может быть одним из четырёх типов, а раз так, в БД должны быть предусмотрены четыре регистра для записи ответа (или некий неструктурированный регистр, который просто хранит сырые двоичные данные, но это отдельная тема). Вообще говоря, без явного дискриминатора (попросту поля "ТИП") можно обойтись, но будет сложнее разрулить ситуацию, когда по какой то причине ненулевые значения храняться более чем в одном регистре (т.е. ответ оказался сразу нескольких типов), кроме того дискриминатор позволяет сразу понять в каком регистре искать значение, а не перебирать все регистры. В случае разночтений, дискриминатор может иметь приоритетное значение тем самым разрешая всякие сомнения.
...
Рейтинг: 0 / 0
26.03.2008, 10:37
    #35214032
shelsoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
Решение 1. Самописное. Я бы ввел
1) описание типа ответа, например
а) Перечисление
б) Логика
в) Дата
г) Число
...
2) единицу измерения ответа

Соответственно при использовал эти данные для формирования (конструирования) вопросов в анкете

Решение 2. Использовал для анкетирования один из Forms-серверов (MS Form Server, Adobe Forms Server & etc). Соответствующие дизайнеры форм поддерживают любой тип из описания выше.


ИХМО поддержка решения будет прощк








______________________________________________________
Задолбали вихри яростных атак ...
...
Рейтинг: 0 / 0
28.03.2008, 16:55
    #35221529
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
МакссссВсё осталось как есть. Но в таблицу ответов добавленно поле тип. Это поле будет говорить нам о том как интерпретировать этот ответ. Это может быть валуе из таблицы SelAnswers или процент или захардкоженный ответ.А почему вы не сделали хранение процента по принципу "Открытого ответа"?

Т.е.
Почему Вы это купили?
1) Люблю это есть
2) Я - жертва рекламы
3) Бабушка просит второй год
4) Другое _____________

т.е. в Вашем случае это выглядело бы так:
Какова сейчас влажность воздуха?
1) Процент: ____

а вот к варианту ответа на открытый вопрос - уже можно цеплять типы и проверки (на диапазоны, на число/не число, длинну итд.)

Тогда вы сделаете общий случай опросника, а не только вставите процент.
...
Рейтинг: 0 / 0
29.03.2008, 11:19
    #35222290
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
МакссссВопрос в чём. Я вляеться ли большим злом наличие поля для типа в таблице ответов? Тоесть нарушение этой самой нормолизации. да?
может "нормолизацию" это и нарушает, но злом никаким не является, абсолютно.
...
Рейтинг: 0 / 0
30.03.2008, 10:18
    #35222859
drev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Введение дополнительного дублирующего поля. Покритикуйте плиз
ИМХО, Вы проектировали базу слегка не так..

Я бы исходил из возможных типов вариантов ответа.

Наиболее стандартные:

-однозначный выбор
-множественный выбор
-свободный текст (с возмохным шаблоном)
-дата
-диапазон

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


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