I am currently making a management software for a small artistic school: a small intranet in PHP / MySQL.
I'm trying to draw database architecture before I start coding because I don't want to make bad choices right from the beginning.
My diagram can be found below.
The software requirements are as follows:
- Register a student for a school year and assign them to one or more courses
- Register a student for a unique event (Concert, Masterclass, internship ...)
- Register teachers and assign them to one or more courses
- Manage the student financial side, the number of payments and the total cost of the training
- And later there will be other needs like saving marks, schedules, and maybe other things ...
I tried to transcribe it all on my diagram, but here are some explanations:
- A student (
student
table) is unique and can register for several years. This table contains all the generic information (name, email, phone ...) - A student registration (
enrollment
table) can follow several courses (course
table) and several events (events
table) - A student can pay for their training in one or more installments (
funding
table) - A course is given by a single teacher (
trainer
table) and an event is given by a single speaker (speaker
table)
Is this the best way to keep a student's information over several school years? Should I add some optimizations?