projekt/baza.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;