Я бы из ResultsTable удалил поле QuestionId. И IsTrue перенес бы в Variants. После этого надо контролировать, чтобы никто не внес в результаты 2 ответа на один вопрос. Это можно сделать, например, триггером:
create trigger result_check on ResultsTable after insert, update as
begin
if exists(
select 0
from inserted i
join ResultsTable r on r.userid=i.userid
join Variants v on v.id = r.variantid
group by i.userid
having count(distinct v.questionid)>1)
begin
RAISERROR ('Ошибка - два ответа на один вопрос', 16, 1)
end
end