БД для тестирования
Добрый день. Есть БД с таблицами:
- Вопросы (ID, Vopros, IdDisciplini)
- Дисциплины (ID, Disciplina)
- ВариантыОтветов (ID, IdVoprosa, Variant, IsTrue)
- Категории (ID, NazvaneEkzamena, Year)
- Список вопросов (ID, IdVoprosa, IdKategorii) // В таком-то году, на таком экзамене, будет такой-то вопрос, по дисциплине такой-то
- Успеваемость (IdStudenta, IdSpiskaVoprosa, IdVarianta) // Вариант, который выбрал пользователь к данному вопросу
Т.к. вопрос может повторяться, скажем, в году 2013 и 2014, я бы хотел оставить один вопрос, а не несколько (чтобы в дальнейшем подвязать комментарии конкретного вопроса и не плодить одинаковых в бд).
Но! Поле "вопрос" (таблица вопросы) может быть одинаковое в нескольких вопросах, но зато должны быть разные поля "Вариант" у этих вопросов в таблице ВариантыОтветов. (Ну, например, вопросов "Выберите правильный ответ" может быть много, но ответы должны отличаться в разных вопросах).
И самое основное: например, есть вопрос "Сколько будет 2+2?" (Табл Вопросы Id=1). Этому Id соответствуют варианты в таблице Вариантов:
id=333,variant='1',istrue=false;
id=336,variant='2',istrue=false;
id=338,variant='4',istrue=true;
Вроде как бы тут всё понятно. А как сделать проверку в таблице Успеваемость (IdStudenta, IdSpiskaVoprosa, IdVarianta), где если через join смотрим IdSpiskaVoprosa->IdVoprosa->VariantOtveta->Id? В общем, чтобы конкретно для данного вопроса (id=1) в таблице Успеваемость можно было бы поставить только IdVarianta = 333,336,338?
Может, не очень хорошо сформулировал мысль. Или подскажите, как, может, по-другому базу сформировать. Может, это слишком корявый вариант? Спасибо.