2015-11-10 3 views
0

Мне нужно сохранить масштабный вопрос (значение ставки по шкале ...) данных на SQL Server. Существующая структура базы данных:Реляционная база данных для масштабных вопросов

вопросы

QuestionID

Вопрос

Варианты вопроса

QuestionID

OptionID

OptionDescription

ответы пользователей

USERID

QuestionID

OptionID

Масштабные вопросы имеют диапазон от -100 до 100. Я может генерировать последовательность чисел в диапазоне для обеспечения ссылочной целостности. Это лучший способ сделать это, чтобы обеспечить точность данных? Есть ли лучший способ сделать это?

спасибо.

ответ

0

Другим вариантом является использование перед триггером insert/update для проверки значений. Таким образом, вы не обязательно должны быть связаны с ограничением (другим вопросам может потребоваться другой тип ответа).

Другим решением является запись хранимой процедуры для вставки/обновления. Таким образом, вы можете проверить значения внутри хранимого процесса перед обновлением таблицы. Но я думаю, что это зависит от ваших целей и того, нужно ли нам хранить другие типы ответов.

Другим вариантом было бы получить немного творчески с вами вариант таблицы и включают в себя MIN и значение MAX, а затем сделать CONNECT BY заявление LEVEL, чтобы получить различные значения, что-то вроде этого (Oracle):

WITH RECS AS 
(
    SELECT 'OPTION A' AS ANSWER_OPTION 
    , 1 AS MIN_VALUE 
    , 100 AS MAX_VALUE 
FROM DUAL 
) 
SELECT ANSWER_OPTION 
, ROWNUM AS OPTION_VALUE 
FROM RECS 
CONNECT BY LEVEL BETWEEN MIN_VALUE AND MAX_VALUE 
Смежные вопросы