Added optimization fields, cleaned up some things

The major functional difference is that I added identity key words to a bunch of primary keys.
My intention when I created those keys was that they should be surrogate keys. I forgot to make them auto-increment.
There are 2 tables where this move is debatable: Student and Professor. It could be that the app creates those keys.