Курсовая работа: Предметная область "тестирование"
Таблица-Первичный ключ
Участник-Ид участника
Тест-Ид теста
Вопрос-Ид вопроса
Ответ-Ид ответа
Автор-Ид автора
Тема-Ид темы
Уровень-Ид уровня
Предмет-Ид предмета
Выбор этих ключей обеспечивает уникальность записей в каждой из таблиц.
Так же для создания связей N:M были сформированы таблицы Тест-Вопрос и Вопрос-Ответ.
Поля таблиц были выбраны с учётом нормализации отношений, таблицы не содержат избыточных данных и не могут привести к различным аномалиям.
Концептуальная модель данных:
Описание реляционной модели данных
Участник | |||
Поле | Описание | Тип данных | Комментарий |
ID_member | Ид участника | Текстовый | Ид участника |
FIO | ФИО | Текстовый | ФИО |
Passport | Паспорт | Текстовый | Паспортные данные |
School | Школа | Текстовый | номер школы |
Class | Класс | Текстовый | Номер класса |
ID_test | Ид теста | Текстовый | Ид теста |
Тест | |||
Поле | Описание | Тип данных | Комментарий |
ID_test | Ид теста | Текстовый | Ид теста |
Info | Информация | Текстовый | Инф о тесте |
Test_data | Дата проведения | Дата | Дата проведения |
Location | Место проведения | Текстовый | Место тестирования |
Вопрос | |||
Поле | Описание | Тип данных | Комментарий |
ID_question | Ид вопроса | Текстовый | Идентификатор |
ID_theme | Ид темы | Текстовый | Идентификатор |
ID_level | Ид уровня | Текстовый | Идентификатор |
ID_subject | Ид предмета | Текстовый | Идентификатор |
ID_author | Ид автора | Текстовый | Идентификатор |
Q_text | Текст | Текстовый | Сам вопрос(текст) |
Ответ | |||
Поле | Описание | Тип данных | Комментарий |
ID_answer | Ид ответа | Текстовый | Идентификатор |
Grade | Оценка | Текстовый | Оценка за вопрос |
Correct | Правильность | Текстовый | Флаг правильности ответа |
Ответ-Вопрос | ||
Поле | Описание | Тип данных |
ID_question | Ид вопроса | Текстовый |
ID_answer | Ид ответа | Текстовый |
Тест-Вопрос | ||
Поле | Описание | Тип данных |
ID_test | Ид теста | Текстовый |
ID_question | Ид вопроса | Текстовый |
Предмет | ||
Поле | Описание | Тип данных |
ID_subj | Ид предмета | Текстовый |
Info | Данные о предмете | Текстовый |
Автор | ||
Поле | Описание | Тип данных |
ID_author | Ид автора | Текстовый |
Info | Данные об авторе | Текстовый |
FIO | ФИО автора | Текстовый |
book | Данные о книге, из которой был взят вопрос | текстовый |
Уровень | ||
Поле | Описание | Тип данных |
Код | Ид уровня | Текстовый |
L_text | Описание уровня | Текстовый |
Lvl | Номер уровня | числовой |
Тема | ||
Поле | Описание | Тип данных |
Код | Ид темы | Текстовый |
S_text | Описание темы | Текстовый |
Описание способов реализации запросов и отчётов
Подсчет кол-ва тестов за заданный промежуток времени
SELECT COUNT(ID_test) AS [Kol-vo]
FROM Test
WHERE test_date between x AND y;
Вывод фамилии с поиском по ид теста
SELECT FIO
FROM Member
WHERE ID_test=test;
Вывод оценок ответов в данном тесте
SELECT Answer.grade, Test_Question.ID_test, Test_Question.ID_question, Answer.ID_answer
FROM Answer INNER JOIN (Test_Question INNER JOIN Answer_Question ON Test_Question.ID_question = Answer_Question.ID_question) ON Answer.ID_answer = Answer_Question.ID_answer
WHERE (((Test_Question.ID_test)=[x]) AND ((Test_Question.ID_question)=[Answer_Question].[ID_question]) AND ((Answer.ID_answer)=[Answer_Question].[ID_answer]) AND ((Answer.correct)='yes'));
Поиск участников теста по месту проведения теста