This project implements a Student Management System using PostgreSQL as the database backend. The system is designed to manage data related to students, groups, teachers, subjects, and grades. It includes functionality for seeding the database with initial data and querying it to retrieve useful information.
The task involves creating a database schema that includes:
- A table for Students
- A table for Groups
- A table for Teachers
- A table for Subjects (with an indication of the teacher who teaches each subject)
- A table for Grades (where each student has grades for subjects along with the date when the grade was received)
- Implement SQLAlchemy Models: Create models for each of the tables mentioned above.
- Use Alembic: Set up database migrations to apply changes to the database schema.
- Data Seeding: Write a
seed.pyscript to populate the database with random data using Faker, including approximately 30-50 students, 3 groups, 5-8 subjects, 3-5 teachers, and up to 20 grades per student. - Querying Data: Implement a
my_select.pyscript with functions to perform various queries on the database.
- Find the top 5 students with the highest average grades.
- Retrieve the average grade in groups for specific subjects.
- List courses taught by a specific teacher.





