користувачі;
рейтинг;
запитання;
відповіді;
рівні придатності;
авторизація.
Друга нормальна форма передбачає, що відношення знаходяться у першій нормальній формі і кожний рядок відношення однозначно визначається первинним ключем.
При приведені до другої нормальної форми було додано ключі до таблиць. До таблиці “Користувачі” будо додано ключове поле – код
користувача. До таблиці “Рейтинг” будо додано ключове поле – код запису. До таблиці “Запитання” будо додано ключове поле – код запитання. До таблиці “Відповіді” будо додано ключове поле – код відповіді. До таблиці “Рівні придатності” будо додано ключове поле – код рівня, а до таблиці “Авторизація” будо додано ключове поле – код запису.
Третя нормальна форма передбачає, що відношення знаходяться у першій та другій нормальній формі, а також щоб значення будь-якого поля, що не входить до первинного ключа не залежало від інших полів, тобто не повинно бути транзитивної залежності.
Відношення були приведені до третьої нормальної форми.
Далі виявимо зв’язки інформаційно-логічної моделі.
Модель “сутність-зв’язок” має кілька базових понять, що утворюють вихідні цеглинки, із яких будуються більш складні об’єкти за заздалегідь визначеними правилами.
Зв’язки поділяються на три типи за множинністю: “один-до-одного” (1:1), “один-до-багатьох” (1:Б), “багато-до-багатьох” (Б:Б). Зв’язок “один-до-одного” (1:1) означає, що екземпляр однієї сутності зв’язаний тільки з одним екземпляром іншої сутності. Зв’язок 1:Б означає, що один екземпляр сутності, розташований ліворуч по зв’язку, може бути зв’язаний з декількома екземплярами сутності, розташованими праворуч по зв’язку. А зв’язок Б:Б означає, що один екземпляр першої сутності може бути зв’язаний з декількома екземплярами другої сутності, і навпаки, один екземпляр другої сутності може бути зв’язаний з декількома екземплярами першої сутності.
Для встановлення відношень між інформаційними об’єктами задамо запити до цих об’єктів:
до якого запитання належать відповіді?
які результати тестування в користувача?
Зв’язок №1
Кожне запитання має певний список відповідей, тому організовуємо зв’язок “один-до-багатьох” (рисунок 2.3).
Рисунок 2.3 – Зв’язок “Запитання – Відповіді”
Зв’язок №2
Кожен користувач може пройти тест на професійну придатність безліч разів. На основі цього складається рейтинг учасників, тому організовуємо зв’язок “один-до-багатьох” (рисунок 2.4).
Рисунок 2.4 – Зв’язок “Користувачі – Рейтинг”
На основі структурних зв’язків будуємо інфологічну модель, яка наведена на рисунку 2.5.
Рисунок 2.5 – Інфологічна модель
Тепер опишемо властивості кожної таблиці.
Властивості таблиці “Користувачі” наведені в таблиці 2.1.
Таблиця 2.1 – Властивості таблиці “Користувачі”
Назва реквізиту | Ідентифікатор | Тип | Маска / Довжина | Ключове поле |
Код користувача | adept_id | Цілі значення | 11 | Primary |
Прізвище | adept_surname | Строкова величина | 100 | |
Ім’я | adept_name | Строкова величина | 100 | |
adept_mail | Строкова величина | 50 | ||
Пароль | adept_password | Строкова величина |
Властивості таблиці “Запитання” наведені в таблиці 2.2.
Таблиця 2.2 – Властивості таблиці “Запитання”
Назва реквізиту | Ідентифікатор | Тип | Маска / Довжина | Ключове поле |
Код запитання | quest_id | Цілі значення | 11 | Primary |
Текст запитання | quest_question | Строкова величина | ||
Картинка | quest_image | Строкова величина | 100 |
Властивості таблиці “Відповіді” наведені в таблиці 2.3.
Таблиця 2.3 – Властивості таблиці “Відповіді”
Назва реквізиту | Ідентифікатор | Тип | Маска / Довжина | Ключове поле |
Код відповіді | ans_id | Цілі значення | 11 | Primary |
Варіант відповіді | ans_answer | Строкова величина | 255 | |
Вага відповіді | ans_point | Цілі значення | 11 | |
Код запитання | ans_question_id | Цілі значення | 11 | Secondary |
Властивості таблиці “Рейтинг” наведені в таблиці 2.4.
Таблиця 2.4 – Властивості таблиці “Рейтинг”
Назва реквізиту | Ідентифікатор | Тип | Маска / Довжина | Ключове поле |
Код запису | rat_id | Цілі значення | 11 | Primary |
Бал | rat_mark | Цілі значення | 11 | |
Дата тестування | rat_date | Цілі значення | 12 | |
Час проходження тесту | rat_time | Цілі значення | 12 | |
Код користувача | rat_adept_id | Цілі значення | 11 | Secondary |
Для авторизації та управління адміністраторами створена таблиця “Авторизація”, її властивості наведені в таблиці 2.5.
Таблиця 2.5 – Властивості таблиці “Авторизація”
Назва реквізиту | Ідентифікатор | Тип | Маска / Довжина | Ключове поле |
Код запису | user_id | Цілі значення | 11 | Primary |
Ім’я | user_name | Строкова величина | 100 | |
Логін | user_login | Строкова величина | 60 | |
Пароль | user_password | Строкова величина | 50 | |
Ip адреса | user_ip | Строкова величина | 25 | |
Дата входу | user_denter | Цілі значення | 12 | |
Права | user_rule | Цілі значення | 3 |
Властивості таблиці “Рівні придатності” наведені в таблиці 2.6.
Таблиця 2.6 – Властивості таблиці “ Рівні придатності”
Назва реквізиту | Ідентифікатор | Тип | Маска / Довжина | Ключове поле |
Код рівня | level_id | Цілі значення | 11 | Primary |
Рівень | level_name | Строкова величина | 100 | |
Мінімальний бал рівня | level_min | Цілі значення | 3 | |
Максимальний бал рівня | level_max | Цілі значення | 3 |
Схема даталогічної моделі наведена на рисунку 2.6.
Рисунок 2.6 – Даталогічна модель
2.2 Розробка структури інформаційної системи
Розроблюваний програмний продукт призначений для тестування та визначення професійної придатності програмістів. За допомогою програмного продукту ведеться облік учасників, які проходять тест; додаються/видаляються питання та відповіді. В такому процесі проводиться постійний обмін даними між модулями. На рисунку 2.7 представлена схема інформаційних потоків між клієнтською частиною (веб-браузером), веб-сервером та сервером бази даних.
Рисунок 2.7 – Схема інформаційних потоків
Клієнтська частина (браузер) відправляє заповнену форму з даними на веб-сервер. На веб-сервері дані обробляються за допомогою php-скриптів. PHP-скрипти на основі отриманих даних формують SQL-запити і відправляють їх до сервера бази даних. Сервер бази даних отримує текст SQL-запитів, обробляє їх, а результат виконання цих запитів відправляє назад до веб-серверу. На основі отриманого результату веб-сервер формує HTML-сторінку, яку надсилає користувачу у веб-браузер.
За допомогою такої взаємодії клієнт не бачить код php-скриптів, а тільки результат, який вони повертають. На відміну від php-скриптів, javascript виконується на стороні клієнта, а не сервера. Тому клієнт має можливість бачити код цих скриптів.
За допомогою PHP-скриптів відбувається підключення до бази даних MySQL. Всі функції, що забезпечують взаємодію між PHP й MySQL, винесені в окрему бібліотеку.
Послідовність кроків для підключення до бази даних і керування табличними даними, наступна:
встановлення зв'язку з БД;
формування запиту;
надсилання запиту до БД;
обробка результату, отриманого від БД.
Для підключення до бази даних потрібні наступні параметри:
тип бази даних;
ім'я хост-вузла;
ім'я користувача;
пароль користувача;
назва бази даних.
Отримавши необхідну інформацію від бази даних завершується з’єднання з MySQL, після цього на основі отриманої інформації формується HTML-документ [3].
HTML документ складається із трьох частин:
декларація типу документа (англ. Document type declaration, Doctype), на самому початку документа, в якій визначається тип документа (DTD), наприклад, HTML 4.01 Strict;
шапка HTML документа (HEAD), в якій записано загальні технічні відомості або додаткова інформація про документ, яка не відображається безпосередньо в браузері;
тіло HTML документа (BODY), в якому міститься основна інформація документа [4].
Далі опишемо структуру програмного продукту.
Структура розроблюваного програмного продукту спроектована таким чином, що всі модулі будуть динамічно підключаються до головної сторінки програми.
Тестова система буде мати наступні модулі:
модуль для керування адміністраторами;
модуль для керування зареєстрованими користувачами;
модуль для роботи з тестом;
модуль відправки повідомлень.
Модуль для керування адміністраторами буде потрібен для додавання/видалення/редагування адміністраторів веб-додатку.
В модулі для керування зареєстрованими користувачами буде відображатись інформація про користувачів, які проходили тестування, їх результат, також буде можливість керувати цими користувачами: редагувати/видаляти їх дані.
Модуль для роботи з тестом – це головний модуль програми. В цьому модулі адміністратор зможе додавати/видаляти/редагувати запитання і відповіді до них, налаштовувати тест.