рисунку 3.2 показана структура web-вузла всієї системи. В таблиці 3.2 детально описано призначення кожної із директорій.
Таблиця 3.2 – Призначення директорій
Ім’я директорії | Призначення
<ROOT>/admin | Підсистема адміністрування
<ROOT>/admin/inc | Бібліотеки підсистеми адміністрування
<ROOT>/admin/lang | Пакети локалізації для національних мов
<ROOT>/admin/styles | Бібліотеки CSS і необхідних ресурсів для стилів
<ROOT>/admin/images | Мультимедіа ресурси
<ROOT>/admin/help | Файли довідкової системи
<ROOT>/admin/tpls | Бібліотеки необхідних шаблонів
<ROOT>/inc | Бібліотеки підсистеми тестування
<ROOT>/lang | Пакети локалізації для національних мов
<ROOT>/styles | Бібліотеки CSS і необхідних ресурсів для стилів
<ROOT>/images | Мультимедіа ресурси
<ROOT>/tpls | Бібліотеки необхідних шаблонів
<ROOT> | Ядро підсистеми тестування
3.3 Розробка бази даних системи
Ядром даної системи є база даних, яка визначає спосіб зберігання і представлення інформації в системі. Саме структура бази даних впливає на подальшу організацію алгоритмів роботи системи. Для розробки бази даних необхідно правильно визначитися із метою роботи системи. Як вже зазначалось система повинна забезпечити прозорий інтерфейс проведення тестувань студентів. Для цього необхідно розробити дві інтегровані підсистеми: система адміністрування базою даних, система проходження тестування. Перша з них призначена для викладачів (адміністраторів) системи, друга для студентів. Із вище наведеного можна зробити висновок, що база даних системи повинна бути спроектована так, щоб забезпечити гнучкий механізм адміністрування, а також механізм формування завдань при проходженні тестів. База даних складається із 16 таблиць. Структура бази даних наведена на рисунку 3.3.
Структура, яка наведена на рисунку 3.3 складається із 14 таблиць, дві таблиці, що не показані не мають зв’язків з іншими, у них зберігається службова інформація для відображення структури web-сторінки.
Розглянемо детальніше призначення кожної із таблиць, а також проаналізуємо їх структуру. Таблиці будемо розглядати по групам, критерій групування – інформація що зберігається в таблицях. Наприклад: таблиці groups і users призначенні для зберігання інформації про користувачів і групи до яких вони приписані.
Таблиця 3.3 – Структура таблиці subjects
Назва поля | Тип | Додаткові параметри
subject_name | varchar(100)
subject_id | tinyint(3) unsigned | PK, ai
В таблиці subjects зберігається інформація про предмети. У полі subject_name зберігається назва предмету (наприклад: Теорія автоматичного управління), subject_id – унікальний ідентифікатор предмету в базі даних – ціле число. По даному полю проводиться зв’язок із іншими таблицями, які мають прив’язку до предметів.
Таблиця 3.4 – Структура таблиці tests
Назва поля | Тип | Додаткові параметри
test_name | varchar(100)
test_subject_id | tinyint(3) unsigned | FK
how_tasks | tinyint(3) unsigned
test_time | varchar(8)
enabled | enum('0','1')
chances | tinyint(3) unsigned
test_id | tinyint(3) unsigned | PK, ai
Інформація в таблиці tests зберігається наступним чином: у полі test_name зберігається назва тесту – будь-яка послідовність символів, поле test_subject_id служить для зв’язку із таблицею subjects і, вказує на відношення даного тесту до відповідного предмету. Інформація, що є в даному полі обов’язково береться з поля subjects.subject_id. У полі how_tasks зберігається кількість завдань, що мають бути задані користувачу. Поле test_time призначене для зберігання часу, що відводиться на проходження даного тестового блоку завдань, задається у форматі – ГГ:ХХ:СС. В полі enabled зберігається статус тесту в термінах системи – це можливість відображення тестового блоку у списку тестів підсистеми тестування. Поле chances призначено для зберігання інформації про кількість спроб, що відведені користувачу на проходження тестового контролю. У полі test_id – зберігається унікальний ідентифікатор тесту в системі.
Таблиця 3.5 – Структура таблиці questions
Назва поля | Тип | Додаткові параметри
question_id | int(10) unsigned | PK, ai
q_test _id | tinyint(3) unsigned | FK
q_text | text
q_level | tinyint(3) unsigned
q_media | tinyint(3) unsigned
media_file | varchar(30)
Дана таблиця призначена для зберігання інформації про тестове завдання і, організована наступним чином: поле question_id – унікальний ідентифікатор завдання в базі даних, q_test_id – ідентифікатор тесту, показує приналежність питання до відповідного тесту, інформація в даному полі обов’язково береться з tests.test_id, у полі q_text зберігається текстова частина завдання, поле q_level призначено для зберігання інформації про групу завдання, групування завдань дозволяє формувати тести, які будуть складатися із різного роду завдань, але які мають відношення до однієї і тієї ж дисципліни, поле q_media служить для ідентифікації мультимедіа ресурсу – контейнер в якому може зберігатися додаткова інформація про зміст завдання: зображення (графічний файл), анімація і т. п., по замовчуванню в дане поле записується 0 це означає, що питання складається лише з текстової частини, у полі media_file зберігається ім’я файлу в якому міститься мультимедіа ресурс завдання, дане поле актуальне лише тоді, коли q_media містить відмінний від нуля параметр.
Таблиця 3.6 – Структура таблиці answers
Назва поля | Тип | Додаткові параметри
aq_id | int(10) unsigned | FK
ans_true | enum('1','2')
ans_media | enum('0','1','2','3')
media_file | varchar(30)
ans_text | text
ans_id | bigint(20) unsigned | PK, ai
Таблиця answers призначена для зберігання інформації про варіанти відповідей до відповідного завдання. Структура таблиці в цілому аналогічна структурі таблиці questions, за винятком того, що в даній таблиці присутні два поля: aq_id – ідентифікатор завдання, інформація в даному полі має обов’язково співпадати з одним із значень questions.question_id, поле ans_true призначено для ідентифікації правильного/неправильного варіанту відповіді і, може приймати лише два значення: 1 – неправильний варіант; 2 – правильний варіант;
Таблиця 3.7 – Структура таблиці test_details
Назва поля | Тип | Додаткові параметри
id | smallint(5) unsigned | PK, ai
test_id | tinyint(3) unsigned | FK
level_id | tinyint(3) unsigned
level_tasks | tinyint(3) unsigned
level_rate | tinyint(3) unsigned
В таблиці test_details зберігається інформація щодо структури тестового блоку завдань, згідно поділу на рівні складності завдань.
test_id – ідентифікатор тесту, level_id – ідентифікатор рівня, level_tasks – кількість