Первоначальная реализация

This commit is contained in:
2025-10-19 19:59:28 +03:00
parent a493750341
commit 48911d7f62
15 changed files with 1479 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
-- Инициализационный скрипт для PostgreSQL для учебных упражнений
-- Создание таблицы студентов
CREATE TABLE IF NOT EXISTS students (
student_id SERIAL PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100),
enrollment_date DATE,
grade INTEGER
);
-- Создание таблицы курсов
CREATE TABLE IF NOT EXISTS courses (
course_id SERIAL PRIMARY KEY,
course_name VARCHAR(100),
instructor VARCHAR(100),
credits INTEGER
);
-- Создание таблицы зачислений
CREATE TABLE IF NOT EXISTS enrollments (
enrollment_id SERIAL PRIMARY KEY,
student_id INTEGER REFERENCES students(student_id),
course_id INTEGER REFERENCES courses(course_id),
enrollment_date DATE,
grade CHAR(1)
);
-- Вставка тестовых данных
INSERT INTO students (first_name, last_name, email, enrollment_date, grade) VALUES
('Alice', 'Johnson', 'alice@example.com', '2023-09-01', 85),
('Bob', 'Smith', 'bob@example.com', '2023-09-01', 92),
('Charlie', 'Brown', 'charlie@example.com', '2023-09-01', 78),
('Diana', 'Prince', 'diana@example.com', '2023-09-01', 96),
('Eve', 'Wilson', 'eve@example.com', '2023-09-01', 8)
ON CONFLICT DO NOTHING;
INSERT INTO courses (course_name, instructor, credits) VALUES
('Introduction to Data Science', 'Dr. Smith', 3),
('Python Programming', 'Dr. Johnson', 4),
('Database Systems', 'Dr. Williams', 3),
('Machine Learning', 'Dr. Brown', 4)
ON CONFLICT DO NOTHING;
INSERT INTO enrollments (student_id, course_id, enrollment_date, grade) VALUES
(1, 1, '2023-09-01', 'A'),
(1, 2, '2023-09-01', 'B'),
(2, 1, '2023-09-01', 'A'),
(2, 3, '2023-09-01', 'A'),
(3, 2, '2023-09-01', 'B'),
(4, 4, '2023-09-01', 'A'),
(5, 1, '2023-09-01', 'A')
ON CONFLICT DO NOTHING;
-- Создание индексов для улучшения производительности
CREATE INDEX IF NOT EXISTS idx_students_email ON students(email);
CREATE INDEX IF NOT EXISTS idx_enrollments_student ON enrollments(student_id);
CREATE INDEX IF NOT EXISTS idx_enrollments_course ON enrollments(course_id);