DROP TABLE IF EXISTS Report;
DROP TABLE IF EXISTS quizResult;
DROP TABLE IF EXISTS Module_Quiz;
DROP TABLE IF EXISTS Module;
DROP TABLE IF EXISTS Course;
DROP TABLE IF EXISTS Answer;
DROP TABLE IF EXISTS Option;
DROP TABLE IF EXISTS Question;
DROP TABLE IF EXISTS QuizAssignment;
DROP TABLE IF EXISTS Quiz;
DROP TABLE IF EXISTS quizCategory;
DROP TABLE IF EXISTS User;
DROP TABLE IF EXISTS Role;

CREATE TABLE Role (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE User (
    id INT PRIMARY KEY,
    email VARCHAR(255) NOT NULL UNIQUE,
    last_name VARCHAR(100),
    first_name VARCHAR(100),
    role_id INT,
    FOREIGN KEY (role_id) REFERENCES Role(id)
);

CREATE TABLE quizCategory (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE Quiz (
    id INT PRIMARY KEY,
    title VARCHAR(255),
    description TEXT,
    start_date DATE,
    end_date DATE,
    status VARCHAR(50),
    category_id INT,
    FOREIGN KEY (category_id) REFERENCES quizCategory(id)
);

CREATE TABLE QuizAssignment (
    id INT PRIMARY KEY,
    user_id INT,
    quiz_id INT,
    FOREIGN KEY (user_id) REFERENCES User(id),
    FOREIGN KEY (quiz_id) REFERENCES Quiz(id)
);

CREATE TABLE Question (
    id INT PRIMARY KEY,
    quiz_id INT,
    text TEXT,
    question_type VARCHAR(50),
    FOREIGN KEY (quiz_id) REFERENCES Quiz(id)
);

CREATE TABLE Option (
    id INT PRIMARY KEY,
    question_id INT,
    text TEXT,
    FOREIGN KEY (question_id) REFERENCES Question(id)
);

CREATE TABLE Answer (
    id INT PRIMARY KEY,
    user_id INT,
    quiz_id INT,
    question_id INT,
    option_id INT,
    text_answer TEXT,
    FOREIGN KEY (user_id) REFERENCES User(id),
    FOREIGN KEY (quiz_id) REFERENCES Quiz(id),
    FOREIGN KEY (question_id) REFERENCES Question(id),
    FOREIGN KEY (option_id) REFERENCES Option(id)
);

CREATE TABLE Course (
    id INT PRIMARY KEY,
    title VARCHAR(255),
    description TEXT,
    duration_weeks INT
);

CREATE TABLE Module (
    id INT PRIMARY KEY,
    course_id INT,
    title VARCHAR(255),
    content TEXT,
    FOREIGN KEY (course_id) REFERENCES Course(id)
);

CREATE TABLE Module_Quiz (
    module_id INT,
    quiz_id INT,
    PRIMARY KEY (module_id, quiz_id),
    FOREIGN KEY (module_id) REFERENCES Module(id),
    FOREIGN KEY (quiz_id) REFERENCES Quiz(id)
);

CREATE TABLE quizResult (
    id INT PRIMARY KEY,
    quiz_id INT,
    respondent_count INT,
    FOREIGN KEY (quiz_id) REFERENCES Quiz(id)
);

CREATE TABLE Report (
    id INT PRIMARY KEY,
    quiz_result_id INT,
    user_id INT,
    format VARCHAR(50),
    content TEXT,
    created_at DATE,
    FOREIGN KEY (quiz_result_id) REFERENCES quizResult(id),
    FOREIGN KEY (user_id) REFERENCES User(id)
);

INSERT INTO Role (id, name) VALUES
(1, 'Адміністратор'),
(2, 'Експерт'),
(3, 'Користувач');

INSERT INTO User (id, email, last_name, first_name, role_id) VALUES
(1, 'admin@osvita.ua', 'Шевченко', 'Тарас', 1),
(2, 'expert@med.ua', 'Ковальчук', 'Олена', 2),
(3, 'student@edu.ua', 'Мельник', 'Андрій', 3);

INSERT INTO quizCategory (id, name) VALUES
(1, 'Освіта'),
(2, 'Охорона здоров’я'),
(3, 'Технології');

INSERT INTO Course (id, title, description, duration_weeks) VALUES
(1, 'Основи Python', 'Базовий курс з програмування мовою Python.', 6),
(2, 'Цифрова грамотність', 'Курс для підвищення цифрової компетентності.', 4);

INSERT INTO Module (id, course_id, title, content) VALUES
(1, 1, 'Змінні та типи даних', 'Теоретичні матеріали щодо типів змінних у Python.'),
(2, 1, 'Умовні оператори', 'Оператори if, elif, else.'),
(3, 2, 'Інтернет-безпека', 'Основи захисту персональних даних.'),
(4, 2, 'Електронні сервіси', 'Як користуватись державними онлайн-сервісами.');

INSERT INTO Quiz (id, title, description, start_date, end_date, status, category_id) VALUES
(1, 'Перевірка знань з Python', 'Опитування для перевірки базових знань з Python.', '2025-06-01', '2025-06-15', 'Заплановано', 3),
(2, 'Онлайн-безпека громадян', 'Оцінка обізнаності користувачів у сфері кібербезпеки.', '2025-06-10', '2025-06-20', 'Чернетка', 2);

INSERT INTO Module_Quiz (module_id, quiz_id) VALUES
(1, 1),
(3, 2);

INSERT INTO QuizAssignment (id, user_id, quiz_id) VALUES
(1, 2, 1),  -- Експерт
(2, 3, 2);  -- Користувач

INSERT INTO Question (id, quiz_id, text, question_type) VALUES
(1, 1, 'Що таке змінна у Python?', 'single_choice'),
(2, 1, 'Оберіть правильні типи даних у Python:', 'multiple_choice'),
(3, 2, 'Як захистити свій пароль онлайн?', 'text');

INSERT INTO Option (id, question_id, text) VALUES
(1, 1, 'Комірка для зберігання даних'),
(2, 1, 'Назва функції'),
(3, 2, 'int'),
(4, 2, 'str'),
(5, 2, 'html');

INSERT INTO Answer (id, user_id, quiz_id, question_id, option_id, text_answer) VALUES
(1, 2, 1, 1, 1, NULL),
(2, 2, 1, 2, 3, NULL),
(3, 2, 1, 2, 4, NULL),
(4, 3, 2, 3, NULL, 'Використовувати складні паролі та двофакторну автентифікацію');

INSERT INTO quizResult (id, quiz_id, respondent_count) VALUES
(1, 1, 1),
(2, 2, 1);

INSERT INTO Report (id, quiz_result_id, user_id, format, content, created_at) VALUES
(1, 1, 1, 'PDF', 'Звіт про проходження опитування з Python.', '2025-06-16'),
(2, 2, 1, 'DOCX', 'Звіт з опитування щодо безпеки в інтернеті.', '2025-06-21');

Останнє оновлення: 5/26/2025, 8:23:28 PM