105 lines
2.7 KiB
SQL
105 lines
2.7 KiB
SQL
CREATE DATABASE IF NOT EXISTS szkola;
|
|
USE szkola;
|
|
|
|
CREATE TABLE IF NOT EXISTS classes (
|
|
id INT PRIMARY KEY,
|
|
class_name VARCHAR(50) NOT NULL,
|
|
file_path VARCHAR(255) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS students (
|
|
id INT PRIMARY KEY,
|
|
first_name VARCHAR(50) NOT NULL,
|
|
last_name VARCHAR(50) NOT NULL,
|
|
class_id INT NOT NULL,
|
|
FOREIGN KEY (class_id) REFERENCES classes(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS roles (
|
|
id INT PRIMARY KEY,
|
|
role_name VARCHAR(50) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS categories (
|
|
id INT PRIMARY KEY,
|
|
name VARCHAR(50) NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS criteria (
|
|
id INT PRIMARY KEY,
|
|
category_id INT NOT NULL,
|
|
name VARCHAR(100) NOT NULL,
|
|
FOREIGN KEY (category_id) REFERENCES categories(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS role_criteria (
|
|
role_id INT NOT NULL,
|
|
criteria_id INT NOT NULL,
|
|
PRIMARY KEY (role_id, criteria_id),
|
|
FOREIGN KEY (role_id) REFERENCES roles(id),
|
|
FOREIGN KEY (criteria_id) REFERENCES criteria(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS behavior_records (
|
|
id INT PRIMARY KEY,
|
|
student_id INT NOT NULL,
|
|
criteria_id INT NOT NULL,
|
|
behavior_date DATE NOT NULL,
|
|
is_checked BOOLEAN NOT NULL DEFAULT FALSE,
|
|
FOREIGN KEY (student_id) REFERENCES students(id),
|
|
FOREIGN KEY (criteria_id) REFERENCES criteria(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS points (
|
|
criteria_id INT NOT NULL,
|
|
points_value INT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (criteria_id),
|
|
FOREIGN KEY (criteria_id) REFERENCES criteria(id)
|
|
);
|
|
|
|
INSERT INTO classes (id, class_name, file_path) VALUES
|
|
(1, 'Class 1A', 'class_1a.json'),
|
|
(2, 'Class 2B', 'class_2b.json');
|
|
|
|
INSERT INTO students (id, first_name, last_name, class_id) VALUES
|
|
(1, 'Jan', 'Kowalski', 1),
|
|
(2, 'Anna', 'Nowak', 1),
|
|
(3, 'Piotr', 'Wiśniewski', 2),
|
|
(4, 'Maria', 'Kowalczyk', 2);
|
|
|
|
INSERT INTO roles (id, role_name) VALUES
|
|
(1, 'teacher'),
|
|
(2, 'student');
|
|
|
|
INSERT INTO categories (id, name) VALUES
|
|
(1, 'Attendance'),
|
|
(2, 'Behavior');
|
|
|
|
INSERT INTO criteria (id, category_id, name) VALUES
|
|
(1, 1, 'Presence'),
|
|
(2, 2, 'Good Behavior'),
|
|
(3, 2, 'Punctuality');
|
|
|
|
INSERT INTO role_criteria (role_id, criteria_id) VALUES
|
|
(1, 1),
|
|
(1, 2),
|
|
(2, 2),
|
|
(2, 3);
|
|
|
|
INSERT INTO behavior_records (id, student_id, criteria_id, behavior_date, is_checked) VALUES
|
|
(1, 1, 1, '2024-10-21', TRUE),
|
|
(2, 2, 2, '2024-10-21', FALSE),
|
|
(3, 3, 1, '2024-10-21', TRUE),
|
|
(4, 4, 3, '2024-10-21', TRUE);
|
|
|
|
INSERT INTO points (criteria_id, points_value) VALUES
|
|
(1, 10),
|
|
(2, 5),
|
|
(3, 3);
|
|
|
|
SELECT s.first_name, s.last_name, c.class_name, br.behavior_date, cr.name AS criteria_name, br.is_checked
|
|
FROM students s
|
|
JOIN classes c ON s.class_id = c.id
|
|
JOIN behavior_records br ON s.id = br.student_id
|
|
JOIN criteria cr ON br.criteria_id = cr.id;
|