Newbie question: database for a language school
This is a very broad question - you're essentially asking us to comment on an entire system design. Speaking from experience, that's virtually impossible to do on a first pass - you have some tables and you're going to put data in them. Great.   

Whether it will "hang together" as a coherent system once you start working with and querying it is another kettle of fish altogether! 

In order to help you, I Googled "open source language school software" and the first non-advertisement was this which might either serve as a basis for your own system or you might decide to abandon the dev route and just use it. There are a shedload of other interesting links there. You could also visit this page and search for the word "school" - there's goodies there also!

As I said above, you're asking for a comment on an entire system before it's even been written - this is more of a "I'm developing a system, I have these tables with structures x, y and z and I'm having a problem with doing a, b or c" kind of site. 

Your question requires more of a position paper than a simple answer. I know myself from having developed systems that it's above all else an iterative process and that you'll go down many roads which will turn into dead ends for your particular requirements (and that's fine!), but to ask anybody to just cast an eye over a series of table definitions and even be able to comment on how well they'll work is basically impossible!

I suggest you look at the software from the Google and then move from there - if you can find programmes that meet (or come close to meeting) your requirements from the already existing F/LOSS (Free/Libre and Open Source) world, then great! The other great thing about F/LOSS is that you can adopt and adapt. HTH, and welcome to the forum! :-)