20.07.2009, 23:27
общий
это ответ
Здравствуйте, Сердюков Павел.
1. Прежде всего необходимо отметить, что сам вопрос несколько поспешен,
нужно детальное описание бизнес-процесса, в том числе используемых объектов.
Количество таблиц - следствие общей стратегии.
2. Ответ на Ваш вопрос в общем виде я бы сформулировал так:
а) таблиц должно быть не меньше, чем описываемых классов объектов. Больше - наверняка.
К примеру, Вам захочется знать, кто, когда и каким образом редактировал вопросы.
Кто и как отвечал на них. Если это обучающая система, вопросы должны быть как-то связаны.
Все это привносит дополнительные таблицы.
б) должен быть использован принцип разумной достаточности.
При очень сильной нормализации теряется скорость при запросах
к связанным таблицам,при недостаточной - дублирование и проблемы
целостности.
Рассмотрим нашу модель тестов. В любом случае у Вас есть классы и,
соответственно, таблицы:
Предмет (id, Название);
Вопрос(id, Текст, idПредмета,..., idТипаВопроса)
Допустим, есть вопросы, содержащие картинки (тип 1).
Есть вопросы, где нужно сделать выбор из нескольких ответов. (тип 2).
Есть вопросы, где нужно по формуле записать ответ (тип 3).
Эти типы (классы) являются наследниками от класса "Вопрос".
Появляется таблица "Типы вопросов" (id, Название, Описание)
Например, для вопросов с картинками можно указать имя файла картинки.
Появляется таблица "ВопросыСКартинкой" (id, idВопроса, ИмяФайла)
..
Каждый вопрос может относиться к некоему предмету или, точнее, предметной области.
Каждый вопрос может относиться к некоторому уровню, как, например, в RFPRO.RU
3. Бизнес-логика, как правило, описывается в триггерах и хранимых процедурах.
одними таблицами не обойдешься.
4. Для квалифицированной работы с базами данных необходимо изучать специальную
литературу, и первой книгой я посоветовал бы Мартина Грубера "Понимание SQL"
В любом случае, чтобы более компетентно ответить на Ваш вопрос, необходимо более пространное объяснение, того что будет представлять собой Ваша тест-система.